Einzelnen Beitrag anzeigen

Benutzerbild von ULIK
ULIK
Online

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#1

WM_POWERBROADCAST wie verwenden?

  Alt 30. Okt 2019, 10:01
Hallo,

ich habe eine wirklich dumme Frage: ich habe eine kleine Testanwendung, die nichts weiter machen soll, als auf WM_POWERBROADCAST Messages zu hören und in ein Memo zu schreiben, was empfangen wurde.

Delphi-Quellcode:
procedure TForm1.WMPowerbroadcast(var Message: TMessage);
begin
  memLog.Lines.Add('PowerBroadcast received');

  case Message.WParam of
    PBT_APMQUERYSUSPEND: memLog.Lines.Add('PBT_APMQUERYSUSPEND');
    PBT_APMQUERYSTANDBY: memLog.Lines.Add('PBT_APMQUERYSTANDBY');
    PBT_APMQUERYSUSPENDFAILED: memLog.Lines.Add('PBT_APMQUERYSUSPENDFAILED');
    PBT_APMQUERYSTANDBYFAILED : memLog.Lines.Add('PBT_APMQUERYSTANDBYFAILED');
    PBT_APMSUSPEND: memLog.Lines.Add('PBT_APMSUSPEND');
    PBT_APMSTANDBY: memLog.Lines.Add('PBT_APMSTANDBY');
    PBT_APMRESUMECRITICAL: memLog.Lines.Add('PBT_APMRESUMECRITICAL');
    PBT_APMRESUMESUSPEND: memLog.Lines.Add('PBT_APMRESUMESUSPEND');
    PBT_APMRESUMESTANDBY: memLog.Lines.Add('PBT_APMRESUMESTANDBY');
    PBT_APMBATTERYLOW: memLog.Lines.Add('PBT_APMBATTERYLOW');

    PBT_APMPOWERSTATUSCHANGE: memLog.Lines.Add('PBT_APMPOWERSTATUSCHANGE');
    PBT_APMOEMEVENT: memLog.Lines.Add('PBT_APMOEMEVENT');
    PBT_APMRESUMEAUTOMATIC: memLog.Lines.Add('PBT_APMRESUMEAUTOMATIC');
  end;
end;
Wenn ich das unter W10 laufen lassen und dann den Rechner in den Energiesparmodus oder Ruhemodus versetze, dann wird rein gar nichts aufgezeichnet. Auch ein Zuklappen des Laptopdeckels scheint keine Message zu generieren. Einzig wenn man das Netzteil an/absteckt, dann wir eine Message mit PBT_APMPOWERSTATUSCHANGE empfangen.

Ich nehm an, ich mach irgendeinen Fehler, nur welchen? Ich steh grad völlig auf dem Schlauch.

Ach so: Delphi ist XE 10.2.3

Geändert von ULIK (30. Okt 2019 um 10:02 Uhr) Grund: Delphiversion ergänzt
  Mit Zitat antworten Zitat