Какой хороший способ подключения службы Windows с интерактивным окном (HWND)?
У меня есть две технологии Windows, которые я бы хотел использовать вместе: TSP (поставщик услуг TAPI) и API, обернутый вокруг некоторого оборудования. API принимает запросы синхронно, но асинхронно возвращает результат успеха / неудачи / состояния, посылая сообщения в переданный HWND.
Насколько я понимаю, проблема в том, что, поскольку TSP работает как служба Windows, его контекст выполнения не имеет доступа к большинству интерактивных функций Windows. Поэтому, как бы мне ни хотелось напрямую связать их вместе, я не могу - насколько я могу судить, у TSP нет (и, действительно, не может) HWND для API, на который отправляются сообщения.:-(
Для кого-то вроде меня, который когда-либо программировал только Windows-контент на одной стороне служебной / интерактивной линии, все это немного сногсшибательно. Но Windows такова, что должно быть несколько разумных способов передачи сообщений через эту линию, конечно?
Как бы вы посоветовали мне попробовать соединить эти две вещи? Спасибо!:-)
3 ответа
Служба может создать "окно сообщения" (окно, родитель которого является HWND_MESSAGE) и запустить насос сообщений. Окно сообщений не имеет пользовательского интерфейса и поэтому не взаимодействует с рабочим столом.
Я бы предложил использовать MSMQ для передачи сообщений между двумя различными приложениями. Я могу быть немного громоздким, но это сработает.
Ваш сервис может создать именованный объект сопоставления файлов в Global
пространство имен объекта, и тогда ваша интерактивная программа сможет открыть это отображение файла. Затем вы можете общаться через общую память.