webbrowser內核指定

webbrowser內核指定

  1. 手動指定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。
不同IE版本所對應的DWORD值:
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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章