winfrom中的webbrowser内核版本修改

vs2008,winfrom中的webbrowser  其内核默认为IE7,当网页中存在IE7不支持的属性时回报错。

     private void Form1_Load(object sender, EventArgs e)
        {

            SetWebBrowserFeatures(11);
        }

 static void SetWebBrowserFeatures(int ieVersion)
        {
            // don‘t change the registryif running in-proc inside Visual Studio
            if (LicenseManager.UsageMode != LicenseUsageMode.Runtime) return;
            //获取程序及名称
            var appName = System.IO.Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
            //得到浏览器的模式的值
            UInt32 ieMode = GeoEmulationModee(ieVersion);
            var featureControlRegKey = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\";
            //设置浏览器对应用程序(appName)以什么模式(ieMode)运行
            Registry.SetValue(featureControlRegKey + "FEATURE_BROWSER_EMULATION", appName, ieMode, RegistryValueKind.DWord);
            // enable the features which are "On" for the full Internet Explorer browser  //不晓得设置有什么用
            Registry.SetValue(featureControlRegKey + "FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION", appName, 1, RegistryValueKind.DWord);
        }

        static int GetBrowserVersion()
        {
             int browserVersion = 0;
             using (var ieKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer", RegistryKeyPermissionCheck.ReadSubTree, System.Security.AccessControl.RegistryRights.QueryValues)) { var version = ieKey.GetValue("svcVersion");
                 if (null == version)
                 {
                     version = ieKey.GetValue("Version");
                     if (null == version) throw new ApplicationException("Microsoft Internet Explorer is required!");
                 }
                 int.TryParse(version.ToString().Split(‘.‘)[0], out browserVersion); } //如果小于7
             if (browserVersion < 7)
             { throw new ApplicationException("不支持的浏览器版本!"); } return browserVersion;
         }

        static UInt32 GeoEmulationModee(int browserVersion)
        {
             UInt32 mode = 11000; // Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 Standards mode.
             switch (browserVersion) {
                 case 7: mode = 7000;break;
                 case 8: mode = 8000;break;
                 case 9: mode = 9000;break;
                 case 10: mode = 10000;break;
                 case 11: mode = 11000;break;
             }
             return mode;
         }

原文地址:https://www.cnblogs.com/lq0418/p/10312693.html

时间: 2024-08-06 03:11:24

winfrom中的webbrowser内核版本修改的相关文章

调整WebBrowser的默认浏览器内核版本

原文出自:https://my.oschina.net/Tsybius2014/blog/492107 注:这个是写.net控件,其实delphi是一样的.作者已经写的比较全面了,我只是做了一点修改 当前浏览器使用的内核,可以通过访问下面这个网站获取:http://ie.icoa.cn/ 我的IE版本为IE8,在使用IE登录页面的时候,使用的内核是IE8,登录该网站的截图如下: 但是当我用WebBrowser登录该页面时,显示使用的内核却是IE7: 上图的程序是一个测试程序,仅包含一个WebBr

指定Webbrowser控件所用IE内核版本

如果电脑上安装了IE8或者之后版本的IE浏览器,Webbrowser控件会使用IE7兼容模式来显示网页内容.解决方法是在注册表中为你的进程指定引用IE的版本号. 比如我的程序叫做a.exe 对于32位程序 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION 对于64位程序 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432No

4. sudo,PATH环境变量,修改字符集,ntpserver,加大文件描述符,隐藏内核版本,锁定关键系统文件

1   命令:  visudo 98gg      98行 yy           复制当前行 p             粘贴 改成   zhang   ALL(ALL)  NOPASSWD:ALL 2  修改PATH环境变量路径 PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径.比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bi

Ubuntu 中查看内核版本和系统版本的三个命令

一.查看内核版本:cat /proc/version 二.查看内核版本:uname -a 三.查看系统版本:lsb_release -a

迭代式开发中的禁忌:跨版本修改

最近在做一个项目,这个项目一开始采用的是迭代式的开发模式.但是现在已经乱成一团,乱着乱着开发就变成了测试驱动的开发. 说好的1.0版,改着改着都不知道这是什么版.数据库的结构变化很大.接口规范变化很大.需求变化很多.你可能会想,就算搞个很厉害的架构师,也不见得系统就稳定不变. 是的,确实如此.但是问题是每一次的大改动,根本就是十分随意却没有任何记录的行为.仅靠一个svn(也没用上分支),谁能弄明白到底改了什么鬼? 为什么迭代式的开发,最终变成了依靠测试人员的测试驱动开发?后来我想了一下,发现根本

设置WebBrowser内核渲染模式

前不久开发一个项目,是采用WebBrowser作为外壳,加载网页,由于网页是采用html5来进行开发的,当通过WebBrowser加载网页后,html5中的特性 都无法正常显示,而通过ie浏览器打开时能够正常显示,经过研究发现WebBrowser默认是通过ie7的兼容模式来进行渲染,因此html5的特性无法显示.那么 我们该如何更改WebBrowser内核的渲染模式呢? Internet Explorer Architecture 首先了解一下IE的整个架构,如下图 ShDocVw 及以下就是W

Delphi中代替WebBrowser控件的第三方控件

原文地址:http://blog.csdn.net/nanfeiyannan/article/details/7341492 这几天,接触到在delphi中内嵌网页,用delphi7自带的TWebBrowser控件,显示的内容与本机IE8显示的不一样,但是跟装IE8之前的IE6显示一个效果.现在赶脚是下面两个原因中的一个: 1.Navigate这个方法用的有点问题,里面的参数不同及Navigate2等不同方法,调用的IE内核版本不同 2.这个自带的控件用着不爽,直接换一个第三方控件 对于第一点,

u-boot中分区和内核MTD分区关系

一.u-boot中环境变量与uImage中MTD的分区关系 分区只是内核的概念,就是说A-B地址放内核,C-D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等. 一般我们只需要分3-4个区,第一个为boot区,一个为boot参数区(传递给内核的参数),一个为内核区,一个为文件系统区.(但是有的内核就会有很多分区,比如内核参数会有两个,还有会Logo的地址) 而对于bootloader中只要能将内核下载到A~B区的A地址开始处就可以,C~D区的C起始地址下载文件系统…….这些起始地

如何在CentOS/RHEL上安装或升级新的内核版本

Linux内核版本 Linux内核版本分为主线.稳定和长期版本.(所有内核版本都可以在内核开发官方网站https://www.kernel.org上获取)目前我们看到最新的稳定内核版本为4.10.12. 主线版本代表整个Linux内核的一个树干,新的主线版本每2-3个月发布一次,所有的新功能及特性都将会包含主线版本中.稳定内核则是在主线版本中,被认为是"稳定的"得出.稳定内核的任何错误修复都将从主线树中返回,也就是主线内核出现的任何错误(包括之前的任何旧版本内核的错误和BUG)在得到修