描述:
我用ATL创建一个BHO,然后试图在setsite中获得父框架窗口,代码如下:
CComQIPtr<IWebBrowser2,&IID_IWebBrowser2>m_spWebBrowser2;
m_spWebBrowser2=pUnkSite;
if (m_spWebBrowser2==NULL)
return E_INVALIDARG;
IOleWindow *spOleWindow;
if (SUCCEEDED(pUnkSite->QueryInterface(IID_IOleWindow,(LPVOID*)&spOleWindow)))
{
spOleWindow->GetWindow(&m_hwndParent);
spOleWindow->Release();
}
浏览器指针可以获得,可是spOleWindow总是为空,这是为什么呢?
后来我又在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Toolbar\下面写入CLSID,结果还是不行,请帮帮我!
解决方案1:
QueryInterface不成功,说明不支持那个接口
解决方案2:BHO's are usually run by standalone InternetExplorer. It is NOT an ActiveX controland does not implement IOleWindow. Instead, use IWebBrowser2::get_HWND
您可能想查找下面的文章:
- 基于ATL的应用(BHO中如何使用MFC的类CString,CFileDialog等)?
- 高分求教:BHO技术拦截Flash,但写入的js代码无效!
- 关于BHO拦截按键的问题
- 想BHO只加载ie,不加载我的电脑,但出错atlbaseh中5668行,ATLASSERTpM->m_hInst!=NULL;
- VC++开发BHO插件—定制你的浏览器
- BHO的问题
- 在一个ie(BHO,band)插件中如何控制ie的弹出窗口的。
- 什么工具可以反编译一个DLL,这个dll是bho
- BHO中DIID_HTMLElementEvents2在哪个头文件中定义?
- 在BHO中的DISPID_DOCUMENTCOMPLETE事件中取不到IHTMLDocument2的属性