[IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口

简介:
从IE7 开始, IE 支持多页面(Tab)浏览。 而IE 的WebBrowser 控件也相应的多页面浏览开发接口。 出于向下兼容考虑,该接口在缺省情况下是被屏蔽的。 假设你用WebBrowser 控件开发一个浏览器  MyTabBrowser, 你会发现右键菜单的"在新标签页中打开" (Open in New Tab)项是灰色的(如下图)。
打开这个功能,你需要在注册表里面创建以自己文件名为值的DWORD值:
HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
     SOFTWARE
          Microsoft
               Internet Explorer
                    Main
                         FeatureControl
                              FEATURE_TABBED_BROWSING
                                   MyTabBrowser.exe= 0x00000001
 
多页面浏览开发接口开启之后,你的程序MyTabBrowser 就可以和IE一样响应"Open in New Tab”的请求了。 IE 定义了以下3种动作为"Open in New Tab"的请求
1)用户在右键菜单中点击“Open in New Tab” 项
2)  用户用鼠标中键点击链接
3)用户按住Ctrl 键点击链接
该请求会激发 DWebBrowserEvents2::NewWindow3 事件, 该事件的参数dwFlags 标示了这个请求的类型:
NWMF_FORCEWINDOW: 在新窗口中打开链接. 
NWMF_FORCETAB: 在新Tab 中打开链接. 
以下是简单的代码示例如何处理该事件:
view plaincopy to clipboardprint?
void __stdcall OnEventNewWindow3(IDispatch **ppDisp, VARIANT_BOOL *Cancel, DWORD dwFlags, BSTR bstrUrlContext, BSTR bstrUrl)   
{   
    if (dwFlags & NWMF_FORCETAB) // Open in a new Tab   
    {   
        CComPtr<IWebBrowser2> spBrowser = OpenNewTab(); // Create a new tab and return the IWebBrowser2 pointer   
        if (spBrowser)   
        {   
            HRESULT hr = spBrowser->QueryInterface(IID_IDispatch, (void**)ppDisp);   
            *Cancel = SUCCEEDED(hr) ? VARIANT_FALSE : VARIANT_TRUE;   
        }   
    }   
    else if (dwFlags & NWMF_FORCEWINDOW) // Open in a new Window   
    {   
       .....   
    }   
 } 
 
 本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/273694,如需转载请自行联系原作者



相关文章
C#编程-144:通过注册表修改IE主页
C#编程-144:通过注册表修改IE主页
C#编程-144:通过注册表修改IE主页
|
安全 JavaScript 编译器
QT调用IE浏览器COM插件完成网页浏览
QT调用IE浏览器COM插件完成网页浏览
499 0
QT调用IE浏览器COM插件完成网页浏览
|
JavaScript C# 前端开发
c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2
原文:c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2 可以实现例如通过应用程序操作google搜索,用户输入要搜索的内容,然后在google中搜索;可以自动点击网页上的按钮等功能     1.
2569 0
|
JavaScript 前端开发 测试技术
modern.IE – Web 开发必备的 IE 浏览器测试工具
  modern.IE 是微软推出的一个开发人员中心,提供免费的工具和资源,旨在使您能够花更少的时间来测试各种版本的 Internet Explorer,并留出更多时间在现代 Web 上构建重要的内容。
922 0
|
JavaScript 程序员 前端开发
在IE下的JS编程需注意的内存释放问题
前段时间写jsfw [ JavaScript FrameWork ],写完后发现每刷新一次内存就升大几百K,用一个小时IE内存占用高到一两百M。看了以下文章,五个分类我犯了四个,问题是找到了,不过改起来很累 ---------------------------以下文章不知道是从哪Copy来的------------------- 在IE下的JS编程中,以下的编程方式都会造成即使关闭IE也无法释放内存的问题,下面分类给出:1、给DOM对象添加的属性是一个对象的引用。
|
5月前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常