崩溃时以编程方式重新启动应用程序

时间:2011-12-02 16:41:11

标签: c++ windows

我有一个用C ++编写的Windows应用程序,有时会崩溃。有没有办法以编程方式忽略模式对话框并自动重新启动应用程序?

4 个答案:

答案 0 :(得分:4)

我从病毒中学到的东西:使用服务检查您的应用程序是否正在运行。如果服务检测到应用程序未运行,请启动该应用程序。随便实施服务。

答案 1 :(得分:4)

您可以查看RegisterApplicationRestart功能(Windows Vista / 2008最低版本)

答案 2 :(得分:0)

编写一个重新启动的未处理异常处理程序。如果您需要确保有记忆,请预先分配。

如果你从故障中恢复过多的保证,你就有可能永远不会修复故障。

另外,最好通知某人它出现故障并关机。如果您在每次程序启动时出现问题,那该怎么办?然后看起来你的程序一直在运行,但它没有做任何事情。

答案 3 :(得分:0)

在vc ++中:

//-- a Top-level Exception Handler in process level 
LONG WINAPI TopLevelExceptionHandler(PEXCEPTION_POINTERS pExceptionInfo)
{

// find app name to re execute it.
TCHAR szPath[_MAX_PATH];
VERIFY(::GetModuleFileName(AfxGetApp()->m_hInstance, szPath, _MAX_PATH));
CString csPath(szPath);

// re execute.
ShellExecute( NULL, "open",csPath , NULL, NULL, 1 );

//
exit(-1);
return EXCEPTION_CONTINUE_SEARCH;
}


main()
{
   //set a Top-level Exception Handler in process level to re execute app. 
   SetUnhandledExceptionFilter(TopLevelExceptionHandler);
   .
   .
   .
}