Nesse post vou fazer um label1 receber as informações completas da fonte do computador.
Primeiramente ponha dentro de implementation os valores:
const
AC_OFFLINE = 0;
AC_ONLINE = 1;
AC_DESCONHECIDO = 255;
BAT_CARGA_CHEIA = 1;
BAT_CHARGA_BAIXA = 2;
BAT_CRITICO = 4;
BAT_CARREGANDO = 8;
BAT_AUSENTE = 128;
BAT_DESCONHECIDO = 255;
Em seguida insira uma procedure comum como a de um TTimer1
procedure TForm1.Timer1Timer(Sender: TObject);
var
EstadoDaFonte: _SYSTEM_POWER_STATUS;
status,flag,nivel,tempor,tempot:string;
begin
GetSystemPowerStatus(EstadoDaFonte);
case EstadoDaFonte.ACLineStatus of
AC_OFFLINE: status := ‘Usando a bateria’;
AC_ONLINE: status := ‘Ligado na tomada’;
AC_DESCONHECIDO: status := ‘Estado da fonte desconhecido’;
end;
case EstadoDaFonte.BatteryFlag of
BAT_CARGA_CHEIA: flag := ‘Bateria com carga cheia’;
BAT_CHARGA_BAIXA: flag := ‘Bateria com carga baixa’;
BAT_CRITICO: flag := ‘Bateria com carga baixa em nível crítico’;
BAT_CARREGANDO OR 9: flag := ‘Bateria carregando…’;
BAT_AUSENTE: flag := ‘Sem bateria instalada’;
BAT_DESCONHECIDO: flag := ‘Estado desconhecido’;
else
if status = ‘Usando a bateria’ then flag:=’Descarregando…’;
if status = ‘Ligado na tomada’ then flag:=’Carregando…’;
end;
if EstadoDaFonte.BatteryLifePercent <= 100 then
nivel := ‘Nível: ‘+IntToStr(EstadoDaFonte.BatteryLifePercent)+’%’
else if EstadoDaFonte.BatteryLifePercent = HIGH(BYTE) then
nivel := ‘Nível: Desconhecido’;
if EstadoDaFonte.BatteryLifeTime < HIGH(DWORD) then
tempor := ‘Tempo restante de uso: ‘ + IntToStr(EstadoDaFonte.BatteryLifeTime div 60) + ‘ minutos’
else tempor := ‘Tempo restante de uso: Desconhecido’;
if EstadoDaFonte.BatteryFullLifeTime < HIGH(DWORD) then
tempot:=’Duração total da bateria: ‘ + IntToStr(EstadoDaFonte.BatteryFullLifeTime div 60) + ‘ minutos’
else tempot:=’Duração total da bateria: Desconhecido’;
label1.caption:=status+#13+flag+#13+nivel+#13+tempor+#13+tempot;
end;