【说明】:
在MSDN找到SetUnhandledExceptionFil
一,处理函数
程序在出现异常时,会调用这个函数,我们就在这里处理程序荡后的所有事,包括重启。
原型:LONG
我们这里先简单试验一下。
【代码部分】
<span style="font-size:14px;">1.LONG WINAPI FreeEIM_UnhandledExceptionFilter(LPEXCEPTION_POINTERS ExceptionInfo)
{
MessageBox(NULL,"FreeEIM","FreeEIM",MB_OK);
return EXCEPTION_EXECUTE_HANDLER;
}
2.然后在OnInitDialog()里加入:SetUnhandledExceptionFilter(FreeEIM_UnhandledExceptionFilter);
</span>
编译现在的程序.
二,构造重启函数
这里我们用到一个函数WinExec,函数比较常用,也可以用ShellExecute启动另个自己,下面代码用的是WinExec,
【代码部分】
1.LONG WINAPI FreeEIM_UnhandledExceptionFilter(LPEXCEPTION_POINTERS ExceptionInfo)
{
char szFileName[256];
::GetModuleFileName(NULL, szFileName, _MAX_PATH);
CString m_strPath = szFileName;
if ( MessageBox(NULL,"程序 FreeEIM.exe 遇到问题异常退出,是否重启?","FreeEIM",MB_YESNO)
== IDYES ){
WinExec(m_strPath, SW_SHOW);
}
return EXCEPTION_EXECUTE_HANDLER;
}
2.然后在OnInitDialog()里加入:SetUnhandledExceptionFilter(FreeEIM_UnhandledExceptionFilter);