DELPHI获取系统电源状态的信息


本文整理自网络,侵删。

 //声明
GetSystemPowerStatus(
var lpSystemPowerStatus:TSystemPowerStatus {TSystemPowerStatus 结构}
): BOOL;

//TSystemPowerStatus 是 _SYSTEM_POWER_STATUS 结构的重定义:
_SYSTEM_POWER_STATUS = packed record
ACLineStatus : Byte;         {0:电源断电; 1:电源正常; 255:电源状态未知}
BatteryFlag : Byte;          {1:电量充足; 2:电量低; 4:电池基本耗尽;8:充电; 128:没有电池; 255:电池状态未知}
BatteryLifePercent : Byte;   {0..100:所剩电量百分数; 255:未知}
Reserved1 :Byte;            {保留, 须为 0}
BatteryLifeTime : DWORD;     {电池剩余能量; -1 表示未知}
BatteryFullLifeTime : DWORD; {电池总能量; -1 表示未知}
end;

//举例:
procedureTForm1.FormCreate(Sender: TObject);
var
Power: TSystemPowerStatus;
begin
GetSystemPowerStatus(Power);

Memo1.Clear;
with Memo1.Lines do
begin
    Add(Format('电源状态: %d',[Power.ACLineStatus]));
    Add(Format('电池状态: %d',[Power.BatteryFlag]));
    Add(Format('电量百分比: %d',[Power.BatteryLifePercent]));
    Add(Format('剩余能量: %d',[Power.BatteryLifeTime]));
    Add(Format('总能量: %d',[Power.BatteryFullLifeTime]));
end;
end;

引用单元: 
Windows,   ActiveX,   Classes,   ShlObj; 
________________________________________________________ 

function   GetAPMLineStatus:   TAPMLineStatus; 
var 
    SystemPowerstatus:   TSystemPowerStatus; 
begin 
    Result   :=   alsUnknown; 
    if   not   GetSystemPowerStatus(SystemPowerStatus)  then 
        RaiseLastWin32Error 
    else 
    begin 
        case   SystemPowerStatus.ACLineStatus    of 
            0: 
                Result   :=  alsOffline; 
            1: 
                Result   :=  alsOnline; 
            255: 
                Result   :=  alsUnknown; 
        end; 
    end; 
end; 

//------------------------------------------------------------------------------
function   GetAPMBatteryFlag:   TAPMBatteryFlag; 
var 
    SystemPowerstatus:   TSystemPowerStatus; 
begin 
    Result   :=   abfUnknown; 
    if   not   GetSystemPowerStatus(SystemPowerStatus)  then 
        RaiseLastWin32Error 
    else 
    begin 
        case   SystemPowerStatus.BatteryFlag   of
            1: 
              Result   :=  abfHigh; 
            2: 
                Result   :=  abfLow; 
            4: 
                Result   :=  abfCritical; 
            8: 
                Result   :=  abfCharging; 
            128: 
                Result   :=  abfNoBattery; 
            255: 
                Result   :=  abfUnknown; 
        end; 
    end; 
end; 

//------------------------------------------------------------------------------

function   GetAPMBatteryLifePercent:   Integer; 
var 
    SystemPowerstatus:   TSystemPowerStatus; 
begin 
    Result   :=   0; 
    if   not   GetSystemPowerStatus(SystemPowerStatus)  then 
        RaiseLastWin32Error 
    else 
        Result   :=  SystemPowerStatus.BatteryLifePercent; 
end; 

//------------------------------------------------------------------------------

function   GetAPMBatteryLifeTime:   Integer; 
var 
    SystemPowerstatus:   TSystemPowerStatus; 
begin 
    Result   :=   0; 
    if   not   GetSystemPowerStatus(SystemPowerStatus)  then 
        RaiseLastWin32Error 
    else 
        Result   :=  SystemPowerStatus.BatteryLifeTime; 
end; 

//------------------------------------------------------------------------------

function   GetAPMBatteryFullLifeTime:   Integer; 
var 
    SystemPowerstatus:   TSystemPowerStatus; 
begin 
    Result   :=   0; 
    if   not   GetSystemPowerStatus(SystemPowerStatus)  then 
        RaiseLastWin32Error 
    else 
        Result   :=  SystemPowerStatus.BatteryFullLifeTime; 
end;

相关阅读 >>

Delphi strutils.dupestring - 反复字符串

Delphi 关于汉字换行问题

Delphi 10分钟10行代码开发app(Delphi 应用案例)

Delphi 锁定系统解锁系统

Delphi winapi: shellexecute - 打开外部程序或文件

Delphi可执行程序参数

Delphi修改资源文件的代码

Delphi mailurlmaybeinvalid 检测邮箱地址有效性

Delphi tmsweb core 刷新当前页面

Delphi 根据ip获取局域网mac

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...