Предотвращение аварийных сообщений в Windows - PullRequest
5 голосов
/ 15 июля 2011

Мое приложение должно сканировать сторонние файлы, что часто приводит к сбою.Чтобы преодолеть это, он использует отдельный процесс для сканирования этих файлов, и каждый раз, когда происходит сбой этого процесса, мое приложение просто создает другое.

Моя проблема в том, что после каждого сбоя я получаю сообщение об ошибке Windows:работает ... "

Как я могу предотвратить тихое завершение этого сообщения?

Я использую именованные каналы для межпроцессного взаимодействия.

Спасибо

Ответы [ 3 ]

6 голосов
/ 15 июля 2011

См. http://blogs.msdn.com/b/oldnewthing/archive/2004/07/27/198410.aspx:. Вы можете отключить диалоговое окно сбоя программы (хотя это необходимо сделать из подпроцесса).

Как я читаю, вы хотите что-то подобное в вашем подпроцессе:

#include <windows.h>

//...

SetErrorMode(SetErrorMode(0) | SEM_NOGPFAULTERRORBOX);
//or if you only care about Vista or newer:
//SetErrorMode(GetErrorMode() | SEM_NOGPFAULTERRORBOX);

Кстати, интересный вопрос - может быть интересно придерживаться всех видов программного обеспечения во время разработки; Это довольно раздражает, когда ваш активно разработанный код падает (не неожиданно), а затем все ждет, ваш пользовательский интерфейс меняет фокус, и предлагает (бессмысленно) отправлять аварийный дамп Microsoft ...

1 голос
/ 15 июля 2011

Обработка ваших исключений .NET (CLR).

Обработка ваших исключений в C ++.

Обработка ваших SEH исключений .

См. http://blogs.msdn.com/b/kirush/archive/2008/04/24/global-crash-handler-for-c-application.aspx

В крайнем случае: SetErrorMode(SEM_NOGPFAULTERRORBOX)

1 голос
/ 15 июля 2011

Если вы получаете сообщение «... hast прекратил работать», это означает, что вы не обработали исключение.Убедитесь, что разделы кода, которые могут или могут вызывать сбой, заключены в блоки try / catch и корректно обрабатывают исключения.

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