Помогите разобраться в COM II
Добавлено: 06 окт 2005, 18:40
Всем привет. Продолжаю бороздить COM и иже с ним. Недавно вот задался вопросом стыковки передачи объета OLE из *.exe(vc++) в VBS.
Оказывается все завязано на интерфейс IDispatch объекта. Если VBS получает указатель на данный интерфейс, то далее им можно пользоваться применяя следующий синтаксис.
Затем я стал раскручивать данную возможность. Для примера создавал в exe внутренний класс, создавал его объект здесь же и передавал его IDispatch* в VBS и т.д.
Но недавно сложилась такая ситуация. Мне было необходимо достать объект Internet Explorer Document по HWND. Знакомый подкинул полезную статейку
Теперь получив один интерфейс я хотел бы получить нужный мне IDispatch, но к сожалению у меня не вышло. Одним из моих последних варианто было.
На все мои попытки на строке VBS
вылетает ошибка.
Пожалуйста подскажите где я ошибся.
Оказывается все завязано на интерфейс IDispatch объекта. Если VBS получает указатель на данный интерфейс, то далее им можно пользоваться применяя следующий синтаксис.
Код: Выделить всё
obj_by_idisp.method
Но недавно сложилась такая ситуация. Мне было необходимо достать объект Internet Explorer Document по HWND. Знакомый подкинул полезную статейку
Там через smart указатель IHTMLDocument2 получаем этот интерфейс.
Теперь получив один интерфейс я хотел бы получить нужный мне IDispatch, но к сожалению у меня не вышло. Одним из моих последних варианто было.
Код: Выделить всё
CComPtr<IHTMLDocument2> spDoc;
...
IDispatch *disp4html;
hres=((IUnknown*)(spDoc.p))->QueryInterface(IID_IDispatch,(void**)&disp4html);
Код: Выделить всё
obj_by_idisp.close
Пожалуйста подскажите где я ошибся.