Programowanie w języku Delphi » FAQ

Jak sprawdzić, czy użytkownik jest w Internecie

Ta funkcja nie wszystkim działa więc....

W sekcji "Interface" dodaj nagłówek:

function InetIsOffline(Flag: Integer): Boolean; stdcall;
external 'URL.DLL';

Teraz w procedurze:

  if InetIsOffline(0) then
    ShowMessage('Jestem offline') else
  ShowMessage('Jestem online');

7 komentarzy

mgyver 2009-12-12 19:11

Niezawodne rozwiązanie:

function IsNet:Boolean;
const
  FLAG_ICC_FORCE_CONNECTION     =  $0001;
// Missing constant for InternetGetConnectedState flags
const
  INTERNET_PING_SITES: Array [0..2] of PChar =
                                ('http://www.google.com',
                                 'http://www.wp.com',
                                 'http://www.onet.com');
var
  dwFlags:    DWORD;
begin
  for dwFlags:=Low(INTERNET_PING_SITES) to High(INTERNET_PING_SITES) do
  begin
    // Check the connection
    Result:= InternetCheckConnection(INTERNET_PING_SITES[dwFlags], FLAG_ICC_FORCE_CONNECTION, 0);
    if Result then
      Break;
  end;
end;

A tak się tego używa:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo.Clear;
  if IsNet then
    Memo.Lines.Add('Użytkownik jest teraz podłączony do internetu.')
  else
    Memo.Lines.Add('Użytkownik nie jest teraz podłączony do internetu!');
end;

obtgrafi 2009-01-23 13:34

Prościej wykorzystać komponenty Indy a konkretnie kontrolkę IdEcho.

Dajemy kod:

try
    IdEcho1.Host:='onet.pl';
    IdEcho1.Port:=80;
    IdEcho1.Connect(1000);
except
    ShowMessage('Nie wykryto połączenia !');
end;

atvserwis 2006-07-28 18:24

A ja sobie używam coś takiego i jeszcze mnie cholerstwo nie zawiodło :PPP

Function InternetConnection:Boolean;
Var
   St                 : Integer;
Begin
   Result:=InternetGetConnectedState(@St, 0);
End;

PS
Do Uses należy dodać: WinInet  - o ile mnie baniak nie oszukuje :D

Zawadzki 2004-11-06 19:45

przykro mi, u mnie nie działa :)
wylaczam neta, lana , wszystko , a zawsze mam "online" :p

Pablo 2003-03-25 17:20

Pytanie co zrobić aby to zyło dobrze pod Win98, pod ME i innybi połączenie jest wykrywane OK, testowałem ten komponent, który jest chyba na podstawie tego napisany, testowałem ten przykład i oba się zachowują tak samo Win98 twierdzi że ciągle ma połączenie nawet jak wyciągnę wtyczkę z sieciówki.

aZgon 2003-03-22 10:47

Dziala ale dopiero jak dodam to:
function InetIsOffline(Flag: Integer): Boolean; stdcall;
external 'URL.DLL';
w sekci implentation.

Qiub 2003-02-07 14:34

Że tak głupio spytam ... !!
O chuj tu chodzi ....?????????????????