Inzwischen bin ich so weit gekommen:
Delphi-Quellcode:
procedure TForm1.WMPowerBroadcast(var Msg: TWMPower);
begin
showmessage('got message: wmpowerbroadcast');
if ((msg.msg=PBT_APMQUERYSUSPEND) and (not readyforsuspend)) then
begin
showmessage('message is pbt_apmquerysuspend');
Msg.Result := BROADCAST_QUERY_DENY;
if messagedlg('denied. suspend?',mtinformation,[mbyes,mbno],0)=mryes then
suspend(self);
end else
showmessage('message is not pbt_apmquerysuspend');
end;
procedure suspend(var form:tform1);
begin
form.readyforsuspend:=true;
form.closeallowed:=true;
form.close;
setsystempowerstate(true,false);
end;
Aber leider funktioniert das ganze nicht. Wenn ich den Ruhezustand auslöse, erhält er zwar die wmpowerbroadcast, aber erkennt nicht, dass es sich um eine pbt_apmquerysuspend handelt.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates