WebBrowser 设置IE兼容性
在窗体应用程序和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兼容性相关推荐
- webbrowser php,C# WinForm WebBrowser 设置为编辑模式的示例代码
写个程序批量下载文件,要分析的HTML的页面是需要登录才能访问的,而下载的相关页面是不需要登录访问的,所以偷个懒,程序中把WebBrowser 设置为编辑模式,这样把要分析的内容从已经登录的浏览器窗口 ...
- C# WebBrowser 设置独立的代理
近期需要对webbrower设置代理,找到了如下方案: 1. 对修改注册表,设置全局代理 这种方法限制在一个进程内只能设置或取消代理,而且是全局代理,对于部分不需要代理对功能会产生影响 2. 通过函数 ...
- 【名说】脚本程序转桌面exe应用自动打开IE浏览器至指定页面内并自动设置好兼容性视图
[需求描述]:对于B/S系统,需要用户打开IE浏览器访问,并且需要设置IE的兼容性视图,将指定网址添加进兼容性视图里,操作看起来很繁琐,用户想要桌面上有个图标,点一下就可以直接进入页面,并且不需要自己 ...
- C# WebBrowser 设置代理
微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理 using System; using System.Collec ...
- webbrowser设置横向打印_C# 日常记录:指定打印机/纸张/纸盒(静默打印)(不弹窗打印)WinForm篇...
我在WinForm 编程时一直有一个困扰很久的问题,有很多时候我们需要静默打印 或者不想使用默认的UI 进行打印设置 这个时候我的想法如下 1. 获取全部打印机 2.获取打印机能打什么样的纸 3.将打 ...
- WebBrowser设置打印页眉页眉和页边距
webbrowser,居然被用作套打...... 由于是套打,格式要求很严格,页眉页脚.页边距等等等等. 在网上找到下列代码,做适当修改后基本上能满足要求了,但是由于是用JS修改注册码,因此和客户端的 ...
- C# WebBrowser 设置代理完全解决方案
微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理,可不要用这个对抗广告联盟哦 You can change the ...
- html如何设置ie6兼容性视图,IE6浏览器兼容性视图设置在哪里
ie6浏览器算是旧版本了,如果你想要设置兼容性视图,该怎么设置呢?下面由学习啦小编为大家整理了IE6浏览器的兼容性视图设置在哪里的方法,希望对大家有帮助! IE6浏览器兼容性视图设置在哪里 IE6兼容 ...
- html设置ie9兼容性视图,ie9浏览器设置兼容性视图在哪里设置
当您在使用IE9打开为早期IE版本所设计的网页时,可能会无法正常浏览.此时您可以尝试一下IE的兼容性视图功能来解决这个问题.下面由学习啦小编为你整理了ie9浏览器设置兼容性视图在哪里设置的相关方法,希 ...
最新文章
- mysql 怎么格式化输出_怎么格式化MySQL输出代码
- 强化学习gym库中的Pendulum-v1/CartPole-v1游戏介绍
- 【Linux开发】linux设备驱动归纳总结(四):5.多处理器下的竞态和并发
- 公共技术点之 Java 反射 Reflection
- 作为IT从业者,你是如何做好个人职业规划?
- H - Hello Ms. Ze(树状数组套主席树,线段树上二分)
- C/C++ ltoa函数 - C语言零基础入门教程
- 14.面向对象-----UML类图
- python图形化编程实例,python交互式图形编程实例(三)
- .net安全编程 阅读笔记(二)
- 第14章 系统异常情况记录
- CODING 助力江苏高速信息实现组织敏捷与研发敏捷,领跑智慧交通新基建
- 每日算法刷题Day3-起始时间转换、二次方根、while连续输入、斐波那契思路
- cannot be resolved解决方法
- 【Golang】go中如何在浏览器上实时显示cmd控制台的输出(流式传输)
- [机缘参悟-8]:易经的核心思想(变与不变、天人合一)、核心概念(象、数、理、卦、爻、辞)、系统架构(层次模型)
- 【JAVA】金额工具类 金额千分位、中文大写金额、英文金额
- TFN系列FB18电缆故障测试仪-电力电网系统首选产品
- Screeps入门: harvest,upgrader,builder初级自动化
- iOS UITableview 禁止上下弹性或一个方向弹性