【问题标题】:Toolbar button that injects HTML in Internet Explorer在 Internet Explorer 中注入 HTML 的工具栏按钮
【发布时间】:2023-03-11 08:29:01
【问题描述】:

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

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

【问题讨论】:

  • 首先调用 SetSite() 是正确的。您应该能够在您的站点中查询与您的 BHO 相同的浏览器对象。您能否为您的 SetSite() 实现发布(最少数量)您的代码,并指出它在哪里失败?

标签: internet-explorer plugins com-interop


【解决方案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;
    }

    .
    .
    .
}

希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多