![]() |
Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Hallo,
habe schon ![]() Könnt ihr mir Tipps geben? Danke im Voraus Nach 3 Minuten: Ah... ich sehe gerade: Zitat:
[edit=alcaeus]Beitraege zusammengefuehrt. Den Edit-Button solltest du kennen :roll: Mfg, alcaeus[/edit] |
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Warum sollte es eine Möglichkeit geben zwischen herunterfahren und Neustarten zu unterscheiden? In beiden Fällen wird der PC heruntergefahren. Beim Neustart kommt zusätzlich noch das Rebooten hinzu. Aber Runtergefahren wird in beidne Fällen komplett.
|
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Es hat schon einen Grund, warum ich das abfangen möchte. Ich habe ein Programm, das wird ausgeführt, wenn Windows (wie auch immer) beendet wird. (Dies hat auch seinen (vernünftigen) Grund) Wenn das Programm seine Arbeit getan hat, fährt es Windows auch brav herunter. Aber was ist, wenn der User Windows neu booten wollte? Dann muss er immer wieder den PC von Hand einschalten. - Gut, nicht weiter tragisch, stört mich nur...
|
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Zitat:
Gruß Hawkeye |
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Mein Programm läuft im Hintergrund ohne Aktion. Wenn es die Nachricht WM_ENDSESSION erhält, führt es seine Arbeit durch. Damit ist der Vorang abgebrochen - oder ist er dann nur "pausiert"? Wenn ja: Wie kann ich den Vorgang weiter druchführen lassen?
|
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Hallo DJ-SPM,
ich habe hier noch zwei Links für dich, die einen Fehler in einigen Delphi-Versionen (u.a. Delphi 7) beschreiben. ![]() ![]() Der erste Link ist schon etwas älter (Delphi 1?), beschreibt aber eine mögliche Lösung des Problems. Du solltest versuchen, die Nachricht WM_ENDSESSION abzufangen und dort deine Applikation mit einer Halt-Anweisung zu beenden. Dadurch wird die Kontrolle an Windows zurückgegeben und somit der Shutdown-Vorgang nicht unterbrochen. Ob dazu ein Hook nötig ist, kann ich dir nicht sagen. Ich würde es zunächst in der Behandlungsroutine für WM_ENDSESSION versuchen. Hoffentlich hilft es... :roll: Gruß Hawkeye |
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
@DJ-SPM: Hast du schon im MSDN nach WM_ENDSESSION geschaut. Über das Result der Message sollte eigentlich geregelt werden ob der Vorgang abgebrochen wird oder nicht.
|
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Zitat:
Delphi-Quellcode:
TForm1 = class(TForm)
... private ... procedure EndSessionHandler(var AMessage : TMessage); message wm_EndSession; ... public ... end; . . . procedure TForm1.EndSessionHandler(var AMessage : TMessage); begin // Ausführen der für diesem Fall noch anstehenden Arbeiten inherited; end; |
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Zitat:
|
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
ich hab nach WM_ENDSESSION im MSDN gesucht. Dort steht wenn ich mich recht entsinne das 0 zurück gegeben werden soll wenn eine Anwendung die Message verarbeitet. Möchte man also den Effekt erzielen das die Message nicht verarbeitet wird sollte man nicht 0 zurück geben.
|
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Ich habe es gerade getestet. Der ShutDown läßt sich nicht durch einen Result-Wert ungleich 0 aufhalten sondern nur durch die Rückgabe von 0 bei WM_QUERYENDSESSION.
Gruß Hawkeye |
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Da Windows ja nicht weiß ob man in seiner Messageproc auf die Message eingeht oder nicht ist es definitiv möglich das man bei Empfang der Message was macht aber diese durchgibt ohne das etwas gewesen wäre. Ich tippe die Nachricht muss einfach nur an die DefWindowProc weitergeleitet werden (vielleicht geht das schon über inherited).
|
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
In irgendeiner LOG-Datei protokolliert Windows jeweils, wann es gestartet und beendet wurde.
Meine Vermutung: Eine Auswertung dieser LOG-Datei könnte einen Hinweis darauf liefern, ob neu gestartet wurde (recht kleine Zeitdifferenz). mfg |
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Solche Aktionen sollten bei WM_QUERYENDSESSION durchgeführt werden und nicht bei WM_ENDSESSION.
|
Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Eben, führe doch aus, was immer du ausführen möchtest und zwar in der WM_QUERYENDSESSION.
Windows fährt erst weiter runter, sobald diese durchlaufen ist. Achtung: Dies wird sich bei Windows Vista ändern! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 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-2025 by Thomas Breitkreuz