![]() |
Hochfahren nach Ruhezustand erkennen
Gibt es eine Möglichkeit, dass ein Delphi-Programm erkennt, wenn Windows XP wieder aus dem Ruhezustand hochgefahren wurde?
|
Re: Hochfahren nach Ruhezustand erkennen
Wurde das Delphiprogramm denn mit in den Ruhezustand gebracht? Wenn ja, dann weise doch einer Variablen einen bestimmten Wert zu, dieser müsste dann der gleiche bleiben. Wird der Rechner ganz neugestartet, wäre dieser Wert weg.
|
Re: Hochfahren nach Ruhezustand erkennen
Ja, das Programm läuft natürlich, wenn Windows in den Ruhezustand gefahren wird. Aber der Inhalt einer Variablen ist natürlich nach dem Ruhezustand noch da, das ist ja der Trick beim Ruhezustand, sonst würd danach doch kein Programm mehr funktionieren.
Ich dachte eher an so etwas wie eine Nachricht, die von Windows nach dem Ruhezustand an alle Programme gesendet wird, auf die man reagieren kann. So wie auf einen Button-Klick. |
Re: Hochfahren nach Ruhezustand erkennen
ähhh...mhhh...stimmt.....das Progamm merkt ja garnicht, wann es feststellen soll, daß die Variable gleich geblieben ist. :mrgreen:
*sollte nicht so viel Kaffee trinken* |
Re: Hochfahren nach Ruhezustand erkennen
Zitat:
Dann gibt es allerdings das Problem, daß eine Zeitumstellung erkannt werden muß. |
Re: Hochfahren nach Ruhezustand erkennen
Ja, ich habs bis jetzt mit der Zeit gemacht, nur ich dachte, vielleicht gibt es eine "professionelere" Lösung.
|
Re: Hochfahren nach Ruhezustand erkennen
Schau die mal die Doku zu
![]() |
Re: Hochfahren nach Ruhezustand erkennen
Zitat:
![]() |
Re: Hochfahren nach Ruhezustand erkennen
Delphi-Quellcode:
Das ist mein Versuch bis jetzt. PWR_SUSPENDRESUME hat den Wert 2, aber ich bekomme für Msg.PowerEvt nur die Werte 0 und 4 beim Ruhezustand einschalten und die Werte 18 und 7 beim Hochfahren aus dem Ruhezustand. Die Werte sind beim Suspend die gleichen. Die Prozedur wird also vor und nach dem Ruhezustand/Suspend aufgerufen, aber das mit dem Werten klappt nicht. Dabei wird die Prozedur wohl zwei mal aufgerufen, da ich zweimal Meldungen mit Werten erhalte. Kann mir da jemand helfen? Ich hatte gehofft, es wäre einfacher.
procedure TForm1.WMPowerBroadcast(var Msg: TWMPower);
begin showmessage('1. Msg.PowerEvt: '+ inttostr( Msg.PowerEvt )+chr(13)+'Msg.Msg= '+inttostr(msg.msg) +chr(13)+'Msg.Unused: '+inttostr(msg.unused)); if Msg.PowerEvt=PWR_SUSPENDRESUME then showmessage('Fortgesetzt'); end; Kannst du mir das mit den Jedis erklären? Ich hab davon leider keine Ahnung. |
Re: Hochfahren nach Ruhezustand erkennen
TWMPower ist für WM_POWER, nicht für WM_POWERBROADCAST - nimm lieber einfach TMessage.
Laut PSDK kann wParam die folgenden Werte haben: Zitat:
Außerdem solltest du Msg.Result auf TRUE setzen, um das Suspend zu erlauben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz