Fórum Verificar se Internete está conectada #337665
10/02/2007
0
Preciso ver se o usuário está com a internet conectada. Tentei as seguinte funções:
**********
function InternetConectada : boolean;
Var
ConnectedState : DWord;
begin
InternetGetConnectedState(@ConnectedState, 0);
if (INTERNET_CONNECTION_LAN and ConnectedState = INTERNET_CONNECTION_LAN) or
(INTERNET_CONNECTION_MODEM and ConnectedState = INTERNET_CONNECTION_MODEM) or
(INTERNET_CONNECTION_PROXY and ConnectedState = INTERNET_CONNECTION_PROXY) then
Result := True
else
Result := False;
end;
e
if InternetGetConnectedState(@flags, 0) then
ShowMessage(´Internet conectada´);
***********
O problema é que, mesmo que não exista conexão com a internet, o resutado é sempre true.
Faço o seguinte teste: no meu laboratório de testes tenho um modem roteador para conexão à internet. Primeiro faço o teste com tudo ligado. Depois tiro o cabo do modem do roteador, ou seja, desligo o sinal ADSL. Porém, executando as rotinas, ambas retornam true, quando deveriam retornar false.
Alguém sabe por que isso ocorre?
Existe alguma outra forma de fazer o que preciso?
Obrigado.
**********
function InternetConectada : boolean;
Var
ConnectedState : DWord;
begin
InternetGetConnectedState(@ConnectedState, 0);
if (INTERNET_CONNECTION_LAN and ConnectedState = INTERNET_CONNECTION_LAN) or
(INTERNET_CONNECTION_MODEM and ConnectedState = INTERNET_CONNECTION_MODEM) or
(INTERNET_CONNECTION_PROXY and ConnectedState = INTERNET_CONNECTION_PROXY) then
Result := True
else
Result := False;
end;
e
if InternetGetConnectedState(@flags, 0) then
ShowMessage(´Internet conectada´);
***********
O problema é que, mesmo que não exista conexão com a internet, o resutado é sempre true.
Faço o seguinte teste: no meu laboratório de testes tenho um modem roteador para conexão à internet. Primeiro faço o teste com tudo ligado. Depois tiro o cabo do modem do roteador, ou seja, desligo o sinal ADSL. Porém, executando as rotinas, ambas retornam true, quando deveriam retornar false.
Alguém sabe por que isso ocorre?
Existe alguma outra forma de fazer o que preciso?
Obrigado.

Armindo
Curtir tópico
+ 0
Responder
Posts
12/02/2007
Nightshade
utilize o TIdIPWatch da palheta indy..
dai no evento dele de onStatusChanged coloke
procedure TFrmMain.iIdIPWatch1StatusChanged(Sender: TObject);
begin
if (IdIPWatch1.IsOnline) then
begin
showmessage(´conectado´);
end;
end;
se vc tiver algum adaptador de rede ativo, ele deduzira que vc esta conectado a internet, pois ele nao verifica a conexao http, e sim sua placa de rede..
n precisa nem por timer nesse componente
[]´s
dai no evento dele de onStatusChanged coloke
procedure TFrmMain.iIdIPWatch1StatusChanged(Sender: TObject);
begin
if (IdIPWatch1.IsOnline) then
begin
showmessage(´conectado´);
end;
end;
se vc tiver algum adaptador de rede ativo, ele deduzira que vc esta conectado a internet, pois ele nao verifica a conexao http, e sim sua placa de rede..
n precisa nem por timer nesse componente
[]´s
Responder
Gostei + 0
12/02/2007
Armindo
utilize o TIdIPWatch da palheta indy..
dai no evento dele de onStatusChanged coloke
procedure TFrmMain.iIdIPWatch1StatusChanged(Sender: TObject);
begin
if (IdIPWatch1.IsOnline) then
begin
showmessage(´conectado´);
end;
end;
se vc tiver algum adaptador de rede ativo, ele deduzira que vc esta conectado a internet, pois ele nao verifica a conexao http, e sim sua placa de rede..
n precisa nem por timer nesse componente
[]´s
Obrigado, mas não resolve. Esse componente faz a mesma coisa que as funções que citei na abertura do tópico, ou seja, independentemente se há ou não conexão com a intenet, o retorno é sempre true enquanto houver uma conexão de rede ativa.
Obrigado.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)