WebBrowser在新的TabPage上设置cookie或会话

时间:2013-03-05 07:03:42

标签: c# .net session cookies browser

我想重新创建一个带有标签功能,弹出窗口和重定向到新标签的Web浏览器。 这就是我能够达到的目标:

firstTabWebBrowser.Navigate("www.site-with-popup.com"); //inizializa my broeser navigation

//...

(firstTabWebBrowser.ActiveXInstance as SHDocVw.WebBrowser).NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(Browser_NewWindow3); //new window 3 event    

//...

private void Browser_NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl)
{

Cancel = true; //block a new IE window to be opened

TabPage addedTabPage = new TabPage("redirected tab"); //create new tab
tabControl_webBrowsers.TabPages.Add(addedTabPage); //add new tab to the TabControl
System.Windows.Forms.WebBrowser newTabWebBrowser = new System.Windows.Forms.WebBrowser() //create new WebBrowser inside the new tab
{
   Parent = addedTabPage,
   Dock = DockStyle.Fill
};

System.Windows.Forms.WebBrowser actualWebBrowser = (System.Windows.Forms.WebBrowser)tabControl_webBrowsers.SelectedTab.GetChildAtPoint(new Point(10, 10)); //the only way I've found to select the actual webBrowser
ppDisp = actualWebBrowser.ActiveXInstance; //try to pass actual browser reference to the new browser, but I can't notice any difference without this line

newTabWebBrowser.Navigate(bstrUrl); //navigate to the popup destination url

(newTabWebBrowser.ActiveXInstance as SHDocVw.WebBrowser).NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(Browser_NewWindow3); //attach this function to the new browser            

}      

ATTEMPTS

我在某些网站上测试了它,并且新标签上的弹出重定向有效但新生成的webBrowser似乎丢失了会话身份验证。我发现this之前的问题似乎与我的问题很接近,但在答案之后问题仍然存在。 因此,我认为这可能是由于原始的webBrowser的cookie,我可以通过actualWebBrowser.Document.Cookie访问,但我无法转移到新的浏览器。

  • 我尝试了newTabWebBrowser.ActiveXInstance = actualWebBrowser.ActiveXInstance;而不是ppDisp = actualWebBrowser.ActiveXInstance;这听起来非常糟糕且无法编译,因为newTabWebBrowser.ActiveXInstance是只读的。
  • 虽然newTabWebBrowser.Document.Cookie = actualWebBrowser.Document.Cookie;生成的错误不会阻止应用程序,但会跳过我的Browser_NewWindow3()函数。
  • 我还发现InternetSetCookie(url, cookie);必须由[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool InternetSetCookie(string Url, string Cookie);声明。遗憾的是我无法使用这些,也许我会遗漏一些陈述。

问题

如何强制我的新浏览器(在新标签页内)记住其“父母”会话/登录信息?

没有人甚至试图回答。请注意我是否以不正确的方式发布了这个问题,或者是否存在另一个我可以发布我的问题的专用论坛


方案:

enter image description here

0 个答案:

没有答案