Danke für den Hinweis. Inzwischen bin ich auch schlauer: selbst
PBT_APMRESUMEAUTOMATIC
PBT_APMRESUMESUSPEND
PBT_APMSUSPEND
werden nicht empfangen.
Danke für deine Info. Aber: Ich verwende WM_POWERBROADCAST seit vielen Jahren in einem Onlinespiel ohne "RegisterSuspendResumeNotification" und es funktioniert auch im Insider Build Version 10.0.19041 (soeben getestet). Ich schliesse den Deckel, mein Programm empfängt WM_POWERBROADCAST wParam=PBT_APMSUSPEND. Ich öffne den Deckel und melde mich an und prüfe: Mein Programm empfängt zuerst PBT_APMRESUMESUSPEND und danach PBT_APMRESUMEAUTOMATIC. Dein Code aus #1 sollte also funktionieren.
Hast du eventuell bei der Deklaration
message WM_POWERBROADCAST; vergessen (?).
Delphi-Quellcode:
type
TMeinForm = class(TForm)
...
procedure WMPowerBroadcast(var Msg: TMessage); message WM_POWERBROADCAST;
procedure TMeinForm.WMPowerBroadcast(var Msg: TMessage);
begin
try
case Msg.wParam of
PBT_APMSUSPEND: ….
PBT_APMRESUMESUSPEND: ….
PBT_APMRESUMEAUTOMATIC: ….