Delphi程序可以防止Windows正常关闭

时间:2009-08-04 11:53:02

标签: delphi delphi-7 shutdown

我有一个小程序,它只是简单地读取日记文本文件并将其显示在备忘录中 - 就是这样 - 如果你想让它消失,你不能双击表单上的按钮来关闭它。当它运行时(即使你关闭它)Windows XP就会“Windows正在关闭”,即。在“保存用户设置”等之后,它会挂起。我已经检查了与我编写的其他程序没有什么不同的代码,这些程序要复杂得多但却看不出任何错误 - 例如,关闭例程包含application.terminate(我认为)应该清除任何错误的内存。任何想法,因为我似乎已经用完了?

4 个答案:

答案 0 :(得分:1)

根据您所描述的内容,该程序应该有一行程序员添加的代码,即调用Memo1.Lines.LoadFromFile。当你说“就是这样。”时,这意味着什么。

该程序甚至不需要一个“关闭程序”。 (我假设您的意思是表单的OnClose事件。)当主窗体关闭时,应用程序会自动终止。这就是所有Delphi程序的工作方式。如果你在这方面做得更多,那你就做得太多了。

答案 1 :(得分:0)

只是一些建议,因为你的问题并不完全清楚。

您的应用程序在关闭时是否有问题,或者在Windows关闭期间是否挂起?

  • 您是否尝试过在应用程序上设置断点。终止?这是否提供了额外的信息。
  • 在mainform中,您可以使用Close而不是Application.Terminate。

答案 2 :(得分:0)

应用程序可以在他们耗尽CPU时间时禁止关机,尽管像Vista和W7这样的“现代”操作系统应该在一段时间后显示一个对话框告诉您这一点并提供让您中止该应用程序。通过查看任务管理器并查看“进程”,检查您的应用程序在空闲时显示0%CPU。 BRI

答案 3 :(得分:0)

以下代码对Windows关闭消息做出反应并关闭程序。

TForm1 = class(TForm)
    ...
private
    procedure WMEndSession(var Message: TWMEndSession); message WM_ENDSESSION;
    ...
end;

procedure TForm1.WMEndSession(var Message: TWMEndSession);
begin
    close;
end;