Einzelnen Beitrag anzeigen

Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Standby zurück wird nicht erkannt?

  Alt 16. Jan 2010, 12:33
Ich quäle mich auch seit ein paar Tagen mit dem gleichen Prob in einer DLL herum.
Du solltest zunächst mal versuchen, deine Form anders zu erzeugen:
Delphi-Quellcode:
if not Assigned(FormPowerWatch) then
          FormPowerWatch := TFormPowerWatch.Create(Application);
Ich bin zunächst darüber gestolpert, das ein 'Wachwerden' nicht erkannt wurde, weil ich nur auf PBT_APMRESUMESUSPEND und PBT_APMRESUMESTANDBY geprüft habe.

PBT_APMRESUMESTANDBY kommt bei mir gar nicht und PBT_APMRESUMESUSPEND nur, wenn eine Taste gedrückt oder die Maus bewegt wird.

PBT_APMRESUMEAUTOMATIC ($0012) hingegen kommt immer - egal aus welchem 'Schlafzustand' geweckt wird.

Dann solltest du vielleicht noch in deiner WMPowerBroadcast-Procedure auf das Case zur Abfrage von Msg.Msg verzichten und gleich in ein Case für Msg.wParam springen und prüfen.
Bei der Deklaration

procedure WMPowerBroadcast(var MyMessage: TMessage); message WM_POWERBROADCAST;

wird ja schon vorgegeben, auf welche message reagiert werden soll...

Bei mir sieht das so aus:
Delphi-Quellcode:
procedure TFWUC_MAIN.WMPowerBroadcast(var Msg: TMessage);
begin
  LOG('... PowerBroadcast: ' + inttostr(Msg.wParam) + ' - ' + inttostr(Msg.lParam));
  case Msg.wParam of
    PBT_APMSUSPEND,
    PBT_APMSTANDBY:
    begin
      // System geht in Standby
      LOG('... geht in StandBy/Hibernate');
      MachHierWasNotwendigIstZumSchlafengehen;
    end;
    PBT_APMRESUMEAUTOMATIC :
// PBT_APMRESUMESUSPEND,
// PBT_APMRESUMESTANDBY:
    begin
      // System kommt aus dem Standby
      LOG('... ReActivate ...');
      MachHierWasNotwendigIstNachWachwerden;
    end;
  end;
  msg.Result := 1
end;
  Mit Zitat antworten Zitat