Winform中使用 webbrowser设置 IE版本

//如果电脑上安装了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);

 

posted @ 2018-01-25 10:55  大漠苍狼~  阅读(426)  评论(0编辑  收藏  举报