Prévention des messages d’erreur dans Windows

Mon application doit parsingr les fichiers tiers qui entraînent souvent des pannes. Pour surmonter cela, il utilise un processus distinct pour parsingr ces fichiers et chaque fois que ce processus plante, mon application en instancie un autre.

Mon problème est que, après chaque crash, je reçois un message d’erreur Windows: “AuxScanner a cessé de fonctionner …”

Comment puis-je empêcher ce message et tomber en panne silencieusement?

J’utilise des canaux nommés pour la communication inter-processus.

Merci

Voir http://blogs.msdn.com/b/oldnewthing/archive/2004/07/27/198410.aspx : vous pouvez désactiver la boîte de dialog crash du programme (bien que vous deviez le faire depuis le sous-processus) .

Comme je le lis, vous voulez quelque chose comme ça dans votre sous-processus:

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

Question intéressante par la voie – cela pourrait être intéressant de restr dans tous les types de logiciels au cours du développement; c’est assez ennuyeux quand votre code développé activement se bloque (pas inattendu), puis tout attend, votre interface utilisateur change de focus, et elle offre (de manière inutile) d’envoyer un vidage sur crash à Microsoft …

Si vous obtenez le message “… avez cessé de fonctionner”, cela signifie que vous n’avez pas géré l’exception. Assurez-vous que les sections de code qui peuvent ou peuvent provoquer le blocage sont contenues dans des blocs try / catch et gèrent les exceptions correctement.

Gérez vos exceptions .NET (CLR).

Gérez vos exceptions C ++.

Gérez vos exceptions SEH .

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

Dernier recours: SetErrorMode(SEM_NOGPFAULTERRORBOX)