Я хочу, чтобы приложения Windows и OSX, которые аварийно завершали работу, просто закрывались без всплывающих окон и диалогов. - PullRequest
0 голосов
/ 30 апреля 2018

Я не знаю, как это Google, я пытался, но ничего не нашел.

Я делаю хост на основе JUCE, и мне нужно сканировать плагины (VST / VST3 / AU), и я хотел сделать свой собственный сканер. Текущий работает, но пользователь должен перезапустить приложение несколько раз, и это не хорошо, они ненавидят его (и я тоже).

Моя идея состоит в том, чтобы создать приложение для сканера, которое было бы очищено от основного приложения, и проверить, не сработало ли оно. НО, я не знаю, как проверить, не произошло ли сбой приложения. Я могу проверить связь с приложением и проверить, не перестает ли оно отвечать, но я не хочу, чтобы какое-либо сообщение об ошибке показывало, заставляющее пользователя щелкнуть что-либо, чтобы мое основное приложение продолжило работу.

Надеюсь, я в порядке, спасибо за любую помощь заранее. : -)

С наилучшими пожеланиями, WilliamK @ Wusik

1 Ответ

0 голосов
/ 04 мая 2018

Нашел то, что мне нужно для Windows, прекрасно работает.

#include <windows.h>
#include <rtcapi.h>
int exception_handler(LPEXCEPTION_POINTERS p)
{
    printf("Exception detected during the unit tests!\n");
    exit(1);
}
int runtime_check_handler(int errorType, const char *filename, int linenumber, const char *moduleName, const char *format, ...)
{
    printf("Error type %d at %s line %d in %s", errorType, filename, linenumber, moduleName);
    exit(1);
}

int main()
{
    DWORD dwMode = SetErrorMode(SEM_NOGPFAULTERRORBOX);
    SetErrorMode(dwMode | SEM_NOGPFAULTERRORBOX);
    SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)&exception_handler); 
    _RTC_SetErrorFunc(&runtime_check_handler);

    // Run your tests here

    return 0;
}
...