WPF WebBrowser コントロールは、ユーザーのマシンにインストールされている IE のバージョンに依存していますか? それとも、マシン間で一貫した別のライブラリを使用していますか? IE7 モードでのみレンダリングされると読みましたが、IE がインストールされていないか、何らかの理由で IE6 を使用しているユーザーに問題がないことを確認したいと思います。
2 に答える
WebBrowserのMSDN のコメントは、IE ActiveX コントロールを再ホストすることを示しています。
WebBrowser コントロールは、ネイティブ WebBrowser ActiveX コントロールを内部的にインスタンス化します。
WebBrowser ActiveX コントロールは、Shdocvw.dll
. これは順番にラップMshtml.dll
し、環境によってはおそらく他の DLL もラップします。このコントロールを再ホストする際の 1 つの注意点は、ブラウザー エミュレーションの設定です。
WebBrowser コントロールをホストするアプリケーションの場合、既定値は です
7000
。レジストリを使用してこの機能の値を制御するには、実行可能ファイルの名前を次の設定に追加し、目的の設定と一致するように値を設定します。
0x7000
は IE7 互換モードを意味します。したがって、WPF アプリケーションで他のモードを使用してレンダリングする場合は、次の例を参考にして、レジストリを更新する必要があります。
[HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"MyApplication.exe" = dword:2328
IE11 を搭載したマシンで WebBrowser コントロールを使用して WPF アプリを作成し、次のユーザー エージェント文字列を取得しました。
user agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; .NET CLR 1.1.4322)
IE10 を搭載したマシンで WebBrowser コントロールを使用して WPF アプリを作成し、次のユーザー エージェント文字列を取得しました。
user agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
Trident/7.0 は IE11 を示し、Trident/6.0 は IE10 を示します。ユーザー エージェント文字列の詳細。
また、IE10 を使用するシステムでは、IE11 を使用するシステムとは異なるページ レンダリングが行われました。また、各システムのスタンドアロン IE ブラウザでもこれを確認しました。
IE のないシステムまたは IE6 を実行しているシステムではまだ試していませんが、WebBrowser コントロールは、現在システムにインストールされている IE のバージョンに関連しているようです。