home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 September
/
Chip_2001-09_cd1.bin
/
zkuste
/
delphi
/
kompon
/
d2345
/
MSYSINFO.ZIP
/
Source
/
MSI_APM.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
2001-05-21
|
4KB
|
128 lines
{*******************************************************}
{ }
{ MiTeC System Information Component }
{ APM Detection Part }
{ version 5.4 for Delphi 3,4,5 }
{ }
{ Copyright ⌐ 1997,2001 Michal Mutl }
{ }
{*******************************************************}
{$INCLUDE MITEC_DEF.INC}
unit MSI_APM;
interface
uses
SysUtils, Windows, Classes;
type
TPowerStatus = (psUnknown, psOffline, psOnline);
TBatteryStatus = (bsUnknown, bsHigh, bsLow, bsCritical, bsCharging, bsNoBattery);
TAPM = class(TPersistent)
private
FBatteryLifePercent: Byte;
FBatteryLifeFullTime: DWORD;
FBatteryLifeTime: DWORD;
FACPowerStatus: TPowerStatus;
FBatteryChargeStatus: TBatteryStatus;
public
procedure GetInfo;
procedure Report(var sl :TStringList);
published
property ACPowerStatus :TPowerStatus read FACPowerStatus write FACPowerStatus stored false;
property BatteryChargeStatus :TBatteryStatus read FBatteryChargeStatus write FBatteryChargeStatus stored false;
property BatteryLifePercent :Byte read FBatteryLifePercent write FBatteryLifePercent stored false;
property BatteryLifeTime :DWORD read FBatteryLifeTime write FBatteryLifeTime stored false;
property BatteryLifeFullTime :DWORD read FBatteryLifeFullTime write FBatteryLifeFullTime stored false;
end;
implementation
uses
MiTeC_Routines;
{ TAPM }
procedure TAPM.GetInfo;
var
PS :TSystemPowerStatus;
OK: Boolean;
begin
try
FACPowerStatus:=psUnknown;
FBatteryChargeStatus:=bsUnknown;
FBatteryLifePercent:=0;
FBatteryLifeTime:=0;
FBatteryLifeFullTime:=0;
ok:=GetSystemPowerStatus(PS);
if OK then begin
case PS.ACLineStatus of
0 : FACPowerStatus:=psOffLine;
1 : FACPowerStatus:=psOnLine;
else FACPowerStatus:=psUnknown;
end;
if (PS.BatteryFlag or 1)=1 then
FBatteryChargeStatus:=bsHigh
else
if (PS.BatteryFlag or 2)=2 then
FBatteryChargeStatus:=bsLow
else
if (PS.BatteryFlag or 4)=4 then
FBatteryChargeStatus:=bsCritical
else
if (PS.BatteryFlag or 8)=8 then
FBatteryChargeStatus:=bsCharging
else
if (PS.BatteryFlag or 128)=128 then
FBatteryChargeStatus:=bsNoBattery
else
FBatteryChargeStatus:=bsUnknown;
FBatteryLifePercent:=PS.BatteryLifePercent;
FBatteryLifeTime:=PS.BatteryLifeTime;
FBatteryLifeFullTime:=PS.BatteryFullLifeTime;
end;
except
on e:Exception do begin
MessageBox(0,PChar(e.message),'TAPM.GetInfo',MB_OK or MB_ICONERROR);
end;
end;
end;
procedure TAPM.Report(var sl: TStringList);
var
s: string;
begin
with sl do begin
Add('[Advanced Power Management]');
case ACPowerStatus of
psUnknown: s:='Unknown';
psOnline: s:='Online';
psOffline: s:='Offline';
end;
Add(Format('ACPowerStatus=%s',[s]));
case BatteryChargeStatus of
bsUnknown: s:='Unknown';
bsHigh: s:='High';
bsLow: s:='Low';
bsCritical: s:='Critical';
bsCharging: s:='Charging';
bsNoBattery: s:='No Battery';
end;
Add(Format('BatteryChargeStatus=%s',[s]));
if BatteryLifePercent<=100 then begin
Add(Format('BattreyLifeFullTime=%s',[FormatSeconds(BatteryLifeFullTime,true,false,false)]));
Add(Format('BatteryLifeTime=%s',[FormatSeconds(BatteryLifeTime,true,false,false)]));
end;
end;
end;
end.