【发布时间】:2020-09-27 09:54:20
【问题描述】:
您好,我正在用 C# 为 IE 开发 BHO。当用户单击我的扩展按钮时,我想在新选项卡中打开一个 URL。
我正在使用 IOleCommandTarget 接口方法来捕获点击事件。但是这些方法并没有提供任何可以用来调用导航方法的浏览器对象。所以,必须尝试下面提到的其他方法。
public int QueryStatus(ref Guid pguidCmdGroup, uint cCmds, OLECMD[] prgCmds, IntPtr pCmdText)
{
try
{
InternetExplorer ie = null;
SHDocVw.ShellWindows allBrowser = new SHDocVw.ShellWindows();
int browserCount = allBrowser.Count - 1;
while (browserCount >= 0)
{
ie = allBrowser.Item(browserCount) as InternetExplorer;
if (ie != null && ie.FullName.ToLower().Contains("iexplore.exe"))
{
ie.Navigate2(SNXFileNames.ActivationPage, 0x1000);
break;
}
browserCount--;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
return 0;
}
此方法在开发机器中可以找到,但在非开发机器中会出现拒绝访问错误。
System.UnauthorizedAccessException:从具有 CLSID{} 的组件检索 COM 类工厂失败,原因是以下错误:80070005 访问被拒绝。
【问题讨论】:
标签: c# internet-explorer-11 bho