2011-07-15 17 views
5

Mi aplicación necesita escanear archivos de terceros que a menudo provocan bloqueos. Para superar eso, usa un proceso separado para escanear esos archivos y cada vez que este proceso se bloquea, mi aplicación simplemente crea otra instancia.Prevención de mensajes bloqueados en Windows

Mi problema es que después de cada accidente me sale el mensaje de choque de Windows: "AuxScanner ha dejado de funcionar ..."

¿Cómo puedo evitar que este mensaje y accidente en silencio?

Estoy usando canalizaciones con nombre para la comunicación entre procesos.

Gracias

Respuesta

6

Consulte http://blogs.msdn.com/b/oldnewthing/archive/2004/07/27/198410.aspx: puede deshabilitar el diálogo de bloqueo del programa (aunque deberá hacerlo desde el interior del subproceso).

La forma en que lo leí, que desea algo como esto en su sub-proceso:

#include <windows.h> 

//... 

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

pregunta interesante por cierto - esto podría ser interesante para pegar en todo tipo de software durante el desarrollo; es bastante molesto cuando su código activamente desarrollado falla (no inesperado), y luego todo espera, su interfaz de usuario cambia el foco y ofrece (inútilmente) enviar un volcado de emergencia a microsoft ...

1

Si usted está recibiendo el "... has dejado de funcionar" mensaje que significa que no maneja la excepción. Asegúrese de que las secciones de código que pueden o pueden estar induciendo el bloqueo estén envueltas en bloques de prueba/captura y manejen las excepciones correctamente.

+0

me gusta esta respuesta. No responde la pregunta original, sino que llega al punto en que Shlomi Tsur falló, que no hay ninguna razón para que el proceso se bloquee en primer lugar, independientemente del contenido del archivo que está procesando. – DataGraham

Cuestiones relacionadas