IE代理设置
来源:互联网 发布:小站雅思有mac版吗 编辑:程序博客网 时间:2024/04/24 09:00
// TODO
class CSetIEProxy
{
public:
CSetIEProxy()
{
}
virtual ~CSetIEProxy()
{
}
public:
//
// 设置代理
//
BOOL SetProxy(CString strProxyServer)
{
if (SetProxyOption(strProxyServer) && EnableConnetByLan())
{
return TRUE;
}
return FALSE;
}
//
// 取消代理
//
BOOL CanCelProxy()
{
if (DisableConnectionProxy() && DisableConnetByLan())
{
return TRUE;
}
return FALSE;
}
//
// 得到代理(此函数功能有待开发)
//
void GetProxy()
{
GetProxyOption();
}
protected:
//
// 设置Internet代理连接选项
//
BOOL SetProxyOption(CString strProxyServer)
{
INTERNET_PER_CONN_OPTION_LIST List;
INTERNET_PER_CONN_OPTION Option[3];
unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
Option[0].Value.pszValue = (LPTSTR)(LPCTSTR)strProxyServer;
Option[1].dwOption = INTERNET_PER_CONN_FLAGS;
Option[1].Value.dwValue = PROXY_TYPE_PROXY;
Option[1].Value.dwValue |= PROXY_TYPE_DIRECT;
// This option sets all the possible connection types for the client.
// This case specifies that the proxy can be used or direct connection is possible.
Option[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
Option[2].Value.pszValue = _T("<local>");
List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 3;
List.dwOptionError = 0;
List.pOptions = Option;
if (!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
{
return FALSE;
}
Update();
return TRUE;
}
//
// 得到Internet代理连接选项
//
void GetProxyOption()
{
INTERNET_PER_CONN_OPTION_LIST iOptionList; //////Internet连接选项
INTERNET_PER_CONN_OPTION iOptions[3];
ULONG uSize = sizeof(iOptionList);
iOptionList.dwSize = uSize;
iOptionList.pszConnection = NULL;
iOptionList.dwOptionCount = 3;
iOptionList.pOptions = iOptions;
// set proxy type direct or proxy server
iOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
iOptions[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
iOptions[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
if(InternetQueryOption(NULL,INTERNET_OPTION_PER_CONNECTION_OPTION ,(LPVOID)(&iOptionList),&uSize))
{
GlobalFree(iOptionList.pOptions[1].Value.pszValue);
GlobalFree(iOptionList.pOptions[2].Value.pszValue);
GlobalFree(iOptionList.pOptions[3].Value.pszValue);
}
}
//
// 取消IE代理设置
//
BOOL DisableConnectionProxy()
{
INTERNET_PER_CONN_OPTION_LIST List;
INTERNET_PER_CONN_OPTION Option[1];
unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
Option[0].dwOption = INTERNET_PER_CONN_FLAGS;
Option[0].Value.dwValue = PROXY_TYPE_DIRECT;
List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 1;
List.dwOptionError = 0;
List.pOptions = Option;
if (!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
{
return FALSE;
}
Update();
return TRUE;
}
// 使代理可用
//
// 修改IE拨号选项,改为不拨号
//
BOOL EnableConnetByLan()
{
HKEY hKey = OpenRegister();
if (NULL == hKey)
{
return FALSE;
}
DWORD dw = FALSE;
if (ERROR_SUCCESS != RegSetValueEx(hKey, // subkey handle
_T("EnableAutodial"), // value name
0, // must be zero
REG_DWORD, // value type
(LPBYTE)&dw, // pointer to value data
sizeof(dw)))
{
RegCloseKey(hKey);
return FALSE;
}
RegCloseKey(hKey);
Update();
return TRUE;
}
// 使代理不可用
//
// 修改IE拨号选项,改为拨号
//
BOOL DisableConnetByLan()
{
HKEY hKey = OpenRegister();
if (NULL == hKey)
{
return FALSE;
}
DWORD dw = TRUE;
if (ERROR_SUCCESS != RegSetValueEx(hKey, // subkey handle
_T("EnableAutodial"), // value name
0, // must be zero
REG_DWORD, // value type
(LPBYTE)&dw, // pointer to value data
sizeof(dw)))
{
RegCloseKey(hKey);
return FALSE;
}
RegCloseKey(hKey);
Update();
return TRUE;
}
// 打开注册表项
HKEY CSetIEProxy::OpenRegister()
{
HKEY hKey;
DWORD dwDisp;
long lResult = 0;
lResult = RegCreateKeyEx(HKEY_CURRENT_USER,
_T("Software//Microsoft//Windows//CurrentVersion//Internet Settings"),
0,
_T(""),
0,
0,
NULL,
&hKey,
&dwDisp);
if (ERROR_SUCCESS != lResult)
{
hKey = NULL;
}
return hKey;
}
// 更新代理
void CSetIEProxy::Update()
{
//通知:注册表中代理改变,下次连接时启动代理
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
//从注册表中读入代理
InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
}
};
如果需要枚举拨号连接,可以使用 RasEnumConnections
// 详细的请见 BLOG.CSND.NET/HAPPYHELL
- IE代理设置
- IE代理设置
- DOS设置IE代理
- C#设置IE代理
- IE代理设置脚本
- 设置ie代理
- C#设置IE代理
- 注册表设置IE代理
- C# 设置ie代理
- 获取 IE 的代理设置
- 设置IE代理-小程序
- 如何自动化设置IE代理
- C# 设置IE浏览器代理
- PRX 设置IE浏览器代理
- 轻松切换IP及IE代理设置
- 轻松切换IP及IE代理设置
- 轻松切换IP及IE代理设置
- 如何用C#设置IE的代理
- 【NIIT 中国】走近JavaEE5与Glassfish应用服务器
- 人十种最美的东西(转载)
- 微软安全小组公布反制SQL注入的方案
- 107句JS常用语句
- Dblink
- IE代理设置
- 基于UPnP发现与组播技术的IPTV终端实现
- 中国电信收购联通C网预案准备已经就位
- DataGrid分页
- 我也试用YUI Uploader
- .NET中SqlDataAdaper的使用
- Hudsuckr Windows Proxy Configuration Tool
- Oracle10g新特性:Recycle Bin回收站
- 手工杀毒方法