1

我正在为 Internet Explorer 构建浏览器扩展。目标是让用户能够单击工具栏按钮并在用户目前可能正在访问的任何站点上注入 html。

我的班级正在实现 IOleCommandTarget 和 IObjectWithSite 并且我设法通过向注册表添加一些信息来显示工具栏按钮,但是我无法访问 html 文档以便我可以操作它。一些调试表明,我首先在 IObjectWithSite.SetSite 方法中结束,然后在 IOleCommandTarget.Exec 方法中结束。如果我将解决方案实现为 BHO,我可以在 SetSite 方法中订阅 webbrowser 事件,但是当我尝试在 Exec 方法中执行相同操作时,转换为 WebBrowser 失败。我如何构建这个非常小而简单的扩展?

4

1 回答 1

1

工具栏.h

CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> m_spWebBrowser2;

工具栏.cpp

STDMETHODIMP Toolbar::SetSite(IUnknown *pUnkSite)
{
    HRESULT hr;
    CComQIPtr<IServiceProvider> sp = pUnkSite;
    if(!m_spWebBrowser2 && sp)
    {
        //BHO immediately eotjiman ToolBar does not get it to the Obtained through QueryService.
        sp->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&m_spWebBrowser2);
    }
    else
    {
        m_spWebBrowser2.Release();
        return E_POINTER;
    }

    .
    .
    .
}

我希望它有帮助:)

于 2012-08-06T08:13:12.467 回答