Testar conexão internet através do Delphi
16/08/2008
0
Um abraço a todos
Pedrocassimiro
Posts
16/08/2008
Marco Salles
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´);
16/08/2008
Pedrocassimiro
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
20/08/2008
Pedrocassimiro
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
20/08/2008
Marco Salles
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 ????
21/08/2008
Pedrocassimiro
Vou implementar novas rotinas e testar. Não se preocupe pois assim que resolver te retorno.
Um abraço
27/09/2014
Ademir Lusa
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.
19/07/2017
Geraldo Rodrigues
15/09/2017
Rosilene Back
06/12/2019
Adriano Pratti
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.
Clique aqui para fazer login e interagir na Comunidade :)