У нас следующая ситуация:
COM-сервер ATL (вне процесса, EXE), на котором размещаются COM-объекты с точками подключения.
Эти объекты «живут внутри» одного (exe) процесса и запускают события (используя методы Fire_ *), чтобы другие процессы (например, приложение .NET GUI в другом процессе, «клиент» сервера ATL EXE) ) может ловить эти события и реагировать соответственно.
В настоящее время у нас есть приложение .NET (Windows Forms), которое является клиентом сервера ATL. При запуске (двойной щелчок) он присоединяет некоторые делегаты (обработчики событий) к событиям COM-объектов (точкам подключения), размещенным на сервере ATL. Каждый раз, когда событие запускается с сервера ATL, клиент .NET обычно отображает некоторую информацию в главном окне или открывает новое окно для взаимодействия с пользователем.
Это решение основано на следующей статье: http://www.codeproject.com/KB/COM/cominterop.aspx#ConnectionPoints (обработка событий COM-.NET).
В приведенном выше сценарии предполагается, что пользователь фактически дважды щелкнул клиент .NET (exe) до запуска событий, то есть - явно открыл приложение .NET. Если клиент .NET не открыт (не создан), то запущенное событие «потеряно» - ни один клиент не обработал его.
Мы хотим следующую ситуацию:
Когда событие запускается с сервера ATL, немедленно должно появиться окно (всплывающее окно), с которым пользователь может взаимодействовать (например: заполните текстовое поле электронной почты и нажмите «ОК»), без необходимости запуска Клиент .NET явно до всего. Таким образом, пользователь будет уведомлен о каждом событии и может интерактивно реагировать на него.
Мы рассмотрели вариант размещения клиентского приложения .NET как dll на сервере ATL, но я читал, что отображение GUI из EXE-файла ATL - это большое «НЕТ-НЕТ» (любой GUI, не только. NET GUI, такой как WinForms или WPF).
Возможно ли это, когда сервер и клиент работают в двух разных процессах (а "клиент" еще не запущен)?
Кто-нибудь сталкивался с такой же проблемой? было ли это решено (и как ...)?
Спасибо; -)
Омри
Есть ли решение для этого?