[Delphi]用程序更改 IE 的代理服务器,Proxy设置及本地连接

通过设置注册表来实现,设置完毕立即生效,不用重新启动 IE 浏览器。

参数说明:

Proxy:代理服务器 IP 地址;

Port:端口号;

ByPass:对所有的协议均使用相同的代理服务器;

bEnabled:是否使用代理服务器(代理服务器是否生效)

函数代码:

// uses Wininet, registry;

function ChangeProxy(const Proxy, Port,ByPass: string; const bEnabled: boolean = True): boolean;

var

reg: Tregistry;

info: INTERNET_PROXY_INFO;

Fproxy: string;

begin

Result := False;

FProxy :=Format(\'%s:%s\',[Proxy,Port]);

reg :=Tregistry.Create;

try

reg.RootKey :=HKEY_CURRENT_USER;

if reg.OpenKey(\'\Software\Microsoft\Windows\CurrentVersion\Internet Settings\', True) then

begin

reg.Writestring(\'ProxyServer\', Fproxy);

reg.WriteInteger(\'ProxyEnable\', integer(bEnabled));

info.dwAccessType :=INTERNET_OPEN_TYPE_PROXY;

info.lpszProxy :=pchar(proxy);

info.lpszProxyBypass :=pchar(ByPass);

InternetSetOption(nil, INTERNET_OPTION_PROXY, @info, SizeOf(Info));

InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);

Result:=True;

end

finally

reg.CloseKey;

reg.free;

end;

end;

调用:

procedure TForm1.Button1Click(Sender: TObject);

begin

ChangeProxy(\'202.99.29.27\',\'80\',\'1\',true)

end;

取消:

procedure TForm1.Button2Click(Sender: TObject);

begin

ChangeProxy(\'202.99.29.27\',\'80\',\'1\',false)

end;

rocedure TForm1.Button1Click(Sender: TObject);

var

localIp,ipEnd,dir:string;

list:tstrings;

begin

localIp:=idipwatch1.LocalIP;

list:=tstringlist.Create;

extractstrings([\'.\'],[],pchar(localIp),list);

ipEnd:= list.Strings[list.Count-1];

list.Free;

memo1.Clear;

memo1.Lines.Add(\'@echo off\');

memo1.Lines.Add(\':start\');

memo1.Lines.Add(\'netsh interface ip set address name="本地连接" static 172.16.0.\'+ipEnd+\' 255.255.0.0\');

memo1.Lines.Add(\'netsh interface ip set address name="本地连接" gateway=172.16.0.1 gwmetric=1 >nul\');

memo1.Lines.Add(\'netsh interface ip set dns name="本地连接" source=static addr=172.16.0.1 register=primary\');

memo1.Lines.Add(\'del "ip.bat"\');

memo1.Lines.Add(\'echo.\');

getDir(0,dir);

memo1.Lines.SaveToFile(dir+\'\ip.bat\');

ShellExecute(handle,\'open\',pchar(dir+\'\ip.bat\'),nil,nil,SW_SHOWNORMAL);

end;