While looking for a way to change the user agent string for the webBrowser control, I found this nifty method:
[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 static void ChangeUserAgent(string Agent)
{
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, Agent, Agent.Length, 0);
}
Basically, I needed a way to change the user agent until I want to change it again.
The usual:
webBrowser1.Navigate ("http://www.whatsmyuseragent.com", "_self" , null, "User-Agent: Luke's Web Browser");
Only works for one request.
However, I keep reading everywhere that the first method only works once per session. In my case, it works as many times as I want it to. So my guess is that this is related to the instance of Internet Explorer on the computer?
So my questions are:
- What version does the end user need to have installed on their computer for this method to work as intended? IE. change as much as I want.
- Since this is related to the Internet Explorer installed on the computer, does changing the user agent in my application effect the browser?
- If the user has Internet Explorer open, will this method still work?
Thanks!
We use the “UrlMkSetSessionOption” function quite a bit. We have a “custom web browser shell” which is really just an IE user control embedded into a full screen WinForms program. We change the user agent to identify to our web server that this is our “custom” browser shell. But to answer your specific questions: