动态使用代理服务器,今天我自己封装了一个函数,在盒子上面下载一个源码,把里边的过程综合了一下,封装成一个代理专用的函数,呵呵,收藏起来,方便以后使用。另外还有一种方法也可以使用代理服务器,那就是ihttp下载文件的时候使用代理服务器。
function SetProxy(proxyS,proxyP:string;isUse:BOOL);
//proxyS: 代理服务器IP地址
//proxyP: 代理服务器端口
//isUse: true表示启用 false表示停用
var FProxy,proxy,port: string;
Pinfo: INTERNET_PROXY_INFO;
reg: Tregistry;
begin
//设置代理服务器
proxy:=proxyS; //服务器地址
port:=proxyP; //服务器端口
FProxy:=Format('%s:%s',[Proxy,port]);
Pinfo.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
Pinfo.lpszProxy := pchar(proxy);
//Pinfo.lpszProxy := pchar(FProxy);
InternetSetOption(nil, INTERNET_OPTION_PROXY, @Pinfo, SizeOf(PInfo));
InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
//根据参数来调整注册表
reg:=Tregistry.Create;
try
reg.RootKey := HKEY_CURRENT_USER;
if reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Internet Settings', True) then
begin
reg.Writestring('ProxyServer', FMproxy);
if isUse then
reg.WriteInteger('ProxyEnable', integer(true))
else
reg.WriteInteger('ProxyEnable', integer(false));
end;
finally
reg.CloseKey;
reg.free;
end;
end;
使用idhttp控件,调整代理服务器参数也可以实现通过代理服务器访问。
idhttp1.ProxyParams.ProxyServer :=proxyip.Text ;//代理地址
idhttp1.ProxyParams.ProxyPort :=StrToInt(port.text);//端口
//如果代理需要验证
idhttp1.ProxyParams.ProxyUsername:=uname.Text ;//用户名
idhttp1.ProxyParams.ProxyPassword:=pw.Text ; //密码