程序升级完毕后需要自己退出,并调用新的安装包,一般情况下,MainForm.Close就可以了.
但是有时候,用户可能打开了某些窗口如设置,提示之类的模式对话.比如打开设置窗口后
SysSetForm.ShowModal;
RegisterHotKey(handle,hotkeyid,myinifile.1,40);
因为Close后还要执行RegisterHotKey(handle,hotkeyid,myinifile.1,40);
所以会出错.
用Application.Terminate的话Close中的内容又不执行,有没有好的办法.在Close中加Application.Terminate已证明不好使.求解决方法.
但是有时候,用户可能打开了某些窗口如设置,提示之类的模式对话.比如打开设置窗口后
SysSetForm.ShowModal;
RegisterHotKey(handle,hotkeyid,myinifile.1,40);
因为Close后还要执行RegisterHotKey(handle,hotkeyid,myinifile.1,40);
所以会出错.
用Application.Terminate的话Close中的内容又不执行,有没有好的办法.在Close中加Application.Terminate已证明不好使.求解决方法.
Close 或者 Application.Terminate 都会执行.
欢迎加入:群 2518073开发者[DELPHI] 打广告的免入. 发一次就删除.
begin
MessageBox(0,'END','TEST',0);
end; Application.Terminate;
AddExitProc(test); AddExitProc(test);
Halt(0);
RegisterHotKey(handle,hotkeyid,myinifile.1,40);
这个地方有问题,我放到SysSetForm中去处理就可以了.关键我是怕还有别的地方,会引起问题.比如有的地方,我FormUpdate:=TFormUpdate.Create(Application)两次后,再MainForm.Close也会出问题.而正常我用手一个窗体,一个窗体的关,再结束程序是不会出任何问题的.我想知道怎么让程序可以和人一样正常的结束程序.那样就不会造成错误.某种程序上模式对话框这种东西对人的操作是有限制的,人来操作,我可以控制人关闭程序只有一个入口,只在一种状态下,但是对于程序中在任何地方都可以出来的MainForm.Close却无法按正常的流程处理.
例如procedure TfrmWebClient.FormDestroy(Sender: TObject);
begin
if Assigned(FormUpdate) then
FreeAndNil(FormUpdate);
//其他窗口也类似这种
//包括你全局的数组或是其他的内存都可以在这个时候给释放掉
end;