Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: WM_QUERYENDSESSION verwenden

  Alt 11. Jun 2009, 16:08
Auch Close solltest du an dieser Stelle nicht aufrufen.
Windows hat noch nicht entschieden ob es beendet wird.
Es fragt alle Fenster ab und wenn auch nur eins mit 0 antwortet, passiert nichts.

Das ist die Standardantwort die jedes Fenster zurückgibt:
Delphi-Quellcode:
begin
  Msg.Result := 1;
end;
Das einzige sinnvolle andere Reaktion ist Result auf 0 zu setzen und/oder sich dieses Ereignis zu merken.
Der von Helmi gepostete Code gehört eigentlich in die Verarbeitung der Nachricht WM_EndSession.

Wenn deine Methode WMQueryEndSession entfernt wird und sich Windows trotzdem nicht beenden lässt, dann reagiert irgend ein anderes Fenster deiner Anwendung falsch auf diese Nachricht. Das kann auch ein unsichtbares Fenster sein, das z.B. von irgend einer Komponente/Klasse für interne Zwecke erzeugt wurde.
  Mit Zitat antworten Zitat