2010-03-22 3 views
0

Я работаю с сторонним исполняемым файлом, который я не могу перекомпилировать (поставщик больше не доступен). Он был первоначально написан под .Net 1.1, но, похоже, отлично работает и в более поздних версиях. Я запускаю его с помощью Process.Start из моего собственного приложения (я попытался выполнить p/invoke CreateProcess также с теми же результатами, чтобы это не имело значения)Как удалить диалоговое окно Unhandled Exception, созданное сторонним приложением

К сожалению, это стороннее приложение теперь бросает необработанное исключение при его выходе. В диалоговом окне Microsoft есть заголовок, например «Исключение из v2.0 ... Broadcast Window» с номером версии, относящимся к версии .Net, в которой он запущен (я могу использовать файл .exe.config для таргетинга на другую .Net версии, не помогает).

Диалоговое окно необработанного исключения при выходе не вызывает никаких реальных проблем, но беспокоит моих пользователей, которым нужно щелкнуть ОК, чтобы каждый раз отклонять его. Есть ли способ (возможно, вариант файла конфигурации), чтобы отключить это диалоговое окно от показа приложения для приложения. У меня нет исходного кода? Я рассмотрел его загрузку в новом AppDomain, который дал бы мне доступ к событию UnhandledException, но нет никаких указаний на то, что я могу изменить внешний вид диалогового окна. Может быть, кто-то знает, что вызывает исключение, и я могу исправить это по-другому?

ответ

2

Вы можете написать приложение-оболочку, которое вызывает стороннее приложение напрямую и запустить приложение, используя Process.Start.

Затем в вашем приложении-оболочке будет исключение исключения, чтобы пользователи не увидели сообщение об ошибке.

+0

Это выполнимо, но вы предоставляете слишком мало информации :) –

0

Если он не был запутан, вы можете его декомпилировать? Это, конечно, незаконно и т. Д., Но если компания фактически обанкротилась, то никто не должен ее преследовать. Для вас разумно поддерживать код, если у вас нет другого выбора.

Рефлектор может дать вам понять, почему код тоже сбой, возможно, вам нужно что-то сделать или назвать его параметром, чтобы он не сделал этого?

0

В следующий раз не попробовать использовать что-то без исходного кода :)

Обходной должна последовать совету Криса. Приложение обертка может использовать такой код,

http://blog.jtbworld.com/2007/06/windows-live-writer-spell-checking.html

  1. Найти старый исполняемый файл приложения.
  2. Выполните его в объекте AppDomain, созданном в приложении-оболочке.
  3. Привяжите обработчик исключений для вашего приложения к этому событию UnhandledException объекта AppDomain.

http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx