Testar conexão internet através do Delphi

16/08/2008

0

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


Pedrocassimiro

Pedrocassimiro

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

19/07/2017

Geraldo Rodrigues

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

06/12/2019

Adriano Pratti

Bom dia - Muito bom, eu só dei uma mudada um pouco na ideia e usei como function, assim posso usar a função direto dentro de u IF e o resultado eu trabalho conforme retorno, inclusive usei um STATUSBAR para mostrar o texto se com ou sem net. abaixo o script em forma de função para quem preferir.

function TForm1.funStatusInternet: Boolean;
var estado : Dword;
begin
try
if not InternetGetConnectedState(@estado, 0) then
Result := 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
Result := True;
end;
except
Result := False
end;
end;

//E dentro de um timer deixei a resposta assim no STATUSBAR
procedure TForm1.tmStatusInternetTimer(Sender: TObject);
begin
if not funStatusInternet then
begin
lblStatusInternet.Font.Color := clRed;
lblStatusInternet.Caption := 'SEM INTERNET OFFLINE';
StatusBar1.Panels[0].Text := 'SEM INTERNET OFFLINE';
end
else
begin
lblStatusInternet.Font.Color := clGreen;
lblStatusInternet.Caption := 'INTERNET ONLINE';
StatusBar1.Panels[0].Text := 'INTERNET ONLINE';
end;
end;

Obrigado a todos.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar