2012-02-21 150 views
0

我想从我的BHO在C#中完成一个新选项卡。 Process.Start(u)打开一个新窗口,而不是一个标签,并调用默认浏览器,这可能不是IE。如何从BHO打开新选项卡?

我想打开新标签页,提示用户下载并安装最新版本的BHO。

+0

我知道IE7不支持这个。有没有一个特定的IE版本? – 2012-02-21 01:44:15

回答

3

从BHO执行此操作的正确方法是使用IWebBrowser2::Navigate2()doc link)并通过navOpenInNewTabdoc link)。

互操作exists at pinvoke.net,所以你可以从那开始。

您可以通过以下步骤从您的网站的IWebBrowser2的指针:

  1. 的QueryInterface()你的网站IID_IServiceProvider。
  2. QueryService()SID_STopLevelBrowser,IID_IServiceProvider的IServiceProvider。
  3. QueryService()SID_SWebBrowserApp的最高级别IServiceProvider,IID_IWebBrowser2。

...但我不知道如何在C#中做到这一点。

+0

谢谢。我没有意识到可以使用TargetFrameName来打开一个新的选项卡:http://msdn.microsoft.com/en-us/library/cc491275%28v=vs.90%29.aspx它是一个“本机”C#方法,不需要做任何调整 – Julien 2012-02-22 00:50:16

+0

通过定位_blank或其他类似的东西,你可能会得到一个新标签,但用户可以在一定程度上配置该行为,因此它可能是一个新窗口。 – 2012-02-22 01:05:41