[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;

原文地址:https://www.cnblogs.com/hqyj/p/2165316.html