Программно перезапустить приложение, когда оно падает - PullRequest
1 голос
/ 02 декабря 2011

У меня есть приложение для Windows, написанное на C ++, которое иногда падает.Есть ли способ программно игнорировать модальное диалоговое окно и автоматически перезапускать приложение?

Ответы [ 4 ]

5 голосов
/ 02 декабря 2011

Что-то, что я узнал от вирусов: используйте сервис, чтобы проверить, что ваше приложение работает. Если служба обнаруживает, что приложение не запущено, запустите приложение. Внедрите услугу так, как вам нравится.

4 голосов
/ 02 декабря 2011

Вы можете взглянуть на функцию RegisterApplicationRestart (минимум Windows Vista / 2008)

0 голосов
/ 26 сентября 2017

в 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);
   .
   .
   .
}
0 голосов
/ 02 декабря 2011

Напишите обработчик необработанного исключения, который перезапускается.Если вам нужно убедиться, что у вас есть память для этого, предварительно выделите.

Если вы делаете восстановление после сбоя слишком гарантированным, вы рискуете никогда не исправить ошибки.

Плюс, этоЛучше уведомить кого-то, что он неисправен и отключен.Что делать, если вы допустили ошибку в проблеме, которая будет повторяться при каждом запуске программы.Тогда похоже, что ваша программа всегда запущена, но ничего не делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...