来源:www.cncfan.com | 2006-1-10 | (有2027人读过)
如果我们开发的对象,不是在公网的环境内上网,是使用内网的,我们应该怎么样检测你的IE使用的代理服务器呢?接下来我们通过以下实例来学习:
//----------------------------------------------- //记得引用 WinInet 单元 //----------------------------------------------- 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;
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); if ProxyPort=0 then begin ShowMessage('你的IE没有使用的代理服务器') end else Label1.Caption := ProxyServer; label2.Caption := IntToStr(ProxyPort);
end;
|