【问题标题】:When computer take order to shutdown , I need to save file当计算机命令关机时,我需要保存文件
【发布时间】:2016-03-24 09:24:42
【问题描述】:

如何将列表框的内容保存到文件当计算机关机或睡眠,或重新启动 ??? 我用的是德尔福 XE7,

我确实保存了文件,我没有问题!

但我想在电脑关机时保存文件。

更新我的代码和问题:

我的问题是,当我的项目在后台运行时,两个事件 OnClose 和 OnDestroy 都不起作用!

如果项目“不在后台”正常工作,那么这两个事件都可以正常工作!

我想出了我的问题,这是我在后台进程中工作的项目,我添加此行来执行此操作 Application.MainFormOnTaskbar := False; Application.ShowMainForm := False; 如果我让我的项目在后台运行事件 onCloseonDestroy肯定不行,

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
str :TStringList;
i : integer;
begin
  str := TStringList.Create;
  for i := 0 to ListBox1.Count-1 do
    str.Add(ListBox1.Items.Strings[i]);

  try
    str.SaveToFile('D:\test1.txt', TEncoding.UTF8);
  finally
    str.Free;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
str :TStringList;
i : integer;
begin
  str := TStringList.Create;
  for i := 0 to ListBox1.Count-1 do
    str.Add(ListBox1.Items.Strings[i]);

  try
    str.SaveToFile('D:\test15.txt', TEncoding.UTF8);
  finally
    str.Free;
  end;
end;

【问题讨论】:

  • 当系统关闭时,您的应用程序将被关闭,然后您可以保存文件。重启也是如此。我假设您想在应用程序关闭时保存文件,而不仅仅是在系统关闭时保存文件。睡眠不一样。您需要以另一种方式检测。
  • 大卫先生,我尝试保存文件,在销毁事件和关闭事件时!它没有工作!
  • @DavidHeffernan,我想出了我的问题,这是我在后台进程中工作的项目,我添加这行来执行此操作Application.MainFormOnTaskbar := False;Application.ShowMainForm := False; 如果我让我的项目在后台进程中运行事件onCloseonDestroy 肯定不行,我更新我的问题并放上我的代码。
  • 并非如此。我不明白为什么你很乐意让程序关闭而不采取行动,而是想在系统关闭时做点什么。我不明白您为什么不阅读 MSDN 文档。而且我不想花更多时间战斗。

标签: windows delphi sleep shutdown delphi-xe7


【解决方案1】:

处理WM_ENDSESSION 消息并将您的文件保存在那里。

像这样捕捉windows message

private
    procedure OnShutDown(var Msg: TMessage); message WM_ENDSESSION;

这是你的实现

procedure TForm1.OnShutDown(var Msg: TMessage);
begin
    //Save your file here. 
end;

【讨论】:

  • 你知道什么是windows消息吗?你知道if 声明是什么吗?您是否阅读了WM_QUERYENDSESSION 的文档?
  • @Charlie Docs say 当应用程序为此消息返回 TRUE 时,它会收到 WM_ENDSESSION 消息,而不管其他应用程序如何响应 WM_QUERYENDSESSION 消息。每个应用程序应在收到此消息后立即返回 TRUE 或 FALSE,并推迟任何清理操作,直到收到 WM_ENDSESSION 消息。 换句话说,不要将文件保存在 WM_QUERYENDSESSION 的处理程序中。这比您的答案所暗示的要复杂得多。
猜你喜欢
  • 2018-11-16
  • 2016-11-09
  • 2017-10-02
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多