Auf das Beenden von Windows reagieren |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Wird Windows heruntergefahren, so werden zwei Nachrichten an alle Anwendungen geschickt.
Als erstes wird die Nachricht WM_QueryEndSession verschickt.Über das Feld 'Result' des übergebenen Records kann das Programm das Herunterfahren bestätigen oder abbrechen.
Zum Abbrechen muss 0 zurückgegeben werden, ansonsten ein Wert ungleich 0.Anschließend wird die Botschaft WM_EndSession verschickt. Über den Parameter WParam kann abgefragt werden, ob das System nun heruntergefahren wird oder nicht.Abhängig von den Shutdown-Parametern ist es ggf. nicht möglich das Herunterfahren abzubrechen.
Theoretisch kann in beiden Nachrichten auf das Beenden reagiert werden, nur bei der zweiten ist aber gesichert, dass das System auch wirklich heruntergefahren wird.
In beiden Fällen sollte der ausgeführte Code möglichst kurz sein, da Windows das Programm sonst ggf. hart beendet.
procedure WMQueryEndSession (var M: TWMQueryEndSession); message
WM_QUERYENDSESSION;
procedure TForm1.WMQueryEndSession (var M: TWMQueryEndSession);
begin
inherited;
{ Hier befindet sich der Quellcode, der ausgeführt werden soll
wenn Windows beendet werden soll }
end;
WM_EndSession wird entsprechend implementiert.Nähere Informationen sind unter den beiden Messages im PSDK zu finden.