2011-07-15 15 views
5

Moja aplikacja musi skanować pliki innych firm, które często prowadzą do awarii. Aby temu zaradzić, używa oddzielnego procesu do skanowania tych plików i , gdy proces ten powoduje awarię mojej aplikacji, po prostu tworzy kolejną.Zapobieganie wiadomościom o awariach w systemie Windows

Moim problemem jest to, że po każdej katastrofie dostaję komunikat o awarii systemu Windows: "AuxScanner przestał działać ..."

Jak mogę zapobiec tej wiadomości i crash cicho?

Używam nazwanych potoków do komunikacji między procesami.

Dzięki

Odpowiedz

6

Zobacz: http://blogs.msdn.com/b/oldnewthing/archive/2004/07/27/198410.aspx: możesz wyłączyć okno dialogowe awarii programu (choć musisz to zrobić z wnętrza podprocesu).

Sposób czytałem go, chcesz coś takiego w swoim sub-process:

#include <windows.h> 

//... 

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

Ciekawe pytanie przy okazji - może to być interesujące, aby trzymać na wszelkiego rodzaju oprogramowania w trakcie rozwoju; to dość denerwujące, gdy aktywnie opracowany kod ulega awarii (nie jest nieoczekiwany), a następnie wszystko czeka, twój interfejs użytkownika się skupia i oferuje (bezcelowo) wysłać zrzut awaryjny do Microsoft ...

1

Jeśli dostajesz „... hast przestał działać” wiadomość oznacza to, że nie obsłużyć wyjątek. Upewnij się, że sekcje kodu, które mogą indukować awarię, są zapakowane w bloki try/catch i z wdziękiem obsługują wyjątki.

+0

lubię tę odpowiedź. Nie odpowiada na pierwotne pytanie, ale raczej przechodzi do punktu, w którym Shlomi Tsur przegapił, że nie ma żadnego powodu, aby proces się załamał, niezależnie od zawartości przetwarzanego pliku. – DataGraham

Powiązane problemy