Delphi 程序从进程中结束的事件

Delphi 程序从进程中结束的事件,第1张

当唤神正常情况下结束一个程序(就是点击窗口右上方那个叉叉),系统会向程序发送WM_CLOSE消息,然后程序的消息循环拦弯里面就会响应并处理这个消息,进行结束工作,最后再调用API函数结束自身。消和衡亏息事件中并不存在进程中被结束的事件,你在进程被结束前,通过事件驱动方式能够接管程序的最后机会就是在处理WM_CLOSE事件中,而Onclose,Ondestroy,OnCloseQuery这几个事件中其实是响应WM_CLOSE消息,如果是用任务管理器或者其他进程管理类的软件来结束程序,那么软件会调用API函数TerminateProcess,其原型BOOL TerminateProcess( HANDLEhProcess // 将被结束进程的句柄 UINTuExitCode // 指定进程的退出码 )

如果你一定要在进程被结束中处理程序,那么你可以尝试用全局的API Hook,给TerminateProcess函数挂钩

纠正下败闭不是在 Form 的 Close 事件里,因该在 CloseQuery 事尺好件里

procedure TForm1.FormCloseQuery(Sender: TObjectvar CanClose: Boolean)

begin

if (IDYES = Application.MessageBox('确定要退出吗?','陵枯铅提示',MB_YesNo+MB_IconQuestion)) then

CanClose:=TRUE

else

CanClose:=FALSE

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8183304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存