[英]How to auto restart a Qt application when it crashes, within the same program?
[英]Programmatically restart application when it crashes
我有一個用C ++編寫的Windows應用程序,有時會崩潰。 有沒有辦法以編程方式忽略模式對話框並自動重新啟動應用程序?
我從病毒中學到的東西:使用服務來檢查您的應用程序是否正在運行。 如果服務檢測到該應用程序未在運行,請啟動該應用程序。 實施您喜歡的服務。
您可以看看RegisterApplicationRestart函數(最低Windows Vista / 2008)
在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);
.
.
.
}
編寫一個重新處理的未處理異常處理程序。 如果需要確保有足夠的存儲空間,請預先分配。
如果從故障中恢復太多的事情是可以保證的,則可能會冒着永不修復故障的風險。
另外,最好通知某人故障並關閉。 如果您對每次程序啟動時都會發生的問題進行故障處理,該怎么辦。 然后,看起來您的程序始終在運行,但沒有執行任何操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.