Beim Herunterfahren warten



  • Hi!
    Gibt es eine Möglichkeit beim Herunterfahren des Rechners Windows anzuweisen, dass es warten soll, bis das Programm beendet wurde? Also ich habe ein Programm, dass unten im Tray läuft und auf die Nachricht WM_QUERYENDSESSION reagiert. Nun gibt es die Möglichkeit auf diese Nachricht zu reagieren und false zurückzugeben. Allerdings wird dann der gesamte Herunterfahrvorgang abgebrochen. Ich möchte aber, dass Windows wartet, bis das Programm sich selbst beendet und dann anschließend den Rechner herunterfährt.



  • Windows wartet doch einige Zeit auf die Antwort, reicht dir diese Zeit nicht oder geht es um größere Angelegenheiten? Wenn ja, wirst du wohl false zurücksenden müssen und dann selbst herunterfahren nach Beendigung.



  • Nur dann hat man das Problem das man nicht feststellen kann ob der Benutzer Herunterfahren oder Neustart gewählt hat. 🤡



  • Ich würde einfach ein Logoff-Script schreiben, dafür sind die nämlich da. Das ist jetzt bestimmt nicht das, was Du hören wolltest. Was besseres fällt mir dazu aber leider auch nicht ein ...



  • Wie lange braucht dein Programm denn zum Beenden?

    EDIT: Wenn du wirklich länger brauchst, kannst du ja zur Not die Wartezeit deines Systems erhöhen, die es auf die Antwort auf WM_QUERYENDSESSION wartet. Das wären

    HKCU\COntrol Panel\Desktop

    HungAppTimeout und WaitToKillAppTimeout

    Ich weiß nicht genau, welches von beiden in welchem Fall gilt.

    EDIT: Mit AutoEndTasks kannst du sogar komplett unterbinden, dass Windows nach Ablauf der Zeit die Prozesse killt



  • masterofx32 schrieb:

    Wie lange braucht dein Programm denn zum Beenden?

    Es handelt sich bei dem Programm um ein Datensicherungsprogramm, dass einen beliebig großen Ordner beim Herunterfahren auf eine externe Festplatte kopiert. Die Zeit hängt also vom Datenvolumen ab.



  • Naja, dann würde ich wie bei vielen anderen Programmen auch eine "Nach Beendigung des Vorganges herunterfahren"-Checkbox einbauen. Ich befürchte, dass es da keine andere Möglichkeit gibt, da es ja selbst nach MSDN nicht möglich ist, zwischen Reboot und Shutdown zu unterscheiden, auch wenn das nicht stimmen muss.



  • Ganz krass: Du hookst Aufrufe von API-Funktionen und siehst beim Aufruf von ExitWindowsEx(), ob ein Reboot oder ein Shutdown ansteht.


Anmelden zum Antworten