WebBrowser控件使用IE9

时间:2011-04-03 18:09:20

标签: c# internet-explorer browser webbrowser-control internet-explorer-9

我希望WebBrowser控件使用IE9。 IE9安装在计算机上,但WebBrowser控件仍在使用IE8。

我使用http://www.whatbrowser.org/en/进行了验证。我尝试对注册表进行一些更改(在此处找到解决方案),但是无法正常工作。

5 个答案:

答案 0 :(得分:7)

我认为这是传递给网站的用户代理字符串。它错误地将其识别为IE8,因为它可能无法满足其逻辑中与IE9匹配的要求。我也能看到同样的事情发生在我的盒子上。您可以根据需要指定要使用的用户代理字符串。将其添加到您的项目

在你的使用语句中添加...

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

答案 1 :(得分:6)

浏览器谎称他们的“用户代理”让网站中断。您运行9,除非您使用测试版,否则不能同时安装8和9。有关用户代理字符串的详细信息,请参阅此blog post

如果您想确定然后查看加载的DLL版本。 Project + Properties,Debug,勾选“Unmanaged code debugging”。启动程序,Debug + Break All。调试+ Windows +模块并在列表中找到ieframe.dll。版本号列应该告诉您。我得到了“8.00.7600.16385(win7_rtm.090713-1255)”,Win7发布版本。我还没有安装IE9。

答案 2 :(得分:6)

在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   (十进制)

答案 3 :(得分:1)

您可以尝试添加注册表值,以通知您的WebBrowser控件您希望为您的应用程序运行哪个版本的IE。

我有类似的问题 - more here

答案 4 :(得分:0)

它似乎可能是您的页面检测脚本。试试这个site (http://www.whatismybrowser.com/)。我知道其他网站给了我错误的信息,但是这个网站正确地将浏览器识别为我机器上安装的IE版本。