- VisualC#
- 2013-11-21 - 更新:2014-09-30
この記事は最終更新日から1年以上経過しています。
Visual C#にてブラウザを使用したアプリケーションを作成したとき、
WEBページを表示すると表示がおかしいと思って、ユーザーエージェントを確認してみると
IE7となっていました。
環境はWindows7でIE9なのになぜだろう?と思いました。
どうやら作成したアプリケーションではレンダリングモードが「7」で実行されているようです。
解決するにはレジストリを編集し、レンダリングモードを変更してやらないといけません。
ユーザーエージェントのレジストリキー
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
レンダリングモードのレジストリキー
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DOCUMENT_COMPATIBLE_MODE
ユーザーエージェント、レンダリングモードをIE9にするには、それぞれのレジストリキーに
ユーザーエージェントは「9000」、レンダリングモードは「90000」という値を設定します。
レンダリングモードをIE9にする
string FEATURE_BROWSER_EMULATION = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; string FEATURE_DOCUMENT_COMPATIBLE_MODE = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DOCUMENT_COMPATIBLE_MODE"; string exename = "アプリケーション.exe"; //デバッグ時には.vshost.exeにしておく private void Form1_Load(object sender, EventArgs e) { Microsoft.Win32.RegistryKey regkey1 = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(FEATURE_BROWSER_EMULATION); Microsoft.Win32.RegistryKey regkey2 = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(FEATURE_DOCUMENT_COMPATIBLE_MODE); // ユーザーエージェントをIE9に regkey1.SetValue(exename, 9000, Microsoft.Win32.RegistryValueKind.DWord); // レンダリングモードをIE9に regkey2.SetValue(exename, 90000, Microsoft.Win32.RegistryValueKind.DWord); regkey1.Close(); regkey2.Close(); webBrowser1.Navigate("[URL]"); }
10,082 views