2015年8月27日 星期四

WebBrowser 三二事

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

1 則留言:

  1. 你好: 我在WINDOWS 7系統中更改註冊表可以使用。但是WINDOWS 10系統中卻無法使用,請問有解嗎?

    回覆刪除