更改用户代理WebBrowser对象C#

时间:2012-02-28 09:24:58

标签: c# iphone browser user-agent

我知道有很多主题包含与此主题相同的主题,但不是那些主题可以帮助我解决我的问题。

我正在用C#制作一个简单的iPhone Web浏览器。它唯一应该做的就是像iPhone一样。更改用户代理字符串时可以这样做。

我在WebBrowser.Navigate事件中尝试过,在第4个参数中,您可以放置​​包含用户代理字符串的标头。但它只运行一次,在您单击WebBrowser中的某些内容后,它会将用户字符串更改为默认值。所以这对我来说不是一个有用的方法。

然后我尝试了在互联网上找到的ExtendedWebBrowser控件。当您使用该控件时,您可以在属性窗口中设置用户代理,但这对我来说根本不起作用。

所以最后我尝试使用urlmon.dll来设置用户代理,但是每当他们谈论它时,他们都会谈论重启过程。我找不到任何使用该DLL的进程,所以我无法获得是工作。如果它可以工作,那么每次我想使用该应用程序时都不可能重新启动它。

有人可以帮助我回答我的问题,我现在正在努力争取一天吗?

提前感谢大家!

2 个答案:

答案 0 :(得分:0)

以下是更改UserAgent

的方法
[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;

string ua = "YourUserAgentString";

UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ua, ua.Length, 0);

答案 1 :(得分:-1)

我没有为此特定问题添加任何内容,但应该提到IE不会在任何接近iPhone的方式上呈现任何内容,特别是对于包含iPhone特定标记,脚本和样式表。

Google Chrome是基于WebKit的(与iPhone浏览器相同),开发者工具中有一个选项可以覆盖用户代理。它可能比尝试在C#下托管IE更好。 Chrome的调试工具在DOM中也很好用。