动态使用代理服务器,今天我自己封装了一个函数,在盒子上面下载一个源码,把里边的过程综合了一下,封装成一个代理专用的函数,呵呵,收藏起来,方便以后使用。另外还有一种方法也可以使用代理服务器,那就是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 ; //密码

最后修改:2009 年 08 月 16 日
一分也是爱