积极答复者
求解答....

问题
答案
-
蒋晟大哥,你的意思应该我明白了,自定义身份验证不是我想要的,因为我要是去使用你说的方法,我就完全可以自己做一个跟IE验证框一样的对话框,只要收到代理服务器传过来的407我就弹出来,获取user和passwd就方便多了。但是这样就没经过IE了。也不是什么IE代理了。
不知道IE代理到底是怎么回事。汗!没这方面的资料。。。
我想了几种尝试,间接的获取IE验证框中的用户名和密码,都失败了。
1.在我的软件中添加一个浏览器控件,当收到407就使用该控件去访问一个网站,这时就会弹出IE验证输入框,然后输入密码和用户名。使用枚举窗口,获取到IE系统对话框的句柄,然后获取用户名和密码,其他的控件可以获取到,居然密码不可以获取到,郁闷。。。。
2.开始以为IE验证提示框的资源在browseui.dll中,就去获取这个dll中IE验证提示框的资源,然后去派生一个dialog类,这样我就想怎么弹就怎么弹。 结果是browseui.dll中没有RT_DIALOG资源...汗!又不知道这个对话框的资源在哪...迷茫中....
意外的发现在1中,当弹出IE验证框,输入按确定后,居然我的软件中发出的http包中有Base64编码的用户名和密码...晕了。。。。 太深奥了!...
- 已标记为答案 西瓜头 2011年12月19日 8:29
全部回复
-
1.InternetSetOption这个函数可以设置用户名和密码,而我是想获取弹出用户名和密码框输入后点击确定后的用户名和密码,而不是开始就自己设置。
比如在使用QQ软件的时候,我们先设置IE的代理IP,端口(注:此代理需要用户名和密码验证),然后在QQ的登录界面使用IE代理,登录时会弹出IE的验证框,输入后可以登录。 腾讯是怎么实现的呢?
我有听说过 IE代理的原理:说什么底层会进行IE健全,用户名和密码框会自动弹出来,什么什么的...我不是很清楚原理。 求指导。拜谢。。。
我就想实现我的客户端使用IE代理时,需要验证,弹出用户名和密码输入提示框。能和QQ一样登录正常。
-
要在你的程序支持代理身份验证的话,需要实现IAuthenticate和IAuthenticateEx
IE在调用IAuthenticate方面有一些bug,比如在当前文档不是网页的时候不会调IAuthenticate(需要安装KB329802修复)
The following is signature, not part of post
Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
Visual C++ MVP -
IE的网络层是WinInet,所以 WinInet的API可以影响IE的行为,比如UrlMkSetSessionOption
IAuthenticate是MSHTML提供的扩展接口,用来自定义身份验证的界面,在服务器挑战用户身份的时候触发。
The following is signature, not part of post
Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
Visual C++ MVP -
蒋晟大哥,你的意思应该我明白了,自定义身份验证不是我想要的,因为我要是去使用你说的方法,我就完全可以自己做一个跟IE验证框一样的对话框,只要收到代理服务器传过来的407我就弹出来,获取user和passwd就方便多了。但是这样就没经过IE了。也不是什么IE代理了。
不知道IE代理到底是怎么回事。汗!没这方面的资料。。。
我想了几种尝试,间接的获取IE验证框中的用户名和密码,都失败了。
1.在我的软件中添加一个浏览器控件,当收到407就使用该控件去访问一个网站,这时就会弹出IE验证输入框,然后输入密码和用户名。使用枚举窗口,获取到IE系统对话框的句柄,然后获取用户名和密码,其他的控件可以获取到,居然密码不可以获取到,郁闷。。。。
2.开始以为IE验证提示框的资源在browseui.dll中,就去获取这个dll中IE验证提示框的资源,然后去派生一个dialog类,这样我就想怎么弹就怎么弹。 结果是browseui.dll中没有RT_DIALOG资源...汗!又不知道这个对话框的资源在哪...迷茫中....
意外的发现在1中,当弹出IE验证框,输入按确定后,居然我的软件中发出的http包中有Base64编码的用户名和密码...晕了。。。。 太深奥了!...
- 已标记为答案 西瓜头 2011年12月19日 8:29