WPF WebBrowser控件是否依赖于用户计算机上安装的IE版本,还是使用跨机器一致的单独库?我已经读过它只能在IE7模式下渲染,但是我想确保没有安装IE或由于某些原因仍然在IE6上的用户没有任何问题 .
MSDN remarks for WebBrowser表示它重新托管IE ActiveX控件:
WebBrowser控件在内部实例化本机WebBrowser ActiveX控件 .
WebBrowser ActiveX控件更为人所知 Shdocvw.dll . 这反过来包装 Mshtml.dll ,可能还有其他DLL给你的环境 . One caveat of rehosting this control is its setting for Browser Emulation:
Shdocvw.dll
Mshtml.dll
对于托管WebBrowser控件的应用程序,默认值为7000.要使用注册表控制此功能的值,请将可执行文件的名称添加到以下设置,并将值设置为与所需设置匹配 .
0x7000 表示IE7兼容模式 . 因此,如果您希望使用其他模式渲染WPF应用程序,则需要更新注册表,如adapted from this example:
0x7000
[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 . More about user-agent strings .
使用IE10的系统的页面呈现方式与使用IE11的系统不同 . 我还使用每个系统上的独立IE浏览器验证了这一点 .
我还没有在没有IE的系统或运行IE6的系统上尝试它,但似乎WebBrowser控件与当前安装在系统上的IE版本有关 .
2 回答
MSDN remarks for WebBrowser表示它重新托管IE ActiveX控件:
WebBrowser ActiveX控件更为人所知
Shdocvw.dll
. 这反过来包装Mshtml.dll
,可能还有其他DLL给你的环境 . One caveat of rehosting this control is its setting for Browser Emulation:0x7000
表示IE7兼容模式 . 因此,如果您希望使用其他模式渲染WPF应用程序,则需要更新注册表,如adapted from this example:我在使用IE11的机器上创建了一个带有WebBrowser控件的WPF应用程序并获得了此用户代理字符串:
我在一台带有IE10的机器上创建了一个带有WebBrowser控件的WPF应用程序并获得了这个用户代理字符串:
Trident / 7.0表示IE11,Trident / 6.0表示IE10 . More about user-agent strings .
使用IE10的系统的页面呈现方式与使用IE11的系统不同 . 我还使用每个系统上的独立IE浏览器验证了这一点 .
我还没有在没有IE的系统或运行IE6的系统上尝试它,但似乎WebBrowser控件与当前安装在系统上的IE版本有关 .