Реализация ActiveX Control для веб-браузера - PullRequest
0 голосов
/ 17 февраля 2012

Мое требование заключается в разработке элемента управления ActiveX, который может отправлять поток байтов на последовательный порт.Элемент управления ActiveX должен предоставлять только одну функцию, такую ​​как

SendData(char* data, int nLen, int nPort)

. Эту функцию можно вызвать, нажав кнопку, разработанную в Java, отображаемую в Internet Explorer (как 32-, так и 64-разрядную).Я смущен, должен ли я пойти с ActiveX без окон управления, используя MFC / ATL или Browser Helper Objects.В будущем мне может понадобиться поддержка Firefox.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 20 февраля 2012

Хотя BHO будет работать, ActiveX будет лучше соответствовать вашим требованиям.BHO очень похожи на ActiveX - они оба являются нативным или управляемым кодом, работающим в окне браузера.Разница в том, что BHO доступен для всех страниц (он создается при создании вкладки браузера), а ActiveX, который не является BHO, создается при создании кода Javascript на странице (или с тегом ).время ActiveX - это страница.

ATL - лучший выбор. Используйте мастер VS и создайте внутрипроцессорный сервер COM на основе ATL. Затем добавьте объект COM. Так как вы хотите вызывать его из HTMLубедитесь, что это двойной интерфейс (т. е. производный от IDispatch). Добавьте нужный метод в файл IDL. В COM соглашение о вызовах для строковых аргументов - BSTR, а стандартное соглашение о массиве - SAFEARRAY.Вызов метода из вашего кода Javascript?

Зависит от того, как вы хотите создать экземпляр объекта со страницы HTML.или вы можете использовать Javascript: var myobj = новый ActiveXObject ( ProgId ).Оба метода действительны.

...