WebBrowser 设置IE兼容性

news/2024/11/30 0:37:28/

在窗体应用程序和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的版本



http://www.ppmy.cn/news/247580.html

相关文章

ie浏览器设置

IE作为Windows系统中一个重要部分&#xff0c;是我们使用最多同时也是麻烦最多的部分&#xff0c;下面是笔者在使用过程中发现并解决了的四个比较典型的故障。 故障一&#xff1a;无法改变IE的安全等级 现象&#xff1a;打开桌面上IE的鼠标右键菜单并选择“属性”&#xff0c…

设置IE主页的几种方法

cmd /k reg add "HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/HideDesktopIcons/NewStartPanel" /v {871C5380-42A0-1069-A2EA-08002B30309D} /d 00000000 /t REG_DWORD /f 1:在桌面IE图标右键属性----常规-----主页 项填上你想设置的主…

Shell脚本攻略:shell实现pxe无人值守安装

目录 一、实验 1.shell实现pxe无人值守安装 一、实验 1.shell实现pxe无人值守安装 &#xff08;1&#xff09;脚本截图 1 echo set nu > ~/.vimrc2 systemctl stop firewalld3 setenforce 04 umount /dev/sr0 /mnt5 mount /dev/sr0 /mnt6 cd /etc/yum.repos.d/7 mkdir b…

自学黑客(网络安全),一般人我劝你还是算了!

网络安全在当今信息社会越来越受到重视&#xff0c;但不同于Java、C/C等后端开发岗位有非常明晰的学习路线&#xff0c;网络安全更多是靠自己摸索&#xff0c;要学的东西又杂又多&#xff0c;难成体系。 这也是为什么我经常劝别人不要入网络安全的坑&#xff0c;因为一般人真坚…

华为OD机试之在字符串中找出连续最长的数字串(含“+-”号)(Java源码)

在字符串中找出连续最长的数字串(含“”号) 输入描述 请在一个字符串中找出连续最长的数字串&#xff0c;并返回这个数字串。 如果存在长度相同的连续数字串&#xff0c;返回最后一个。 如果没有符合条件的字符串&#xff0c;返回空字符串””。 注意&#xff1a; 数字串可以由…

Window搭建IOS App自动化测试环境

平台搭建&#xff1a;tidevice&#xff08;Windows逆向通信iOS工具&#xff09;WebDriverAgent&#xff08;iOS通信服务&#xff09;facebook-wda&#xff08;iOS测试框架&#xff09; macOSXcode&#xff1a;在手机上安装WebDriverAgent的时候需要用到&#xff0c;必须要Xcod…

Barsetto百胜图BAV01办公首选咖啡机

在重要客户到访时,一杯醇香地道的好咖啡,可以给予客户轻松的感觉,同时也能彰显公司的品味。在激烈的谈中,有时候有点枯燥和乏味,来一杯芳香四溢的咖啡,可以提高谈判效率。下午时间,员工疲惫而无精打采的状态,容易影响工作进度&#xff0c;让员工能喝到好的咖啡提高工作效率也是…

Barsetto百胜图自助咖啡机你身边的咖啡大师

在忙碌的都市生活中&#xff0c;惺忪的早晨或倦怠的午后来一杯香浓的咖啡瞬间就能提神醒脑焕发激情。而如何快速又简单的获取到高品质的现磨咖啡&#xff0c;一直是Barsetto百胜图在探索的领域。 在一些公共场景中&#xff0c;通常使用的人数较多&#xff0c;口味的需求也是繁…