0

问题 - 想要在现有 IE 框架内以正确的“完整性级别”启动新的 IE 选项卡。就像 IELaunchURL() 所做的一样,它为我们提供了具有正确完整性级别的新 IE 实例。

我目前在做什么?检测现有 IEFrame 的 IWebBrowser2,然后使用 URL 调用 IWebBrowser2->Navigate2()。为新启动的选项卡获取 IWebBrowser2 感到震惊

4

1 回答 1

1

在 IWebBrowser2::Navigate2 方法的参数“标志”中使用 navOpenInNewTab (0x0800)。

请注意,您必须传递类型为 VT_I4 的 Variant。

文档:Navigate2 方法

如果要获取新选项卡的 IWebBrowser2 接口指针,只需按照获取第一个选项卡所做的操作即可。可用的方法很多。

如果您只是通过某种枚举获得所有 IWebBrowser2,则可以通过检索 URL (IHTMLDocument2::get_URL) 来检测新的 IWebBrowser2

如果 URL 条件不够,您可以缓存托管 IWebBroser2 对象的窗口列表(IWebBrowser2 ==> IServiceProvider 的 QueryInterface,IServiceProvider ==> IOleWindow 的 QueryService,IOleWindow ==> GetWindow)

这些窗口有一个“TabWindowClass”(使用 Internet Explorer 9...您的里程可能会有所不同)。如果您构建一个新的 IWebBrowser2 列表(由新选项卡窗口托管的列表)就是新选项卡 :-)

于 2013-11-06T16:40:38.577 回答