积极答复者
为何在WebBrowser控件中点击一个链接的时候,在弹出的新IE窗口中都需要再输入一次密码?

问题
-
如果我直接打开IE登录,然后点击什么连接都是不需要再输入密码的。奇怪为何在WebBrowser中点击就需要呢?- 已移动 Sheng Jiang 蒋晟 2009年11月23日 23:10 IE开发问题 (发件人:Visual Studio 相关讨论)
答案
-
我给你提个解决此问题的思路吧,就是用你自己程序内的WebBrowser打开新窗口,不用IE打开,这样的话你是在一个进程内访问同一个网站,该网站也就会认为你是在同一个会话内。
怎样实现呢?如果你用的是VS2003,WebBrowser控件应该是作为ActiveX控件导入的,在该WebBrowser控件的NewWindow2事件内,有一个AxSHDocVw.DWebBrowserEvents2_NewWindow2Event参数,你把该参数的ppDisp属性设置为你程序中的WebBrowser控件的Application即可,这个WebBrowser可以是在另一个窗体内,示例代码如下:
private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
Form1 frmWB;
frmWB = new Form1();
frmWB.axWebBrowser1.RegisterAsBrowser = true;
e.ppDisp = frmWB.axWebBrowser1.Application;
frmWB.Visible = true;
}VS2005和2008自带的WebBrowser控件没有这个事件,只有一个NewWindow事件,但该事件的参数CancelEventArgs没有ppDisp属性,也就是说MS在实现这个控件时打折了,用它是没法实现上述功能了,你可以还像在VS2003上一样,用ActiveX的WebBrowser控件试试。
全部回复
-
我给你提个解决此问题的思路吧,就是用你自己程序内的WebBrowser打开新窗口,不用IE打开,这样的话你是在一个进程内访问同一个网站,该网站也就会认为你是在同一个会话内。
怎样实现呢?如果你用的是VS2003,WebBrowser控件应该是作为ActiveX控件导入的,在该WebBrowser控件的NewWindow2事件内,有一个AxSHDocVw.DWebBrowserEvents2_NewWindow2Event参数,你把该参数的ppDisp属性设置为你程序中的WebBrowser控件的Application即可,这个WebBrowser可以是在另一个窗体内,示例代码如下:
private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
Form1 frmWB;
frmWB = new Form1();
frmWB.axWebBrowser1.RegisterAsBrowser = true;
e.ppDisp = frmWB.axWebBrowser1.Application;
frmWB.Visible = true;
}VS2005和2008自带的WebBrowser控件没有这个事件,只有一个NewWindow事件,但该事件的参数CancelEventArgs没有ppDisp属性,也就是说MS在实现这个控件时打折了,用它是没法实现上述功能了,你可以还像在VS2003上一样,用ActiveX的WebBrowser控件试试。