【问题标题】:Is there a Delphi event that is guaranteed to be called when an app terminates but before any forms are destroyed?是否有保证在应用程序终止但在任何表单被销毁之前调用的 Delphi 事件?
【发布时间】:2011-12-04 21:50:34
【问题描述】:

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

【问题讨论】:

    标签: delphi terminate application-shutdown


    【解决方案1】:

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

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

    【讨论】:

    • 优秀的@Remy Lebeau。我没有想到使用项目文件。
    • 唯一的问题是,在 Application.Run 完成后,一切都有效地关闭了,只剩下完成部分运行。这已经很晚了——做任何有效的工作都太晚了。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 2012-04-16
      • 1970-01-01
      • 2013-02-13
      • 2021-04-19
      • 2017-12-31
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      相关资源
      最近更新 更多