Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Приём и отправка оконных сообщений


Автор: DrBoom 31.8.2011, 10:58
Суть задачи:
Есть приложение с единственным окном. Есть скрытый элемент управления (исп. PictureBox), который сабклассируется.
При запуске второй (и более) копии программы мы получаем хэндл скрытого элемента первой копии программы (мы его сохраняем в реестре HKLM).
Получив хэндл, отправляем сообщение WM_USER or X. Запущенная копия программы, получив это сообщение отправляет соответствующий ответ и выполняет некое действие, нужное нам. Получив ответ от первой вторая (и более) копии завершаются. 

Для работы с UAC добавили ChangeWindowMessageFilter и ChangeWindowMessageFilterEx для Win Vista и Seven соответственно.
Запускает из-под админа и простого пользователя, с включенным и выключенным UAC. Всё прекрасно работает. 

Теперь создаём ActiveX DLL. Этот ActiveX мы запускаем на локальном веб-узле в IIS, используя ASP-сценарий.
Отправляем точно такую же мессегу в запущенное приложение (хэндл опять же получаем через реестр).
И тут в упор не хочет работает. ЧЯДНТ? Как заставить отправлять\получать сообщения?

Пробовал регистрировать свои мессеги (RegisterWindowMessage) и добавлять в фильтер их.
Бесполезно. Что интересно, одни и те же имена мессег, зарегистрированные в приложении и в ActiveX, запускаемом в ASP, имеют разные номера.
Ладно, начал передавать в ActiveX DLL зарегистрированные программой мессеги через всё тот же реестр.
Отправляем их -- результат тот же, результата нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)