Testar conexão internet através do Delphi

16/08/2008

39

Tenho uma aplicação que para executar um determinado procedimento, necessita estar conectada à internet. Sendo assim, antes de ativar o procedimento, tenho que testar se a máquina está conectada com a internet. Alguém poderia me ajudar informando de alguma função para resolver esse meu problema?

Um abraço a todos


Responder

Posts

16/08/2008

Marco Salles

De uma olhada na Unit : WinInet , existem muitas funçoes pre-definidas
que usa a API wininet.dll . Essa DLL esta definida em System32 no caso do Windows ...

De qualquer forma tente assim ...

var
 i:dword;
begin
if InternetGetConnectedState(@i,0) then
  showmessage(´esta conectado´)
else
  showmessage(´nun ta não´);



Responder

16/08/2008

Pedrocassimiro

Caro colaborador

Testei a rotina no meu micro e funcionou. Falta apenas testar nas máquinas do meu cliente, pois o mesmo possui uma rede com várias estações conectadas. Assim que concluir os testes te informo se está tudo OK.

Muito obrigado


Responder

20/08/2008

Pedrocassimiro

Prezado colaborador

A rotina que você me orientou a implementar para testar a conexão com a Internet, funciona perefeitamente no meu notebook, onde tenho um modem banda larga 3G. Ao colocar a aolicação na maquina do meu cliente, que tem uma rede de 2 micros e um deles é ligado a um modem da Velox (internet banda larga), a rotina não funciona. Alguma outra orientação, pois ja nao sei mais o q fazer...

Um abraço


Responder

20/08/2008

Marco Salles

Existem muitas rotinas com esta finalidade ... Ums tem sucessos com uma outras tem sucesso com outras . Bem pelo menos isto é o que dá para entender lendo os Tópicos sobre o assunto...

Eu particularmente , gosto de usar a dll wininet .. Eu porém não sei como esta configurado essas máquinas na Rede . Muitas vezes existem Terminais de rede com menos capacidade , com pouca memória e baixa velocidade e não comporta o Xp,ou não tem esta DLL instalada <System32> . São apenas Terminais ´Burros´.

Curiosamente voce chegou a testou o Codigo na Máquina SERVIDORA ???

Tente colocar o código abaixo e reporte o codigo abaixo para saber como é a sua Rede :

function connectionkind: boolean;
var
  flags: dword;
begin
  result := internetgetconnectedstate(@flags, 0);
  if result then
  begin
  if (flags and internet_connection_modem) = internet_connection_modem
then
  showmessage(´modem´);
  if (flags and internet_connection_lan) = internet_connection_lan then
  showmessage(´lan´);
  if (flags and internet_connection_proxy) = internet_connection_proxy
then
  showmessage(´proxy´);
  if (flags and internet_connection_modem_busy) =
internet_connection_modem_busy then
  showmessage(´modem busy´);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
connectionkind;
end;


E tb efetuar uma pesquisa rápida que voce terá outras opções , para testar esta conectividade . So não deixa de informar com qual desses codigos voce conseguirá resolver o seu problema ...

por exemplo :

http://www.tecnobyte.com.br/dica5.html

http://forum.devmedia.com.br/viewtopic.php?p=97041&sid=42fad706634eae3c532bd6e80d5d1555

http://forum.devmedia.com.br/viewtopic.php?t=30176&start=0&postdays=0&postorder=asc&highlight=

http://www.forumweb.com.br/foruns/index.php?showtopic=31192

enfim , são muitas opções ... Mas o codigo que lhe passei deveria funcionar , pelo menos no SERVIDOR ????


Responder

21/08/2008

Pedrocassimiro

Marcos

Vou implementar novas rotinas e testar. Não se preocupe pois assim que resolver te retorno.

Um abraço


Responder

27/09/2014

Ademir Lusa

funcionou legal dessa forma


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, WiniNet;

type
TForm1 = class(TForm)
Button1: TButton;
procedure CONECTADO;
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }

end;

var
Form1: TForm1;
IsGlobalOffline : Boolean;
implementation

{$R *.dfm}

procedure TForm1.CONECTADO;
var estado : Dword;
begin
if not InternetGetConnectedState(@estado, 0) then
IsGlobalOffline := False
else
begin
if (estado and INTERNET_CONNECTION_LAN <> 0) OR (estado and INTERNET_CONNECTION_MODEM <> 0) or (Estado and INTERNET_CONNECTION_PROXY <> 0) then
IsGlobalOffline := True;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var estado : Dword;
begin
CONECTADO;

if IsGlobalOffline = False then
BEGIN
ShowMessage('Você não está conectado à Internet.')
end;

if IsGlobalOffline = TRUE then
BEGIN
ShowMessage(':: Connection :: Você está conectado à Internet::');
end;
end;

End.
Responder
Testei está última opção e funcionou corretamente.
Responder

15/09/2017

Rosilene Back

Aqui não deu certo. Apenas verifica se está conectado a uma rede. Mais não verifica se nessa rede tem internet.
Responder