type
PWinHttpCurrentUserIeProxyConfig = ^TWinHttpCurrentUserIeProxyConfig;
TWinHttpCurrentUserIeProxyConfig = record
fAutoDetect : boolean;
lpszAutoConfigUrl : PWideChar;
lpszProxy : PWideChar;
lpszProxyBypass : PWideChar;
end;
TWinHttpGetIeProxyConfigForCurrentUser = function (pProxyConfig :
PWinHttpCurrentUserIeProxyConfig) : boolean; stdcall;
var
WinHttpGetIeProxyConfigForCurrentUser :
TWinHttpGetIeProxyConfigForCurrentUser;
...
H : = LoadLibrary ('winhttp.dll');
if H <> 0 then
try
@WinHttpGetIeProxyConfigForCurrentUser := GetProcAddress (H,
'WinHttpGetIEProxyConfigForCurrentUser');
if Assigned (WinHttpGetIeProxyConfigForCurrentUser) then
...
finally
FreeLibrary (H);
end;
---------------------------------------
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: string; var 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;