我在"Application.Run;"后面放了一些代码,通常在应用程序关闭时运行。但是,当用户重新启动或关闭Windows时,永远不会达到这一点。
是否可以在不捕获WM_ENDSESSION的情况下解决此问题?(不涉及任何形式,我希望代码在application.run之后保留在dpr的末尾)
VCL已经侦听WM_ENDSESSION
(隐藏的应用程序窗口),并在会话结束时终止应用程序。您可以在.dpr(或其他地方)中添加一个终止过程,该过程将在其他可能的终止过程中调用:
program Project1;
uses
Vcl.Forms,
sysutils,
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
function OnTerminate: Boolean;
begin
Result := True;
// do some short work
end;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm2, Form2);
AddTerminateProc(OnTerminate);
Application.Run;
end.