Jak sprawdzić, czy użytkownik jest w Internecie
Adam Boduch
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');
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;
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;
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
przykro mi, u mnie nie działa :)
wylaczam neta, lana , wszystko , a zawsze mam "online" :p
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.
Dziala ale dopiero jak dodam to:
function InetIsOffline(Flag: Integer): Boolean; stdcall;
external 'URL.DLL';
w sekci implentation.
Że tak głupio spytam ... !!
O chuj tu chodzi ....?????????????????