#include <windows.h>
#include "Wininet.h"
# pragma comment(lib, "Wininet.lib")void GetProxyOptions(TCHAR *tcProxyFullInfo,DWORD &dwBufLen)
{
DWORD dwSize;
InternetQueryOption(NULL,INTERNET_OPTION_PROXY ,NULL,&dwSize);
dwBufLen = dwSize; if(!tcProxyFullInfo)
return; LPVOID lpData = new TCHAR[dwSize]; InternetQueryOption( NULL,
INTERNET_OPTION_PROXY ,
lpData,&dwSize ); wcscpy_s(tcProxyFullInfo,dwSize,((INTERNET_PROXY_INFO*)lpData)->lpszProxy); delete [] lpData;
}int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwBufLen = 0;
GetProxyOptions(NULL,dwBufLen); TCHAR *tcTemp = new TCHAR[dwBufLen];// * sizeof(TCHAR));
GetProxyOptions(tcTemp,dwBufLen);
//printf("3 %s",tcTemp); //此处显示正常---------------------------------1
MessageBox(NULL,tcTemp,NULL,NULL);//messagebox 显示乱码-------------------2
delete[] tcTemp;
tcTemp = NULL; return 0;
}
上面1处在控制台中输出正常,而在2出用messagebox输出乱码。我的工程本身是Unicode的。GetProxyOptions函数的作用是获得浏览器中“工具”-》Internet选项-》连线-》局域网设定-》Proxycn中的代理服务器地址和端口号的。
#include "Wininet.h"
# pragma comment(lib, "Wininet.lib")void GetProxyOptions(TCHAR *tcProxyFullInfo,DWORD &dwBufLen)
{
DWORD dwSize;
InternetQueryOption(NULL,INTERNET_OPTION_PROXY ,NULL,&dwSize);
dwBufLen = dwSize; if(!tcProxyFullInfo)
return; LPVOID lpData = new TCHAR[dwSize]; InternetQueryOption( NULL,
INTERNET_OPTION_PROXY ,
lpData,&dwSize ); wcscpy_s(tcProxyFullInfo,dwSize,((INTERNET_PROXY_INFO*)lpData)->lpszProxy); delete [] lpData;
}int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwBufLen = 0;
GetProxyOptions(NULL,dwBufLen); TCHAR *tcTemp = new TCHAR[dwBufLen];// * sizeof(TCHAR));
GetProxyOptions(tcTemp,dwBufLen);
//printf("3 %s",tcTemp); //此处显示正常---------------------------------1
MessageBox(NULL,tcTemp,NULL,NULL);//messagebox 显示乱码-------------------2
delete[] tcTemp;
tcTemp = NULL; return 0;
}
上面1处在控制台中输出正常,而在2出用messagebox输出乱码。我的工程本身是Unicode的。GetProxyOptions函数的作用是获得浏览器中“工具”-》Internet选项-》连线-》局域网设定-》Proxycn中的代理服务器地址和端口号的。
wcscpy_s(tcProxyFullInfo,dwSize,((INTERNET_PROXY_INFO*)lpData)->lpszProxy);
中的lpszProxy是LPCTSTR类型的……
MultiByteToWideChar?但是tcTemp 本身已经是TCHAR类型了……
字符编码跟Unicode的工程没有关系,而我错误的弄成TCHAR*保存的字符串一定是Unicode的。
DWORD dwAccessType;
LPCSTR lpszProxy;
LPCSTR lpszProxyBypass;
} INTERNET_PROXY_INFO, * LPINTERNET_PROXY_INFO;
lpszProxy 不是宽字, 用wcscpy不对