有没有一个Delphi事件,在应用程序终止但在任何窗体被销毁之前保证会被调用?

8

我正在使用 Delphi 6 Pro。我需要一个事件,在我的应用程序明确关闭但在任何窗体被销毁之前触发。我考虑通过在主窗体 WndProc() 中捕获 WM_QUIT 消息来实现,但是这并没有起作用,因为窗体开始销毁之前我看不到 WM_QUIT 消息。我想知道是否有一个标准的 Delphi 事件可以在关闭链的这一点上执行代码?我不能使用主窗体的 FormClose() 事件,因为它不能保证触发;FormDestroy() 事件则太晚了。有什么建议吗?

2个回答

14

WndProc() 方法中,您不会看到一个 WM_QUIT 消息的到来。因为 WM_QUIT 是一个信号,用于停止消息循环,因此通常不会分派给窗口过程。

对于您所要求的内容,没有特定的事件。但是,您可以打开项目的 .dpr 文件,在调用 Application.Run 退出后放置您需要的任何代码。消息循环不再运行,但 ApplicationMainForm 对象尚未被释放。


太棒了,@Remy Lebeau。我没有想到可以使用项目文件。 - Robert Oschler
1
唯一的问题是,在 Application.Run 结束后,一切都已经关闭,只剩下最终化部分需要运行。这太晚了,无法进行任何有效的工作。 - Misha

9

实现这个功能的最佳方式(多年来我一直在研究)是通过在SysUtils.pas中使用AddTerminateProc()例程连接一个过程。除非您通过任务管理器终止进程,否则此方法每次都有效,并且我已经使用它多年。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接