繁体   English   中英

Internet Explorer插件工具栏按钮错误

[英]Internet Explorer Addon Toolbar Button Error

我目前正在用C#开发IE工具栏按钮,该按钮应该能够获取当前选项卡的内容并使用它。 但是,每当单击按钮时,都会调用IObjectWithSite.SetSite函数(我的代码将在末尾发布)并返回以下错误:

无法将类型为'System .__ ComObject'的COM对象转换为接口类型SHDocVw.IWebBrowser2'。 该操作失败,因为在COM组件网络上对具有IID'的接口的QueryInterface调用

加载网站后,该功能可以正常工作,但是仅当单击工具栏中的按钮时,才会引发此错误。 如前所述,先调用SetSite函数,然后再调用IOleCommandTarget.Exec函数。

所以,我想我的问题是:我该如何转换传递给SetSite函数的对象,以便可以访问Internet Explorer当前打开的选项卡上的文档?

我当前与这两个功能有关的代码如下:

int IObjectWithSite.SetSite(object site)
{
    String display = "";

    try { browser = (IWebBrowser2)site;}
    catch (Exception e) { display += e.Message + "\r\n"; }

    System.Windows.Forms.MessageBox.Show(display);

    return 0;
}


int IOleCommandTarget.Exec(IntPtr pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
{
    if (form == null)
    {
        form = new SomeForm();
        form.InputText = "";
    }
    form.ShowDialog();
    return 0;
}

提前致谢。

从工具栏按钮站点查询IWebBrowser2的记录方法是从站点查询IServiceProvider,然后从查询服务查询IID_IWebBrowserApp。

Exec函数在实际执行之前会调用SetSite。 为了解决此问题,并使Exec函数仍然能够访问有关浏览器的信息,SetSite和GetSite函数应该存在于Exec函数访问的单独类中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM