怎么设置IE代理服务器
其實就一個注冊表的簡單操作
在HKEY_CURRENT_USER//Software//Microsoft//Windows//CurrentVersion//Internet Settings//ProxyServer中有幾個值
ProxyEnable不為0表示當前IE使用代理服務器,ProxyServer表示代理服務器的值,
直接貼代碼,代碼還有部分不完整處,支持多字節和UNICODE
ULONG regsize = 0;
if(ERROR_SUCCESS != RegQueryValueEx(hKeyOut, TEXT("ProxyServer"), NULL, NULL, NULL, ?size))
{
RegCloseKey(hKeyOut);
return FALSE;
}
LPBYTE pValue = new BYTE[regsize];
memset(pValue, 0x00, regsize);
if(ERROR_SUCCESS != RegQueryValueEx(hKeyOut, TEXT("ProxyServer"), NULL, NULL, pValue, ?size))
{
RegCloseKey(hKeyOut);
return FALSE;
}
CString oldproxy((TCHAR *)pValue);
delete [] pValue;
pValue = NULL;
//從注冊表中讀出來的數據格式為:http=111.111.111.111:80;ftp=222.222.222.222:21;......,
//如果你只想改變http的代理的話, 就只要把其中的111.111.111.111:80換成你想要的代理就行了,
//類似的你可以改變其他的代理.
//下面的代碼就替換http代理成為參數所指定的代理.
int pos = 0;
//如果沒有字符串中沒有找到"http="說明用戶沒有設置http代理,這時候直接加在最前面.
if(-1 == (pos = oldproxy.Find(TEXT("http="))))
{
pos = 0;
}
int pos1 = 0;
if(-1 == (pos1 = oldproxy.Find(TEXT(";"), pos)))
{
pos1 = oldproxy.GetLength();
}
oldproxy.Delete(pos, pos1 - pos);
oldproxy.Insert(pos, l_just);
if(ERROR_SUCCESS != RegSetValueEx(hKeyOut,TEXT("ProxyServer"), 0, REG_SZ, (const BYTE *)oldproxy.LockBuffer(),(oldproxy.GetLength()+1)*sizeof(TCHAR) ))
{
int Err = GetLastError() ;
TRACE1("ERROR:%d/r/n",Err) ;
RegCloseKey(hKeyOut);
return FALSE;
}
RegCloseKey(hKeyOut);
//使設置生效
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0) ;
InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
return TRUE;
}
BOOL GetHttpProxy(CString &ip,BOOL &bProxyEnable)
{
HKEY hKeyIn = HKEY_CURRENT_USER, hKeyOut;
if(RegOpenKeyEx(hKeyIn,
TEXT("Software//Microsoft//Windows//CurrentVersion//Internet Settings"),
0,
KEY_CREATE_LINK | KEY_WRITE | KEY_READ | KEY_NOTIFY,
&hKeyOut) != ERROR_SUCCESS )
{
return FALSE;
}
//檢測是否已經允許使用代理服務器
ULONG regsize = 0;
if(RegQueryValueEx(hKeyOut,
TEXT("ProxyEnable"),
NULL,
NULL,
NULL,
?size)!=ERROR_SUCCESS)
{
return FALSE;
}
LPBYTE pValue = new BYTE[regsize];
memset(pValue, 0x00, regsize);
if(RegQueryValueEx(hKeyOut,
TEXT("ProxyEnable"),
NULL,
NULL,
pValue,
?size)!=ERROR_SUCCESS)
{
return FALSE;
}
bProxyEnable=(int)*pValue;
delete[] pValue;
pValue = NULL;
/************************************************************/
if(bProxyEnable)
{
regsize = 0;
if(RegQueryValueEx(hKeyOut, TEXT("ProxyServer"), NULL, NULL, NULL, ?size)!=ERROR_SUCCESS)
{
return FALSE;
}
pValue = new byte[regsize];
memset(pValue, 0x00, regsize);
if(RegQueryValueEx(hKeyOut, TEXT("ProxyServer"), NULL, NULL, pValue, ?size)!=ERROR_SUCCESS)
{
return FALSE;
}
ip = (LPTSTR)pValue ;
delete[] pValue;
pValue = NULL;
}
else
ip="";
RegCloseKey(hKeyOut);
return TRUE;
}
BOOL DelProxy()
{
HKEY hKeyIn = HKEY_CURRENT_USER, hKeyOut;
if(RegOpenKeyEx(
hKeyIn,
TEXT("Software//Microsoft//Windows//CurrentVersion//Internet Settings"),
0,
KEY_CREATE_LINK | KEY_WRITE | KEY_READ | KEY_NOTIFY,
&hKeyOut) != ERROR_SUCCESS )
{
return FALSE;
}
ULONG regsize = 0;
if(RegQueryValueEx(
hKeyOut,
TEXT("ProxyEnable"),
NULL,
NULL,
NULL,
?size)!=ERROR_SUCCESS)
{
return FALSE;
}
LPBYTE pValue = new BYTE[regsize];
memset(pValue, 0x00, regsize);
if(RegQueryValueEx(
hKeyOut,
TEXT("ProxyEnable"),
NULL,
NULL,
pValue,
?size)!=ERROR_SUCCESS)
{
return FALSE;
}
BOOL bEnable=(BOOL)*pValue;
delete[] pValue;
pValue = NULL;
/************************************************************/
if(bEnable)
{
regsize = 0;
if(RegQueryValueEx(
hKeyOut,
TEXT("ProxyServer"),
NULL,
NULL,
NULL,
?size)!=ERROR_SUCCESS)
{
return FALSE;
}
pValue = new BYTE[regsize];
memset(pValue, 0x00, regsize);
DWORD dwData=0;
if(RegSetValueEx(
hKeyOut,
TEXT("ProxyEnable"),
0,
REG_DWORD,
(LPBYTE)&dwData,
sizeof(DWORD))!=ERROR_SUCCESS)
{
return FALSE;
}
RegCloseKey(hKeyOut);
//使設置生效
if(!InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0))
{
return FALSE;
}
}
return TRUE;
}
RegSetValueEx中最后一個參數大小為byte計算.
總結
以上是生活随笔為你收集整理的怎么设置IE代理服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Svelte 中的 watch: 反应性
- 下一篇: C# 制作Com组件:java调用.ne