Я написал приложение Windows Forms VB.NET, которое запрашивает строку из COM-объекта вне процесса каждый раз, когда активировать пожары событий. В моей форме есть две вкладки, поэтому мне нужно программно переключаться на правильную вкладку каждый раз, когда мое окно получает фокус. Работает хорошо, пока ...VB.NET exe, который говорит о внепроцессном COM для активации бонусов событий при внешнем скрипте AppActivates
случайно, кто-то побежал VBScript (да, сценарий, не EXE), который содержит:
Set shell = CreateObject("WScript.Shell")
shell.AppActivate("Window Title That Matches My App")
Этот сценарий последовательно разбивает мое приложение. Обычно так плохо, что диалог Exception обычно не может рисовать сам. Я должен убить его из диспетчера задач. Иногда Исключение читается. (Я также подтвердил исключение, присоединившись к исполняемому exe с Visual Studio). Это: «System.Runtime.InteropServices.COMException (0x8001010D): исходящий вызов не может быть выполнен, так как приложение отправляет синхронный вход».
Что действительно бесполезно с моим разумом, так это то, что мое приложение имеет множественное обнаружение экземпляра с использованием мьютекса, и если существующий экземпляр работает, мой собственный код (скомпилированный) использует собственное ключевое слово AppActivate VB.NET, и это НЕ сбой моего приложение. Он активирует исполняемый экземпляр и выходит из избыточного экземпляра, как и ожидалось.
Проблема, по-видимому, срабатывает только при помощи приложения AppSctivate cscript/wscript. Я написал 3-футовый .vbs, чтобы подтвердить это. Это повторяемо.
Есть ли способ уловить или избежать этого в моем скомпилированном приложении?
Неуправляемые серверы уязвимы, другое приложение может связаться с ним и сделать его неправильным, чтобы затронуть все * подключенные клиенты. Если у вас нет исходного кода для сервера, вы вряд ли сможете это сделать. Мы, конечно, не можем. –
Да, сервер - это собственная третья сторона, которой я не контролирую. Я создаю какие-то огромные gotchas, обертывая это в try/catch? Это поможет? – amonroejj
И я все равно хотел бы узнать, что отличает AppActivate VB.NET от AppActivate Vbscript. – amonroejj