Mega Code Archive

 
Categories / Delphi / Forms
 

Getting System Power Information

Title: Getting System Power Information Question: I would like my application to know how long time there is left before the battery is empty on my notebook. Is there an easy way? Answer: Here is an easy way to get the power status for the current computer. This code also works on desktops, but will only return information that the computer is connected to a power source. (AC) All this information is reterived with the Windows API "GetSystemPowerStatus" When running this code on a notebook you will get information such as: - AC Line Status - Battery status (High, Low, Critical, Charging, No battery) - Battery Life in Percent (value between 0-100) - Current time till battery uncharged (time in seconds) - Battery time when fully charged. (time in seconds) Below is the code. Modify Button1Click to your own needs. ---- function GetSystemPowerInfo(var PowerInfo : TSystemPowerStatus) : boolean; begin result := GetSystemPowerStatus(PowerInfo); end; procedure TForm1.Button1Click(Sender: TObject); var PowerInfo : TSystemPowerStatus; begin FillChar(PowerInfo,SizeOf(TSystemPowerStatus),0); if GetSystemPowerInfo(PowerInfo) then begin Case PowerInfo.ACLineStatus of 0: Label1.Caption := 'Offline'; 1: Label1.Caption := 'Online'; else Label1.Caption := 'Unknown status.'; end; Case PowerInfo.BatteryFlag of 1: Label2.Caption := 'High'; 2: Label2.Caption := 'Low'; 4: Label2.Caption := 'Critical'; 8: Label2.Caption := 'Charging'; 128: Label2.Caption := 'No system battery'; else Label2.Caption := 'Unknown status'; end; if PowerInfo.BatteryLifePercent Label3.Caption := inttostr(PowerInfo.BatteryLifePercent )+'%'; end else Label3.Caption := 'No system battery'; if PowerInfo.BatteryLifeTime Label4.Caption := inttostr(PowerInfo.BatteryLifeTime div 60) + ' min'; end else Label4.Caption := 'No system battery'; if PowerInfo.BatteryFullLifeTime Label5.Caption := inttostr(PowerInfo.BatteryFullLifeTime div 60) + ' min'; end else Label5.Caption := 'No system battery'; end else Label1.Caption := 'Failed to get power status'; end; ---