delphi获取系统电源状态的信息  
官方Delphi 学习QQ群: 682628230(三千人)
频道

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;

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.044780969619751 seconds