Sprawdzenie, czy jestem połączony z internetem

0

Witam :)
Chciałbym stworzyć taki program, który po kliknięciu Buttona pokazywałby, czy jestem połączony z internetem.
Jakaś pomoc ?
Tzn, kod lub coś w tym rodzaju ? :) Jestem początkującym, więc.. :P
Pozdrawiam

0

poszukaj następnym razem. odp. jest w tym artykule Rozdział 11

0

InternetGetConnectedStat - gdzie to jest ?

0

Najlpewniej sprawdzić pingiem dany pewny host po bardzo albo wcale nie zmienialnym IP na przykład wp.pl. Kodów z użyciem icmp.dll w Delphi na google jest całe mnóstwo. Chocby ten na: http://www.delphi-central.com/tutorials/icmp-ping.aspx jednak uwaga. Taki program nie zadziała w WINE pod Linuxem. Niestety nie znalezłem skutecznego sposobu na działanie kodu pod Linuxem.

0

Najlpewniej sprawdzić pingiem dany pewny host po bardzo albo wcale nie zmienialnym IP na przykład wp.pl

Jaką masz pewność, że nie zmienią z dnia na dzień datacenter or something?

0

http://www.delphi3000.com/articles/article_1687.asp?SK=

Tylko tam brakuje ' (apostrofu) w ostatniej linii kodu

0

Jeżeli masz sprawdzić, czy i jaki jest typ połączenia z siecią Internet użyj kodu z artykułu z tego forum;

Kluczową funkcjom w tej klasie jest Connected, która zwraca TRUE jeżeli jest połączenie, a FALSE jeżeli połączenia nie ma. Oto treść tej procedury:

function TIsConnected.Connected: Boolean;
var
  Flags: DWORD;
begin
  Flags := INTERNET_CONNECTION_MODEM or INTERNET_CONNECTION_LAN or
                 INTERNET_CONNECTION_PROXY or INTERNET_CONNECTION_MODEM_BUSY;
 
  Result := InternetGetConnectedState(@Flags, 0);  // sprawdz polaczenie.
  if Result then
  begin
  { jezeli procedura OnTrue jest wygenerowana uruchom ja }
    if Assigned(FTrue) then OnTrue(Self);
  end else if Assigned(FFalse) then OnFalse(Self);
end;

Źródło: http://4programmers.net/Delphi/Artykuły/Własne_komponenty (autora proszę o poprawienie błędów ortograficznych w oryginalnym tekście spod tego linku);

Ogólnie rzecz biorąc funkcję InternetGetConnectedState można wykorzystać w prostrzy sposób, by sprawdzić czy w ogóle jest połączenie bez rozróżniania typu; Prosty kod:

function ConnectedToInternet: Boolean;
var
  iCT: Integer;
begin
  Result := InternetGetConnectedState(@iCT, 0);
end;

Sam osobiście korzystałem z tej drugiej i nigdy mnie nie zawiodła;

0

@Furious Programming: wybacz, ale piszesz nieprawdę. Taka metoda sprawdzania niby połączenia z netem jest mi znana i od dawna wiem, że jest nieskuteczna. Rozpatrzmy moją sytuację. Mam łaczę w UPC i modem od nich, do modemu podłaczony jest ruter, zaś z ruterem dwa komputery w tym mój stacjonarny. Jeżeli celowo odłaczymy zasilanie od modemu albo jak czasami ma to miejsce w UPC padnie net, ale jakimś cudem tego modem nie zarejestruje (strona modemu pokaże że jego stan to "Operational") i nadal będzie system myślał że mamy połaczenie (ikona Centrum Sieci i udostępniania w Windows 7 nie zmieni koloru na żółty) to Twój kod nadal będzie uważał, że mamy połączenie z Internetem, bo sprawdzi tylko to czy jest łącznośc do rutera. A nawet gorzej przed chwilą sprawdziłem odłączając celowo modem, łącznośc miałem tylko kablem z ruterem, a ruter już tej łączności z modemem nie miał, a ikonka sieci zmieniła kolor na zółty, lecz mimo to kod jaki zacytowałeś zwrócił True. Według mnie najpewniejszym sposobem jest jednak pingowanie, ale najlepiej po IP, ja robiłem to od dawna dla wp.pl, bo IP 212.77.100.101 nie zmieniło się od wielu lat, ale można równie dobrze kombinować tak jak pisze Demoical Monk albo nie wiem pingować na przykład znanego DNS'a o adresie: 8.8.8.8.

0

Wszystko fajnie, ale ja jestem.. "Bardzo" początkujący.
Potrzebuję takiego info, jak, jakie buttony dodać, CO dodać itp..
Potem dopiero możecie dać mi Cały kod "Form1" :D

0

Dodajesz kod tak aby wywoływany był wtedy kiedy go potrzebujesz. Może też być przy klikaniu na button oczywiście. Jednak jak jesteś bardzo początkujący to bardzo wskazane jest żebyś zamiast 100 pytań na forum i marnowania swojego i naszego czasu na tłumaczenie banalnych podstaw, zapoznał się z kompendium na stronie 4p i poznał podstawy języka, a wszystko stanie się jasne. Najpierw poznaj właśnie te konieczne podstawy, a później pisz sobie pingery, spamery gg i to co będziesz chciał oraz umiał napisać. A na pewno po poznaniu podstaw będziesz umiał napisać więcej.

0
olesio napisał(a)

wybacz, ale piszesz nieprawdę. Taka metoda sprawdzania niby połączenia z netem jest mi znana i od dawna wiem, że jest nieskuteczna.

Skuteczna jest, tylko nie zawsze; Wiesz, podałem ten kod bo jest on dość banalny a poza tym sam z niego kilka razy korzystałem (na samym modemie, teraz od dłuższego czasu na modemie i routerze + ADSL Netia) i nigdy mnie nie zawiódł (a z Netią ostatnio jest tak samo jak z Twoim UPC...); Dlatego nie pisze, że jest w 100% skuteczna;

saki napisał(a)

Potrzebuję takiego info, jak, jakie buttony dodać, CO dodać itp..

Jeżeli nie znasz nawet takich podstaw to skorzystaj z podpowiedzi @olesio, bo faktycznie chyba jeszcze nie masz pojęcia o programowaniu w delphi;

saki napisał(a)

Potem dopiero możecie dać mi Cały kod "Form1"

Może w ogóle nic nie zrób i czekaj, aż ktoś się znajdzie, kto poświęci pare godzin by Ci dogodzić? To ma być nasz program czy Twój? Odrobina wkładu by się przydała;

0

Dzięki, już coś tam próbuję, jeszcze jedna mała podpowiedź.. :P

 unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  dwConnection : DWORD;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
{ flagi }
  dwConnection := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN +
    INTERNET_CONNECTION_PROXY;

  { sprawdź, czy jest połączenie }
  if not InternetGetConnectedState(@dwConnection, 0) then
    lblResult.Caption := 'BRAK POŁĄCZENIA Z INTERNETEM'
  else lblResult.Caption := 'JESTEŚ POŁĄCZONY';
end;

end.


Błąd :
[Error] Unit1.pas(7): Declaration expected but identifier 'WinInet' found

0

Ja pier***ę, moduły oddziela się przecinkami, a po nazwie ostatniego stawia się średnik...

1 użytkowników online, w tym zalogowanych: 0, gości: 1