WebBrowser设置为ie8模式

参考 http://www.hanzhipan.com/?p=2203


项目里面用到了WebBrowser控件,使用它来打开网页,发现以前看着正常的网站在WebBrowser控件中显示样式错了。一直以为WebBrowser控件中的ie版本和直接打开ie效果是一样的,但是事实并非如此,那么WebBrowser控件中ie版本是多少呢,如果换WebBrowser控件中的ie版本呢?


发现一个msdn的帖子,明确表示webbrowser调用的就是本机IE9,并且webbrowser默认就是运行在IE7 mode下,除非你改变它。

如何让WebBrowser引用IE 8 呢?可以通过注册表的新增键值实现

打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

在其中新增一个DWORD值。键值名称写入你的程序名,然后在数值数据填入1f40。也就是IE8

其他版本请参考  http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version


注意:32位和64位注册表是有区别的,用到时再查吧,

下面一段代码实现了设置程序的WebBrowser为ie8模式。我现在用到的只是32位,以后用到64位再修改吧。

bool SetWebBrowserIE8Mode()
{
    CRegKey rk;
    LPCTSTR lp = _T("SOFTWARE\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_BROWSER_EMULATION");
    if (rk.Open(HKEY_LOCAL_MACHINE, lp) != ERROR_SUCCESS)
        return false;
    if (rk.SetDWORDValue(_T("LMTPlatForm.exe"), 0x1F40) != ERROR_SUCCESS)
        return false;

    return true;
}





你可能感兴趣的:(WebBrowser设置为ie8模式)