Categories
SugiBlog ホームページ制作・システム開発

C# WebBrowserのレンダリングモード

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]");
}

参考URL:
http://cathval.com/csharp/672

5,440 views

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*