我试图在Winforms应用程序中更改WebBrowser控件的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;
public void ChangeUserAgent()
{
List<string> userAgent = new List<string>();
string ua = "Googlebot/2.1 (+http://www.google.com/bot.html)";
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ua, ua.Length, 0);
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是这只能工作一次.当我尝试第二次运行ChangeUserAgent()方法时,它不起作用.它保持设置为第一个更改的值.这很烦人,我已经尝试了一切,但它不会改变不止一次.
有谁知道一种不同的,更灵活的方法?
谢谢
我正在开发一台带有IE8浏览器的Win7机器(同样的事情也出现在IE9上).
我创建了一个嵌入在本机窗口中的IWebBrowser2对象的应用程序.
在该浏览器对象中,我执行javascipt代码:
var txt = "Browser Name: " + navigator.appName + "\n";
txt += "Browser Version: " + navigator.appVersion + "\n";
alert(txt);
Run Code Online (Sandbox Code Playgroud)
我收到以下提醒:
这证实了我之前的担忧 - 即使我的机器上安装了IE8\IE9 - IWebBrowser2对象的行为就好像它是IE7(包括所有讨厌的HTML\CSS行为).
有人知道为什么吗?或更好 - 如果有可能将浏览器对象嵌入IE8\IE9(用于分发 - 所以它应该是合法的)
谢谢,
我有一个带有webBrowser组件的WPF .net4应用程序,该组件导航到使用CSS文件的本地HTML页面.
当我使用IE8导航到页面时,CSS样式是正确的,但是当我导航到webBrowser组件中的页面时,CSS样式是错误的.
我认为webBrowser使用与IE8相同的activex是错误的吗?或者我必须在webBrowser组件中设置一些属性?
在此先感谢您的帮助.
.NET中是否有一种方法可以使Process在没有地址亭和标签的情况下打开默认的Web浏览器,而无需使用信息亭模式?我不能使用WebBrowser对象,因为它使用IE7,并且需要打开的页面使用JavaScript。我无法使用信息亭模式,因为客户端需要窗口出现在屏幕的特定区域。我还需要保持对浏览器的访问权限,因为我必须知道页面何时关闭。