Gibt es ein Delphi-Ereignis, das garantiert aufgerufen wird, wenn eine App beendet wird, aber bevor Formulare gelöscht werden?

8

Ich benutze Delphi 6 Pro. Ich brauche ein Ereignis, das ausgelöst wird, wenn meine Anwendung definitiv heruntergefahren wird, aber bevor Formulare zerstört werden. Ich dachte darüber nach, WM_QUIT-Nachrichten im Hauptformular WndProc () abzufangen, aber das funktionierte nicht, da die Formulare zu zerstören begannen, bevor ich eine WM_QUIT-Nachricht sah. Ich habe mich gefragt, ob es ein Delphi-Standardereignis gibt, mit dem ich Code an dieser Stelle der Abschaltkette von Ereignissen ausführen kann? Ich kann das FormClose () - Ereignis des Hauptformulars nicht verwenden, da es nicht garantiert wird, dass es ausgelöst wird, und das FormDestroy () - Ereignis ist zu spät. Irgendwelche Ideen?

    
Robert Oschler 10.10.2011, 23:28
quelle

2 Antworten

14

Sie werden keine WM_QUIT messages in der Methode WndProc() ankommen sehen, da WM_QUIT ein Signal ist, damit Nachrichtenschleifen nicht mehr ausgeführt werden können und daher normalerweise nicht an eine Fensterprozedur gesendet werden.

>

Es gibt kein bestimmtes Ereignis für das, was Sie fragen. Sie können jedoch die .dpr-Datei Ihres Projekts öffnen und den Code, den Sie nach dem Aufruf benötigen, nach Application.Run exits setzen. Die Nachrichtenschleife wird nicht mehr ausgeführt, aber die Objekte Application und MainForm wurden noch nicht freigegeben.

    
Remy Lebeau 11.10.2011, 00:04
quelle
8

Der beste Weg, dies zu tun (und ich habe es lange im Auge behalten), besteht darin, eine Prozedur über die Routine AddTerminateProc () in SysUtils.pas anzuhängen. Dies funktioniert jedes Mal und ich benutze es seit Jahren (außer Sie töten den Prozess über den Task-Manager).

    
Misha 11.10.2011 03:13
quelle