在窗体应用程序和wpf程序中会使用到WebBrowser 来显示一个网页,但是可能要显示的网页要求在特定的模式下运行,因此需要调整WebBrowser 对网页兼容性的设置;

通过在注册表中设置HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION中添加一个值,该值指示该程序以什么模式来运行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;
}

在使用WebBrowser显示一个兼容性要求的网页时,修改SetWebBrowserFeatures方法中后再显示一个网页即可,ieVersion为要兼容的IE的版本

WebBrowser 设置IE兼容性相关推荐

  1. webbrowser php,C# WinForm WebBrowser 设置为编辑模式的示例代码

    写个程序批量下载文件,要分析的HTML的页面是需要登录才能访问的,而下载的相关页面是不需要登录访问的,所以偷个懒,程序中把WebBrowser 设置为编辑模式,这样把要分析的内容从已经登录的浏览器窗口 ...

  2. C# WebBrowser 设置独立的代理

    近期需要对webbrower设置代理,找到了如下方案: 1. 对修改注册表,设置全局代理 这种方法限制在一个进程内只能设置或取消代理,而且是全局代理,对于部分不需要代理对功能会产生影响 2. 通过函数 ...

  3. 【名说】脚本程序转桌面exe应用自动打开IE浏览器至指定页面内并自动设置好兼容性视图

    [需求描述]:对于B/S系统,需要用户打开IE浏览器访问,并且需要设置IE的兼容性视图,将指定网址添加进兼容性视图里,操作看起来很繁琐,用户想要桌面上有个图标,点一下就可以直接进入页面,并且不需要自己 ...

  4. C# WebBrowser 设置代理

    微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理 using System; using System.Collec ...

  5. webbrowser设置横向打印_C# 日常记录:指定打印机/纸张/纸盒(静默打印)(不弹窗打印)WinForm篇...

    我在WinForm 编程时一直有一个困扰很久的问题,有很多时候我们需要静默打印 或者不想使用默认的UI 进行打印设置 这个时候我的想法如下 1. 获取全部打印机 2.获取打印机能打什么样的纸 3.将打 ...

  6. WebBrowser设置打印页眉页眉和页边距

    webbrowser,居然被用作套打...... 由于是套打,格式要求很严格,页眉页脚.页边距等等等等. 在网上找到下列代码,做适当修改后基本上能满足要求了,但是由于是用JS修改注册码,因此和客户端的 ...

  7. C# WebBrowser 设置代理完全解决方案

    微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理,可不要用这个对抗广告联盟哦 You can change the ...

  8. html如何设置ie6兼容性视图,IE6浏览器兼容性视图设置在哪里

    ie6浏览器算是旧版本了,如果你想要设置兼容性视图,该怎么设置呢?下面由学习啦小编为大家整理了IE6浏览器的兼容性视图设置在哪里的方法,希望对大家有帮助! IE6浏览器兼容性视图设置在哪里 IE6兼容 ...

  9. html设置ie9兼容性视图,ie9浏览器设置兼容性视图在哪里设置

    当您在使用IE9打开为早期IE版本所设计的网页时,可能会无法正常浏览.此时您可以尝试一下IE的兼容性视图功能来解决这个问题.下面由学习啦小编为你整理了ie9浏览器设置兼容性视图在哪里设置的相关方法,希 ...

最新文章

  1. mysql 怎么格式化输出_怎么格式化MySQL输出代码
  2. 强化学习gym库中的Pendulum-v1/CartPole-v1游戏介绍
  3. 【Linux开发】linux设备驱动归纳总结(四):5.多处理器下的竞态和并发
  4. 公共技术点之 Java 反射 Reflection
  5. 作为IT从业者,你是如何做好个人职业规划?
  6. H - Hello Ms. Ze(树状数组套主席树,线段树上二分)
  7. C/C++ ltoa函数 - C语言零基础入门教程
  8. 14.面向对象-----UML类图
  9. python图形化编程实例,python交互式图形编程实例(三)
  10. .net安全编程 阅读笔记(二)
  11. 第14章 系统异常情况记录
  12. CODING 助力江苏高速信息实现组织敏捷与研发敏捷,领跑智慧交通新基建
  13. 每日算法刷题Day3-起始时间转换、二次方根、while连续输入、斐波那契思路
  14. cannot be resolved解决方法
  15. 【Golang】go中如何在浏览器上实时显示cmd控制台的输出(流式传输)
  16. [机缘参悟-8]:易经的核心思想(变与不变、天人合一)、核心概念(象、数、理、卦、爻、辞)、系统架构(层次模型)
  17. 【JAVA】金额工具类 金额千分位、中文大写金额、英文金额
  18. TFN系列FB18电缆故障测试仪-电力电网系统首选产品
  19. Screeps入门: harvest,upgrader,builder初级自动化
  20. iOS UITableview 禁止上下弹性或一个方向弹性

热门文章

  1. 【报告分享】2021年移动互联网行业白皮书-七麦数据(附下载)
  2. java判断手机号运营商
  3. 怎么创业赚取你人生第一桶金????
  4. java 内存例子_简单的例子 关于Java内存管理的讲解
  5. 【转】JAVA EE 6 规范综述
  6. 使用paddle框架无人驾驶 —— 卷积神经网络计算方向盘打角
  7. deepin如何批量下载安装字体?
  8. 无人机飞控三大算法汇总
  9. 深受java开发者喜爱的顶级Java IDE
  10. 计算机同一优盘记录,U盘使用后残留在电脑上的记录清理方法