[英]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.