私はDelphi 6 Proを使用しています。私のアプリケーションが確実にシャットダウンされているにもかかわらず、フォームが破棄される前に起動するイベントが必要です。私はメインフォームWndProc()でWM_QUITメッセージをトラップすることを考えましたが、フォームがWM_QUITメッセージを見た前に破壊を開始したために動作しませんでした。私はイベントのシャットダウンチェーンのこの時点でコードを実行するために使用できる標準的なDelphiイベントがあるかどうか疑問に思っていましたか?メインフォームのFormClose()イベントは使用できません。なぜなら、発生することは保証されておらず、FormDestroy()イベントは遅すぎます。何か案は? WM_QUIT
の実行を停止するループメッセージための信号であるとしてアプリケーションが終了してもフォームが破棄される前に呼び出されることが保証されているDelphiイベントはありますか?
7
A
答えて
14
あなたは、WM_QUIT
messsageはWndProc()
方法に到着表示されません、そのようなものとして、それは、通常、ウィンドウプロシージャにディスパッチされていません。
あなたが何を求めているのかについての特別なイベントはありません。ただし、あなたのプロジェクトの.dprファイルを開いて、Application.Run
の呼び出し後に必要なコードを入力してください。メッセージループはもはや実行されていませんが、Application
とMainForm
オブジェクトはまだ解放されていません。
7
これを実行する最も良い方法は、SysUtils.pasのAddTerminateProc()ルーチンを使用してプロシージャをフックすることです。これは毎回動作し、私はそれを数年間使っています(あなたがタスクマネージャーを介してプロセスを終了させない限り)。
+0
ありがとうございました。私はあまりにも試してみましょう。 –
関連する問題
- 1. Application.Run()が呼び出される前に終了(終了)とアプリケーションが呼び出されていますか?
- 2. HTTPセッションが破棄される前のメソッド呼び出し
- 3. グローバルオブジェクトは、すべてのスレッドローカルストレージオブジェクトが破棄された後に破棄されることが保証されていますか?
- 4. form.hide()を呼び出した後にフォームが破棄されるかどうか?
- 5. タグが付いたフラグメントを追加すると、親が破棄されても破棄されませんか?
- 6. フラグメントが破棄されたときにバックグラウンドスレッドを終了する
- 7. アプリケーション終了時に-deallocメソッドが呼び出されますか?
- 8. アクティビティがもう実行されていないときにonPauseが呼び出されることが保証されていますか?
- 9. 終了時に関数が呼び出される前に
- 10. オブジェクトが破棄されるたびに.NETスレッドが終了する
- 11. 自動保存期間を持つオブジェクトが破棄される前に呼び出されるコールバック
- 12. MIDlet.startApp()は、MIDlet.pauseApp()またはMIDlet.destroyApp()が呼び出される前に完全に実行されることが保証されていますか?
- 13. Androidのイベントは、アクティビティが破棄されるまで一度だけ呼び出されますか?
- 14. Windowsフォームがクローズされていますが破棄されていません
- 15. FormClosedイベントがメインフォーム終了時に呼び出されない
- 16. Android AsyncTask - doInBackgroundが終了する前にonPostExecuteが呼び出されました。
- 17. AJAXコールバックが呼び出される前にイベントハンドラが完了することは保証されていますか?
- 18. Android - バックグラウンドサービスは、呼び出し元のアクティビティが破棄されたときに終了します。
- 19. 終了してもアプリケーションが実行されていますか?
- 20. boost :: asioのasync_ *のハンドラが常に呼び出されることは保証されていますか?
- 21. スレッドが終了すると.Join()呼び出しがブロック解除されることはありません
- 22. モックされたfirebase関数が呼び出されて失敗する前にjestテストが終了する
- 23. アンドロイドサービスがonDestroy()を呼び出すことは保証されていますか?
- 24. SQLConnectionが破棄される前にClose()する必要がありますか?
- 25. wpfイベントのハンドラがUIスレッドで呼び出されることは保証されますか?
- 26. スレッドが破棄されると、変数は破棄されますか?
- 27. MediaPlayerを終了した後でOpenGLコンテキストが破棄される
- 28. 登録イベントが完了する前に、サービスワーカーインストールイベントが呼び出されます
- 29. boost :: future - wait_callbackは一度だけ呼び出されることが保証されていますか?
- 30. 終了したセッションは破棄されていません
Excellent @Remy Lebeau私はプロジェクトファイルの使用を考えなかった。 –
これの唯一の問題は、Application.Runの終了後、すべてが効果的に終了し、ファイナライズセクションのみが実行されることです。これは作品の中で非常に遅れている - 効果的な仕事をするには遅すぎる。 – Misha