Ab Win2000 werden auch Messages gesendet mit denen man eine Menge anstellen kann:
Delphi-Quellcode:
...
procedure PowerMessage(var msg: TMessage); message WM_POWERBROADCAST;
...
procedure TForm1.PowerMessage(var msg: TMessage);
var status: TSystemPowerStatus;
begin
if msg.WParam = PBT_APMPOWERSTATUSCHANGE then
begin
if GetSystemPowerStatus(status) then
begin
case status.ACLineStatus of
0: //Offline = Akkubetrieb
1: //Online = Netzbetrieb
else
//unbekannter Status
end;
end;
//evtl. GetLastError
end;
end;
...
Ich hoffe das läuft...
P.S.: Bei Vista gibts auch noch eine Möglichkeit einen speziellen Handler zu registrieren. Beispiel kann ich falls gewünscht nachreichen.