How to programmatically control multiple browsers (aXWebBrowser control), from a single winforms app process, targeting the same remote website, but each browser living in its own session scope with the remote site?
Goals - Build an application which automates use of a website. The goal is for the application to do the work of up to 5 users interacting with a browser on the same web site.
Apparent Challenges - Each browser instance shares its “session” data sent to it by the remote website. The result is the various browsers are not able to act as actual multiple human users would. No matter how many different aXWebBrowser controls are instantiated, each loses its session context, and shares the session context established by the last / latest/ most recently instantiated browser. In other words the last launched control destroys the established session context of any control preceding it.
Have Already Tried - Adding one of the following registry keys to 'hkcu\software\microsoft\internet explorer\main': TabProcGrowth=DWORD:0, FrameMerging=DWORD:0, SessionMerging=DWORD:0. When launching IE8 from my desktop icon (outside the app) this works fine, IE8 behaves as desired. However, when running the application, using the axWewbBrowser controls, it does work, the registry settings seem to have no effect on the axWebBrowser controls. Other ways to see the disired behavior outside the application include: clicking "New Session" in IE8 File menu, and launching iexplore.exe with -nomerge. These do not work within the application because the axWebBrowser control uses Wininet for communication.
Constraints - There is considerable code already written and working using the aXWebBrowser Control (Internet Explorer ActiveX automatable Web Browser) so an ideal solution will not require the code to be re-written with a new control. - After the solution is found the application will surface the browser window(s) to the workstation user. - A winforms application (.NET 2.0) is hosting the controls - The browsers are all targeting the same remote website.