使用VC,怎样设置IE代理服务的用户名和密码呢,IE窗口打开时不需要手工的输入,我使用修改注册表和InternetSetOption()的方法设置了ip地址和端口,但是不知道如何在程序中设置代理服务器的用户名和地址,我也试过InternetSetOption(NULL,INTERNET_OPTION_USERNAME,(LPVOID)user.c_str(),user.size()+1)来设置,但是没成功,大家帮帮忙
解决方案 »
- CString的format文字不对齐
- 32bit的windows进程,到底支持2G内存空间还是4G,可以设置么?
- 用BasicExcel类读取excel,不能输出中文?
- 真的是搞不懂,高手帮忙看看,以下代码建立toolbar怎么不行呢?
- 100分请教高手一个dll调试的基本问题。
- 一个关于实时绘图的问题。敬请高手回答(50分)
- 编译问题
- 在VC中,全局变量(几个Cpp中),如何使用?
- 有搞WINCE开发的吗?大家互相结识一下,以后有问题可交流!
- 如何让程序在系统启动时就能自动运行?
- 深圳 做了4年多找不好工作 好苦苦苦
- Unhandled exception in CollectData.exe (KERNEL32.DLL):0xC0000005:Access Violation.
http://topic.csdn.net/u/20090803/09/29ebcef5-0000-49bd-b9a6-3b3694dc194c.html
http://support.microsoft.com/kb/q195650/
{
BOOL bResult;
HKEY phKResult;
DWORD dwcode = 0;
LPCTSTR pchSubKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";
RegOpenKeyEx(HKEY_CURRENT_USER, pchSubKey, 0, KEY_ALL_ACCESS, &phKResult); //打开注册表
int i = 1;
RegSetValueEx(phKResult, "ProxyServer", 0, REG_SZ,(LPBYTE)strFullAddr.c_str(), strFullAddr.size()+1);//设置注册表键值
RegCloseKey(phKResult);
EnableProxy(true);//获得打开代理允许
bResult = InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0); //通知注册表中代理改变,下次连接时启动代理
bResult = InternetSetOption(NULL ,INTERNET_OPTION_REFRESH , NULL, 0); //从注册表中读入代理
DWORD size = sizeof(dwcode);
HttpQueryInfo(NULL, HTTP_QUERY_FLAG_NUMBER |
HTTP_QUERY_STATUS_CODE, &dwcode, &size , NULL);
if(dwcode = HTTP_STATUS_PROXY_AUTH_REQ)//设置用户名和密码
{
bResult = InternetSetOption(NULL,INTERNET_OPTION_USERNAME,(LPVOID)user.c_str(),user.size()+1);
bResult = InternetSetOption(NULL,INTERNET_OPTION_USERNAME,(LPVOID)passwd.c_str(),passwd.size()+1);
} return bResult;
}
虽然设置了ip和端口,但是用户名和密码设置不了
bResult = InternetSetOption(NULL,INTERNET_OPTION_USERNAME,(LPVOID)passwd.c_str(),passwd.size()+1);第二个参数怎么都是INTERNET_OPTION_USERNAME 应该不一样吧。
怎么用赋值运算符。。 应该是 dwcode == HTTP_STATUS_PROXY_AUTH_REQ 吧。另 HttpQueryInfo没有判断返回值。
bResult = InternetSetOption(NULL ,INTERNET_OPTION_REFRESH , NULL, 0); //从注册表中读入代理
貌似要在最后调用。不然你白设置了。没刷进去。
{
...
...
//去掉下面
/* HttpQueryInfo(NULL, HTTP_QUERY_FLAG_NUMBER |
HTTP_QUERY_STATUS_CODE, &dwcode, &size , NULL);
if(dwcode = HTTP_STATUS_PROXY_AUTH_REQ)//设置用户名和密码
{
bResult = InternetSetOption(NULL,INTERNET_OPTION_USERNAME,(LPVOID)user.c_str (),user.size()+1);
bResult = InternetSetOption(NULL,INTERNET_OPTION_USERNAME,(LPVOID)passwd.c_str(),passwd.size()+1);
}*/
return bResult;
}然后在调用时SetProxy("user:[email protected]:80"); 检测internet的选项,已经写进去了,可是还可以打开网页,我SetProxy("127.0.0.1:80")调用时就运行正确,是显示不了网页的,不知道为什么SetProxy("user:[email protected]:80");还能显示?
bResult = InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0); //通知注册表中代理改变,下次连接时启动代理
bResult = InternetSetOption(NULL ,INTERNET_OPTION_REFRESH , NULL, 0); //从注册表中读入代理
貌似要在最后调用。不然你白设置了。没刷进去。
[/Quote我试了,]放在最后也没效果,不知道哪里出问题