我目前正在用 C# 开发一个 IE 工具栏按钮,它应该能够获取当前选项卡的内容并使用它。但是,每当单击按钮时,都会调用 IObjectWithSite.SetSite 函数(我的代码将在最后发布)并返回以下错误:
无法将类型为“System.__ComObject”的 COM 对象转换为接口类型 SHDocVw.IWebBrowser2”。此操作失败,因为对具有 IID 的接口的 COM 组件上的 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;
}
提前致谢。