是否有一个Delphi事件保证在应用程序终止时但在任何表单被销毁之前被调用?

时间:2011-10-10 23:28:22

标签: delphi terminate application-shutdown

我正在使用Delphi 6 Pro。我需要一个事件,当我的应用程序肯定关闭但在任何表单被销毁之前将触发。我想过在主窗体WndProc()中捕获WM_QUIT消息,但这不起作用,因为在我看到WM_QUIT消息之前,Forms开始销毁。我想知道是否有一个标准的Delphi事件,我可以用它来执行关闭事件链的这一点?我不能使用主窗体的FormClose()事件,因为它不能保证触发,并且FormDestroy()事件为时已晚。有什么想法吗?

2 个答案:

答案 0 :(得分:14)

您不会在WM_QUIT方法中看到WndProc()消息到达,因为WM_QUIT是消息循环停止运行的信号,因此它通常不会被分派到窗口程序。

您所询问的内容并无特定事件。但是,您可以执行的操作是打开项目的.dpr文件,并在调用Application.Run出口后放置您需要的任何代码。消息循环不再运行,但ApplicationMainForm对象尚未释放。

答案 1 :(得分:8)

这样做的最佳方法(我多年来一直在研究这个问题)是通过SysUtils.pas中的AddTerminateProc()例程来连接一个过程。这种方法每次都有用,多年来我一直在使用它(除非你通过任务管理器终止进程)。