当唤神正常情况下
结束一个
程序(就是点击窗口右上方那个叉叉),系统会向程序发送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
评论列表(0条)