webbrowser內核指定
- 手動指定webbrowser內核
找到註冊表項:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
在右側空白區域內單擊鼠標右鍵,點擊[新建]→[DWORD(32-位)值],新建的項取名爲MyApplication.exe(程序名),編輯值時,選擇基數“十進制”,填寫數值數據,這裏填寫11000(IE11)。最後運行MyAplication.exe,此時MyAplication.exe的webbrowser內核已指定爲IE11。
2. 使用代碼指定WebBrowser內核
public class IEVersion
{
/// <summary>
/// IE WebBrowser內核設置
/// </summary>
public static void BrowserEmulationSet()
{
//當前程序名稱
var exeName = Process.GetCurrentProcess().ProcessName + ".exe";
//系統註冊表信息
var mreg = Registry.LocalMachine;
//IE註冊表信息
var ie = mreg.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree);
if (ie != null)
{
try
{
var val = ieVersionEmulation(ieVersion());
if (val != 0)
{
ie.SetValue(exeName, val);
}
mreg.Close();
}
catch (Exception ex)
{
Console.Write(ex.Message);
}
}
}
/// <summary>
/// IE版本號
/// </summary>
/// <returns></returns>
static int ieVersion()
{
//IE版本號
RegistryKey mreg = Registry.LocalMachine;
mreg = mreg.CreateSubKey("SOFTWARE\\Microsoft\\Internet Explorer");
//更新版本
var svcVersion = mreg.GetValue("svcVersion");
if (svcVersion != null)
{
mreg.Close();
var v = svcVersion.ToString().Split('.')[0];
return int.Parse(v);
}
else
{
//默認版本
var ieVersion = mreg.GetValue("Version");
mreg.Close();
if (ieVersion != null)
{
var v = ieVersion.ToString().Split('.')[0];
return int.Parse(v);
}
}
return 0;
}
/// <summary>
/// 根據IE版本號 返回Emulation值
/// </summary>
/// <param name="ieVersion"></param>
/// <returns></returns>
static int ieVersionEmulation(int ieVersion)
{
//IE7 7000 (0x1B58)
if (ieVersion < 8)
{
return 0;
}
if (ieVersion == 8)
{
return 0x1F40;//8000 (0x1F40)、8888 (0x22B8)
}
if (ieVersion == 9)
{
return 0x2328;//9000 (0x2328)、9999 (0x270F)
}
else if (ieVersion == 10)
{
return 0x02710;//10000 (0x02710)、10001 (0x2711)
}
else if (ieVersion == 11)
{
return 0x2AF8;//11000 (0x2AF8)、11001 (0x2AF9
}
return 0;
}
}
最後,在程序啓動時調用即可:
IEVersion.BrowserEmulationSet();