簡體   English   中英

崩潰時以編程方式重新啟動應用程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM