Всем привет. Продолжаю бороздить COM и иже с ним. Недавно вот задался вопросом стыковки передачи объета OLE из *.exe(vc++) в VBS.
Оказывается все завязано на интерфейс IDispatch объекта. Если VBS получает указатель на данный интерфейс, то далее им можно пользоваться применяя следующий синтаксис.
Затем я стал раскручивать данную возможность. Для примера создавал в exe внутренний класс, создавал его объект здесь же и передавал его IDispatch* в VBS и т.д.
Но недавно сложилась такая ситуация. Мне было необходимо достать объект Internet Explorer Document по HWND. Знакомый подкинул полезную статейку
Там через smart указатель IHTMLDocument2 получаем этот интерфейс.
Теперь получив один интерфейс я хотел бы получить нужный мне IDispatch, но к сожалению у меня не вышло. Одним из моих последних варианто было.
Код: Выделить всё
CComPtr<IHTMLDocument2> spDoc;
...
IDispatch *disp4html;
hres=((IUnknown*)(spDoc.p))->QueryInterface(IID_IDispatch,(void**)&disp4html);
На все мои попытки на строке VBS
вылетает ошибка.
Пожалуйста подскажите где я ошибся.
Всем привет. Продолжаю бороздить COM и иже с ним. Недавно вот задался вопросом стыковки передачи объета OLE из *.exe(vc++) в VBS.
Оказывается все завязано на интерфейс IDispatch объекта. Если VBS получает указатель на данный интерфейс, то далее им можно пользоваться применяя следующий синтаксис.
[code]
obj_by_idisp.method
[/code]
Затем я стал раскручивать данную возможность. Для примера создавал в exe внутренний класс, создавал его объект здесь же и передавал его IDispatch* в VBS и т.д.
Но недавно сложилась такая ситуация. Мне было необходимо достать объект Internet Explorer Document по HWND. Знакомый подкинул полезную статейку
[quote] [url]http://support.microsoft.com/default.aspx?scid=kb;en-us;249232[/url][/quote]
Там через smart указатель IHTMLDocument2 получаем этот интерфейс.
Теперь получив один интерфейс я хотел бы получить нужный мне IDispatch, но к сожалению у меня не вышло. Одним из моих последних варианто было.
[code]
CComPtr<IHTMLDocument2> spDoc;
...
IDispatch *disp4html;
hres=((IUnknown*)(spDoc.p))->QueryInterface(IID_IDispatch,(void**)&disp4html);[/code]
На все мои попытки на строке VBS
[code]
obj_by_idisp.close
[/code]
вылетает ошибка.
Пожалуйста подскажите где я ошибся.