【发布时间】:2011-07-28 17:40:13
【问题描述】:
我希望 WebBrowser 控件使用 IE9。电脑上安装了IE9,但是WebBrowser控件还在用IE8。
我通过http://www.whatbrowser.org/en/ 进行了验证。我尝试对注册表进行一些更改(在此处找到了解决方案)但无法正常工作。
【问题讨论】:
标签: c# internet-explorer browser webbrowser-control internet-explorer-9
我希望 WebBrowser 控件使用 IE9。电脑上安装了IE9,但是WebBrowser控件还在用IE8。
我通过http://www.whatbrowser.org/en/ 进行了验证。我尝试对注册表进行一些更改(在此处找到了解决方案)但无法正常工作。
【问题讨论】:
标签: c# internet-explorer browser webbrowser-control internet-explorer-9
看来这可能是您的页面检测脚本。试试这个site (http://www.whatismybrowser.com/)。我知道其他网站给了我错误的信息,但是这个网站正确地将浏览器识别为我机器上安装的 IE 版本。
【讨论】:
您可以尝试添加注册表值,告知您希望为您的应用程序运行的 IE 版本的 WebBrowser 控件。
我有类似的问题 - more here
【讨论】:
在 HTML 头部使用这个:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
否则:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION\yourexename.exe - REG_DWORD = 9000 (十进制)
【讨论】:
我认为是传递给站点的用户代理字符串。它错误地将其识别为 IE8,因为它可能不符合其逻辑中与 IE9 匹配的要求。我可以看到我的盒子也发生了同样的事情。如果需要,您可以指定要使用的用户代理字符串。将此添加到您的项目中
在你的 using 语句中添加 ...
using System.Runtime.InteropServices;
在您的表单类中添加 ....
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
const int URLMON_OPTION_USERAGENT = 0x10000001;
public void ChangeUserAgent(String Agent)
{
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, Agent, Agent.Length, 0);
}
然后在你的代码中的某个地方调用它......也许是构造函数,或者 form_load 事件。
ChangeUserAgent("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
【讨论】:
Make a DWORD value under HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION. Set the key as YourAppName.exe. Set the value as 39321. Make a DWORD value under HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_GPU_RENDERING. Set the key as YourAppName.exe. Set the value as 1
浏览器谎称他们的“用户代理”是为了让网站休息一下。您正在运行 9,除非您使用测试版,否则不能同时安装 8 和 9。有关用户代理字符串的详细信息,请参阅此blog post。
如果您想确定然后查看加载的 DLL 版本。项目+属性,调试,勾选“非托管代码调试”。启动您的程序,Debug + Break All。 Debug + Windows + Modules 并在列表中找到 ieframe.dll。版本号栏应该告诉你。我得到的是 Win7 发行版“8.00.7600.16385 (win7_rtm.090713-1255)”。我还没有安装 IE9。
【讨论】: