//如果电脑上安装了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\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
//在对应的路径下添加你程序名字,如a.exe为名的value,DWORD值。
//值选项:
//10000(0×2710) IE10
//9999 (0x270F) IE9 忽略html5
//9000 (0×2328) IE9
//8888 (0x22B8) IE8 忽略html5
//8000 (0x1F40) IE8
//7000 (0x1B58) IE7
/// <summary>
/// 获取操作系统位数
/// </summary>
/// <returns></returns>
private string OSBit()
{
try
{
ConnectionOptions oConn = new ConnectionOptions();
System.Management.ManagementScope managementScope = new System.Management.ManagementScope("\\\\localhost", oConn);
System.Management.ObjectQuery objectQuery = new System.Management.ObjectQuery("select AddressWidth from Win32_Processor");
ManagementObjectSearcher moSearcher = new ManagementObjectSearcher(managementScope, objectQuery);
ManagementObjectCollection moReturnCollection = null;
string addressWidth = null;
moReturnCollection = moSearcher.Get();
foreach (ManagementObject oReturn in moReturnCollection)
{
addressWidth = oReturn["AddressWidth"].ToString();
}
return addressWidth;
}
catch
{
return "获取错误";
}
}
//我自己写了一个方法,用到了注册表操作类,请参考宝典内的注册表操作类
/// <summary>
/// 设置Webbrowser控件使用的IE版本
/// </summary>
/// <param name="Case">1为IE7 2为IE8 3为IE8(忽略html5) 4为IE9 5为IE9(忽略html5) 6为IE10</param>
/// <returns></returns>
private bool SetBrowserIe(int Case = 3)
{
//先判断系统位数
int BitInt = 0;
string Bit = OSBit();
if (Bit == "获取错误")
{
MessageBox.Show("获取操作系统位数失败,请联系管理员!", "提示");
return false;
}
else
{
BitInt = int.Parse(Bit.Trim());
}
string RigDitPath = "";
if (BitInt == 32)
{
RigDitPath = @"Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";
}
else
{
RigDitPath = @"Software\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";
}
//
RegistryHelper Rjdeal = new RegistryHelper();
//指定要操作的注册表路径 HKEY_LOCAL_MACHINE\SOFTWARE
RegistryKey fatherrjc = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(RigDitPath, true);
Int32 a = 0;
//这里加unchecked 主要怕溢出
unchecked
{
switch (Case)
{
case 1:
a = (Int32)0x00001B58;
break;
case 2:
a = (Int32)0x00001F40;
break;
case 3:
a = (Int32)0x000022B8;
break;
case 4:
a = (Int32)0x00002328;
break;
case 5:
a = (Int32)0x0000270F;
break;
case 6:
a = (Int32)0x00002710;
break;
}
}
string CxName = Process.GetCurrentProcess().MainModule.ModuleName;
if (CxName != "")
{
fatherrjc.SetValue(CxName, a);
}
else
{
MessageBox.Show("IE操作发送严重异常,请联系管理员", "提示");
return false;
}
return true;
}
//调用
SetBrowserIe(6);