У меня есть простой ATL ActiveX Control, реализованный на C ++.
Если я вставлю элемент управления в веб-страницу с чем-то вроде:
<object id="api"classid="CLSID:<guid here>"height=400
width=800></object>
Я знаю, что могу получить HWND от контроля в m_hWnd
если я поставлю m_bWindowOnly = true;
в моем конструкторе Coclass. Это работает хорошо.
Если бы я попытался создать экземпляр этого элемента управления ActiveX из Javascript, процесс выглядит так:
var object = new ActiveXObject("registeredControlString");
Но я не получаю HWND, и я не уверен, как я мог бы вставить это в DOM.
Мой вопрос:
В каких ситуациях я получу HWND, на который я могу сослаться с пульта управления?
Вы не получите hwnd, создавая из нового ActiveXObject, так как ваш CComControl :: CreateControlWindow () вызывается только во время активации на месте, а у javascript просто нет системы типов для поддержки интерфейсов COM, необходимых для активации на месте.
Если ваш элемент управления будет использоваться в качестве COM-сервера без пользовательского интерфейса (как здесь в вашем скрипте), разработайте ActiveX для работы без дескриптора окна.
Других решений пока нет …