...Determine proxy server settings in IE?

Author: shmia

Category: Internet / LAN

uses
  
WinInet;

function GetProxyInformation: string;
var
  
ProxyInfo: PInternetProxyInfo;
  Len: LongWord;
begin
  
Result := '';
  Len := 4096;
  GetMem(ProxyInfo, Len);
  try
    if 
InternetQueryOption(nil, INTERNET_OPTION_PROXY, ProxyInfo, Len) then
      if 
ProxyInfo^.dwAccessType = INTERNET_OPEN_TYPE_PROXY then
      begin
        
Result := ProxyInfo^.lpszProxy
      end;
  finally
    
FreeMem(ProxyInfo);
  end;
end;

{**************************************************************************
* NAME:    GetProxyServer
* DESC:    Proxy-Server Einstellungen abfragen
* PARAMS:  protocol => z.B. 'http' oder 'ftp'
* RESULT:  [-]
* CREATED: 08-04-2004/shmia
*************************************************************************}
procedure GetProxyServer(protocol: stringvar ProxyServer: string;
  var ProxyPort: Integer);
var
  
i: Integer;
  proxyinfo, ps: string;
begin
  
ProxyServer := '';
  ProxyPort := 0;

  proxyinfo := GetProxyInformation;
  if proxyinfo = '' then
    
Exit;

  protocol := protocol + '=';

  i := Pos(protocol, proxyinfo);
  if i > 0 then
  begin
    
Delete(proxyinfo, 1, i + Length(protocol));
    i := Pos(';', ProxyServer);
    if i > 0 then
      
proxyinfo := Copy(proxyinfo, 1, i - 1);
  end;

  i := Pos(':', proxyinfo);
  if i > 0 then
  begin
    
ProxyPort := StrToIntDef(Copy(proxyinfo, i + 1, Length(proxyinfo) - i), 0);
    ProxyServer := Copy(proxyinfo, 1, i - 1)
  end
end
;

procedure TForm1.Button1Click(Sender: TObject);
var
  
ProxyServer: string;
  ProxyPort: Integer;
begin
  
GetProxyServer('http', ProxyServer, ProxyPort);
  Label1.Caption := ProxyServer;
  label2.Caption := IntToStr(ProxyPort);
end;

 

printed from
www.swissdelphicenter.ch
developers knowledge base