User Tools

Site Tools


study:cs-webbrowser:20250312-001:index

WebBrowser 三二事 (2025-03-12)

Local Backup

  • WebBrowser 是 Windows Form 應用程式中用來顯示 Web 網頁的控制項。 底下幾個與 WebBrowser 相關的議題,做個記錄備忘一下。

如何設定使用新版的IE

  • 使用 WebBrowser 時,它會依據 .Net Framework 版本,自動使用其預設的 IE 版本。 例如可能你的主機已經更新到 IE10 ,可是 WebBrowser 還在使用 IE9 或 IE8 的版本。 如果要取得目前運行的 IE 版本,可以透過 WebBrowser.Version 屬性。

變更預設版本

  • WebBrowser 不會因為系統已更新了新的 IE 版本,就自動使用新的 IE 版本。你必須自行變更系統的註冊碼,讓 Windows 系統知道應用程式想使用的 IE 版本。
  • 32 bit: 
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION 
    
    64 bit: 
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
  • 在不同版本的系統下,你可以依據上面資訊找到 FEATURE_BROWSER_EMULATION 機碼。 若特定的應用程式,要使用特定的 IE 版本,你只要在該機碼下新增一個與應用程式相同名稱的 Dword 值,設定的值可參閱 Internet Feature Controls (B..C) 這篇文章,不同的值會對應到不同的 IE 版本。
  • 像下圖中的例子,就是指定 MyTrip.exe 應用程式,使用 IE11 版本

使用程式修改預設版本

  • 為了方便設定,也可以透過程式碼,直接進行以上註刪碼的變更。
  • public Form1()
    {
        InitializeComponent();
    
        var appName = Process.GetCurrentProcess().MainModule.ModuleName;
        Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", appName, 11000, RegistryValueKind.DWord);
    }
  • 有時候,你必須同時使用多個 WebBrowser 連結特定網站進行操作, 若這個網站使用 Cookie 儲存識別資訊,而你又必須分別使用不同使用者進行登入,那麼你將難以避免互相干擾的問題。 這是因為,只要在同一個 Process 中,所有的 WebBrowser 都會共用同一個 Cookie 資訊。 也就是若在同一個應用程式中,使用到多個 WebBrowser 控制項,不管它們是否位在同一個 Form 中,它們都將共用同一個 Cookie 資訊,
  • 目前不知道如何解決,只能先重覆執行多組應用程式,才可分別在不同表單中建立不同使用者連線。

參考連結

study/cs-webbrowser/20250312-001/index.txt · Last modified: 2025/03/12 10:07 (external edit)