Как я могу отправлять сообщения (строки) из приложения Win32 в программу Javascript, запущенную в существующем окне IE? - PullRequest
1 голос
/ 26 февраля 2009

У меня есть значок в системном трее, который принимает входящие телефонные звонки. Когда поступает звонок, я хочу отправить номер телефона в веб-приложение, которое делает вещи по этому номеру телефона. Мы можем запустить веб-приложение с номером телефона в строке запроса, но если я буду открывать новое окно для каждого вызова, оно будет сбивать компьютер пользователя с большим количеством экземпляров браузера, не сохраняя местоположение / размер, который пользователь переместил. окно браузера, и займет больше времени, чем просто обновить страницу. Вместо этого я хотел бы заставить приложение Win32 повторно использовать то же самое окно браузера IE и просто отправлять веб-приложению новый номер телефона каждый раз, когда поступает новый вызов. Я предполагаю, что каким-то образом отправляю сообщение Windows или как-то инструктирую браузер IE для запуска определенного события JavaScript с некоторыми данными? Я понимаю, почему выполнение обратного (javascript для Win32) было бы проблемой безопасности, но это просто отправка сообщения из Win32 в javascript.

Так что я специально НЕ спрашиваю, как сделать то, что ответили на этот вопрос: Как взаимодействовать между веб-приложением и приложением Windows Form

Этот пользователь спрашивал, как запустить приложение Win32 из Javascript и передать данные в приложение win32. Грубо говоря, мне нужно сделать наоборот. Мне нужно отправить данные из приложения Win32 в работающую программу JavaScript.

Обратите внимание, что я не спрашиваю, как запустить одно окно IE с аргументами для Javascript один раз; Я могу легко сделать это с помощью строк запроса. Я спрашиваю, как я могу / могу ли передать данные из запущенного приложения Win32 вне браузера в работающее приложение Javascript в окне браузера.

Ответы [ 5 ]

0 голосов
/ 26 февраля 2009

Как насчет того, чтобы написать элемент управления active-x, который вы создаете в браузере с помощью Javascript. По сути это плагин для браузера Explorer. Та же идея для Mozilla и т. Д., За исключением того, что они используют другую структуру плагина. Это позволит вам поддерживать другие браузеры в будущем.

Элемент управления может взаимодействовать с вашим приложением win32 с помощью канала или сокета или любого другого типа межпроцессного взаимодействия и затем становится доступным как объект Javascript.

0 голосов
/ 26 февраля 2009

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

Единственный недостаток заключается в том, что вместо немедленной задержки отображается информация, отображаемая в браузере.

0 голосов
/ 26 февраля 2009

Поскольку вы можете отправить номер телефона на сайт с помощью строки запроса, все, что вам действительно нужно сделать, это попросить IE перейти на URL-адрес по вашему выбору.

Для этого вы можете использовать то, что в этой статье базы знаний, чтобы помочь вам найти экземпляр IE, к которому вы хотите подключиться.

http://support.microsoft.com/kb/299356/de

Конечно, все это в Visual J ++, но поскольку вы взаимодействуете с помощью COM Automation, вызовы должны легко переводиться.

Получив экземпляр IE (в форме реализации интерфейса IWebBrowser2), вы можете просто вызвать метод Navigate или Navigate2 с нужным URL-адресом (с номером телефона в строке запроса, конечно).

0 голосов
/ 26 февраля 2009

Вам нужен способ Как подключиться к работающему экземпляру Internet Explorer (предостережение: это на Java, но вы должны легко его перевести на C #).

Или вы можете перечислить окна верхнего уровня, чтобы найти конкретный экземпляр IE, а затем Получить IHTMLDocument2 из HWND (это в C ++, так что вам может потребоваться некоторое взаимодействие с Win32; вы можно найти все необходимые объявления на PInvoke.net ).

Если вы ищете в дружественной локальной поисковой системе Как подключиться к работающему экземпляру Internet Explorer , вы найдете гораздо больше информации.

Как только вы попадете в документ, вы можете либо вызвать функцию JavaScript через интерфейс сценариев документа, либо просто перейти к ней на своей странице и передать номер телефона в качестве параметра.

0 голосов
/ 26 февраля 2009

Вы должны быть в состоянии найти дескриптор окна IE, а затем отправлять ему сообщения (возможно, нажатия клавиш). Используйте немного javascript, чтобы захватить все действия нажатия клавиш, и у вас есть очень простой способ для передачи информации.

Это будет непросто (дьявол кроется в деталях - проблемы фокуса и т. Д.), Но это должно быть возможно.

-Adam

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...