Winform程序的WebBrowser控件默认使用的是IE内核。但由于IE版本的不同,往往存在各种兼容性的问题。
本文给出了获取本机IE内核版本并设置WebBrowser所用IE内核版本的示例代码:
////// 设置WebBrowser所用的IE内核版本 /// /// static void SetIEEmulation(string app) { var reg = Registry.LocalMachine; var ie = reg.OpenSubKey(@"SOFTWAREMicrosoftInternet ExplorerMAINFeatureControlFEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree); if (ie != null) { try { var emulation = GetIEVersionEmulation(); if (emulation != 0) { ie.SetValue(app, emulation); } } catch (Exception ex) { MessageBox.Show("设置IE出错", ex.Message); } } reg.Close(); } ////// 根据IE版本号,获取Emulation值 /// /// ///static int GetIEVersionEmulation() { int ieVersion = 0;//IE版本号 RegistryKey reg = Registry.LocalMachine; reg = reg.CreateSubKey("SOFTWARE\Microsoft\Internet Explorer"); var svcVersion = reg.GetValue("svcVersion"); var version = reg.GetValue("Version"); if (svcVersion != null) { reg.Close(); ieVersion = int.Parse(svcVersion.ToString().Split('.')[0]); } else if (version != null) { reg.Close(); ieVersion = int.Parse(version.ToString().Split('.')[0]); } if (ieVersion < 8) return 0; if (ieVersion == 8) return 0x1F40;//8000 (0x1F40)、8888 (0x22B8) if (ieVersion == 9) return 0x2328;//9000 (0x2328)、9999 (0x270F) if (ieVersion == 10) return 0x02710;//10000 (0x02710)、10001 (0x2711) if (ieVersion == 11) return 0x2AF8;//11000 (0x2AF8)、11001 (0x2AF9 return 0; }