如何判断一台使用代理上网的机器是否上网 ( 积分: 50 )

  • 主题发起人 主题发起人 xiaolinj79
  • 开始时间 开始时间
X

xiaolinj79

Unregistered / Unconfirmed
GUEST, unregistred user!
例如使用sygate等软件做代理服务器上网
如何判断
 
有判断能否上网的API函数
internetgetconnectedstate
 
直接上网容易判断,但是通过代理比较麻烦
 
检查某网站可以访问不就是了,为不误判你可以多检测几个网站。

uses wininet, ThrDown;


function IsInternet: Boolean;
begin
if InternetCheckConnection('http://www.baidu.com/',1,0) then
Result := True
else
Result := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
var

begin
if IsInternet() then
ShowMessage('网络正常')
else
ShowMessage('没有外网');
end;
 
算是解决了吧
 
const
INTERNET_CONNECTION_MODEM = 1; // 通过modem连接上网
INTERNET_CONNECTION_LAN = 2; // 通过局域网连接上网
INTERNET_CONNECTION_PROXY = 4; // 通过代理连接上网
INTERNET_CONNECTION_MODEM_BUSY = 8; // modem忙,未能连接上网

procedure TForm1.Button1Click(Sender: TObject);
var
dwConnectionTypes: DWORD;
Is_connected:Bool;
begin
dwConnectionTypes := INTERNET_CONNECTION_MODEM+ INTERNET_CONNECTION_LAN+ INTERNET_CONNECTION_PROXY;
Is_connected :=InternetGetConnectedState(@dwConnectionTypes, 0);
if Is_connected then
begin
if (dwConnectionTypes and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then
edit1.Text:='通过Modem连接上网';
if (dwConnectionTypes and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
edit1.Text:='通过局域网连接上网';
if (dwConnectionTypes and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
edit1.Text:='通过代理连接上网';
end;


不是我原创的 但是经过测试 绝对准确
 
后退
顶部