长沙做网站seo/产品推广策略
前言
最近用WeBrowser控件时发现是不可以正常访问html5网页,于是上了百度,找到了这篇文章:
内容转载
通常情况下,我们直接调用C#控件webBrowser1控件的时候 默认是IE7 用webBrowser1控件打开IE内核检测网站内容是这样滴
我们在程序里面写入以下代码
/// <summary> /// 修改注册表信息来兼容当前程序 /// /// </summary> static void SetWebBrowserFeatures(int ieVersion){// don't change the registry if 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);//Registry.SetValue(featureControlRegKey + "FEATURE_AJAX_CONNECTIONEVENTS", // appName, 1, RegistryValueKind.DWord); //Registry.SetValue(featureControlRegKey + "FEATURE_GPU_RENDERING", // appName, 1, RegistryValueKind.DWord); //Registry.SetValue(featureControlRegKey + "FEATURE_WEBOC_DOCUMENT_ZOOM", // appName, 1, RegistryValueKind.DWord); //Registry.SetValue(featureControlRegKey + "FEATURE_NINPUT_LEGACYMODE", // appName, 0, RegistryValueKind.DWord); }/// <summary> /// 获取浏览器的版本 /// </summary> /// <returns></returns> 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;}/// <summary> /// 通过版本得到浏览器模式的值 /// </summary> /// <param name="browserVersion"></param> /// <returns></returns> 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; // Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode. break;case 8:mode = 8000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode. break;case 9:mode = 9000; // Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode. break;case 10:mode = 10000; // Internet Explorer 10. break;case 11:mode = 11000; // Internet Explorer 11 break;}return mode;}
然后在在如图所示写入 调用
SetWebBrowserFeatures(11);
可以看到 已经设置为IE11的内核了
End
结语:这只是做一个记录,在测试中发现有时候会没有效果,可能需要用管理员权限运行才行。