Entwickler-Ecke

Internet / Netzwerk - Wenn Internetverbindung da ist, dann Seite öffnen! HiLF€


ex4ct - Mi 12.04.06 17:49
Titel: Wenn Internetverbindung da ist, dann Seite öffnen! HiLF€
Hallo,
Ich will möchte einen Programm machen das,
wenn eine Internetverbindung hergestellt wurde eine Internetseite im Browser öffnet!
Leider weis ich nicht wie ich das machen soll.

BsP:

Delphi-Quelltext
1:
2:
if "internetverbindung da" then begin
ShellExecute(0,NIL,'www.beispiel.de',NIL,NIL,SW_Normal);


Fighter#1 - Mi 12.04.06 18:10

Versuch doch mit den Indys einen Ping zu senden, und wenn er zuück kommt öffnest du die page

//@ex4ct Mein Prog tut jetzt, auch mit Bild :-D


ex4ct - Mi 12.04.06 18:23

Das Programm soll nicht nur am anfang gucken ob eine Internetverbindung besteht.
Wenn keine Inet-Verbindung da ist soll es nach 10 sek wieder gucken.
-> Tut mir leid, ich bin noch ein Anfänger :-(


ex4ct - Mi 12.04.06 19:05

Hab jetzt eine gute Lösung gefunden:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
uses
 WinInet;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if InternetGetConnectedState(nil0then
  begin
    Edit1.Text := 'ONLINE';
  end
  else
  begin
    Edit1.Text := 'OFFLINE';
  end;
end;


Aber der soll halt wenn keine VErbindung da ist nach 10 sek wieder gucken!


Watsch - Mi 12.04.06 19:15

Pack doch den Internet-Check in das OnTimer-Ereignis der Timer-Komponente.
Intervall = 10000 (<- entspricht 10 Sek.)


ex4ct - Mi 12.04.06 19:21

user profile iconWatsch hat folgendes geschrieben:
Pack doch den Internet-Check in das OnTimer-Ereignis der Timer-Komponente.
Intervall = 10000 (<- entspricht 10 Sek.)

Cool es geht, danke dir!


ex4ct - Mi 12.04.06 19:57

user profile iconWatsch hat folgendes geschrieben:
Pack doch den Internet-Check in das OnTimer-Ereignis der Timer-Komponente.
Intervall = 10000 (<- entspricht 10 Sek.)

Hmmm...das geht doch nicht!
Wenn ich z.B. die ganze zeit online bin, dann öffnet das Programm doch jede 10 sekunden die Seite!:S:S


Born-to-Frag - Mi 12.04.06 20:05

Dann deklariere eben noch eine Boolean Variable und setze diese auf True wenn du die Seite geöffnet hast und öffne nur eine Seite wenn sie auf False steht


greetz


Born-to-Frag - Mi 12.04.06 20:11

user profile iconex4ct hat folgendes geschrieben:
Hab jetzt eine gute Lösung gefunden:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
uses
 WinInet;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if InternetGetConnectedState(nil0then
  begin
    Edit1.Text := 'ONLINE';
  end
  else
  begin
    Edit1.Text := 'OFFLINE';
  end;
end;


Aber der soll halt wenn keine VErbindung da ist nach 10 sek wieder gucken!


Die lösung ist sehr schlecht, funktioniert nämlich nicht bei Leuten die hinter einem Router sind..


ex4ct - Mi 12.04.06 20:25

Ich habe keinen Router, aber bei mir funktionierts!


Born-to-Frag - Mi 12.04.06 20:25

user profile iconex4ct hat folgendes geschrieben:
Ich habe keinen Router, aber bei mir funktionierts!


Bei Leuten die hinter einem Router sind funktioniert es aber nicht :roll:

EDIT: Ja, ich habe beim ersten Edit ein 'nicht' zuviel gesetzt weil ich dachte da fehlt eins :P


ex4ct - Mi 12.04.06 20:35

user profile iconBorn-to-Frag hat folgendes geschrieben:
Dann deklariere eben noch eine Boolean Variable und setze diese auf True wenn du die Seite geöffnet hast und öffne nur eine Seite wenn sie auf False steht
greetz

Das mit dem Boolean hab ich nicht ganz verstanden könntest du hier einen kleinen Beispiel geben?


Born-to-Frag - Mi 12.04.06 20:50

user profile iconex4ct hat folgendes geschrieben:
Das mit dem Boolean hab ich nicht ganz verstanden könntest du hier einen kleinen Beispiel geben?


Deklariere eine globale Variable (da wo steht "Form1: TForm1"). Nennen wir sie 'geoeffnet'.


Delphi-Quelltext
1:
2:
3:
4:
var
  Form1: TForm1;
  ...
  Geoeffnet: Boolean = False;


Und so öffnest du die Seite dann:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
 if (InternetGetConnectedState(nil0)) and (not geoeffnet) then
  begin
    Geoeffnet := True
    // Seite laden
  end
  else ShowMessage('ScheissDieWandAn');


ex4ct - Mi 12.04.06 21:10

Aha, ist ja eigentlich leicht...danke an alle die mit geholfen haben!


Narses - Mi 12.04.06 23:22

Moin!

Der Vollständigkeit halber: man kann nicht erkennen, ob eine Internetverbindung besteht. Guckst du hier [http://www.marian-aldenhoevel.de/dojo/internet.html]. ;)

cu
Narses


Born-to-Frag - Mi 12.04.06 23:40

user profile iconNarses hat folgendes geschrieben:
Moin!

Der Vollständigkeit halber: man kann nicht erkennen, ob eine Internetverbindung besteht. Guckst du hier [http://www.marian-aldenhoevel.de/dojo/internet.html]. ;)

cu
Narses


Da hast du wohl Recht, Ping ist aber IMHO doch ein bisschen zuverlässiger als InternetGetConnectedState..


greetz


Narses - Do 13.04.06 09:35

Moin!

user profile iconBorn-to-Frag hat folgendes geschrieben:
Ping ist aber IMHO doch ein bisschen zuverlässiger als InternetGetConnectedState

Sorry, aber einen Ping abzusetzen ist das allerletze... :| ;) (ist nicht persönlich gemeint!) Ich erinnere an den Router mit dial-up-connection aus o.g. Quelle :arrow: der wählt dann ein, statt zu melden, ob er eingewählt ist... :gruebel:

cu
Narses


Fighter#1 - Do 13.04.06 10:31

OK ganz einfach:
einfach mit der ClientSocket Komponente den Host auf die Google IP und Port auf 80 setzen.
dann schick im OnConnect ereignis ein Sendtext an google, mit Try Except.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
..Onconnect ...
begin
  Try begin
     ClientSocket1.Socket.SendText('Hallo ist da wer?');
     online:=True; 
      end;        
   except online:= False;
  end;
ClientSocket1.CLose;
end;

//So jetzt wissen wir ob du online bist oder nicht.
//Online wird nur False wenns nen Fehler gibt :-)
//Ach ja im ErrorEvent ErrorCode auf 0 setzen.
//error Code dauert eh viel zu lange bis es was meldet.

... Dein Timer
begin
  If error = True Then begin
   //Internetseite öffnen
  Timer1.Enabled:=False; 
  end;

end;


Narses - Do 13.04.06 10:49

Moin!

user profile iconFighter#1 hat folgendes geschrieben:
OK ganz einfach:
einfach mit der ClientSocket Komponente den Host auf die Google IP und Port auf 80 setzen.
dann schick im OnConnect ereignis

:roll: Nix einfach, gleiches Problem: es wird eine Verbindung aufgebaut, wenn keine besteht, statt zu melden, ob eine besteht... :|

Leute, ES GEHT EINFACH NICHT, der Rechner kann nicht selbst zweifelsfrei herausfinden, ob er online ist! :mahn:

cu
Narses


Fighter#1 - Do 13.04.06 10:53

Bitte alles durchlesen!
wenn man text hinsendet und er findet google nicht dann ruft er die Eception sofort aus.
Getestet!
Mit Router :-D


Narses - Do 13.04.06 11:14

Moin!

user profile iconFighter#1 hat folgendes geschrieben:
Bitte alles durchlesen!

Ja, genau, und zwar hier [http://www.marian-aldenhoevel.de/dojo/internet.html]. :lol:

user profile iconFighter#1 hat folgendes geschrieben:
wenn man text hinsendet und er findet google nicht dann ruft er die Eception sofort aus.

Nochmal, gaaaanz langsam: ich habe einen Router, der wählt bei Bedarf ins Internet ein (vielleicht ist es dir nicht aufgefallen, weil deine Eltern für dich bezahlen: aber Internetnutzung kostet Geld! auch Flatrates kosten übrigens Geld, so nebenbei), wenn kein Bedarf besteht, trennt er die Verbindung, damit keine Gebühren anfallen.

Jetzt kommt deine totsichere Methode, um festzustellen, ob mein PC "im Internet" ist: mein Router wählt sich ein und deine Methode sagt: JA, SUUPER, IM INTERNET! Dabei war das vorher gar nicht so... :evil: und Geld hat´s auch noch gekostet... :twisted: und jetzt rate mal, wie ich das finde... :puke:

user profile iconFighter#1 hat folgendes geschrieben:
Getestet! Mit Router :-D

Ich glaub´s dir ja, aber eben nur bei dir; oder willst du behaupten, alle Benutzer dieser Erde haben den gleichen PC/Router/Internetverbindung wie du... :gruebel: ;)

cu
Narses


DelphiAnfänger - Do 13.04.06 12:12

wenn ein programm einen Befehl sendet einer internetseite einen text zu schicken geht der text an der router der sich dann automatisch einwählt...

//EDIT: nich gesehen dass schon ne Sweite seite da iss :oops:


Born-to-Frag - Do 13.04.06 12:21

Das kann man ja beim Router einstellen ob er automatisch einwählt..

Ich habe ja auch nicht gesagt das es nicht so ist ;) :P


greetz


Fighter#1 - Do 13.04.06 12:46

Aber es ist doch noch viel besser, wenn der Router sich einwählt.
Es ist doch ex4ct's Idee das eine Internetseite aufgeht.
Und so wäre doch alles Gut, er schickt text, Router spingt an, Internetseite geht auf.


Narses - Do 13.04.06 13:05

Moin!

user profile iconFighter#1 hat folgendes geschrieben:
Aber es ist doch noch viel besser, wenn der Router sich einwählt.

:nixweiss: Hallo... ? :gruebel: Ich fasse zusammen: DEIN PROGRAMM legt fest, wann ICH GELD BEZAHLEN MUSS :!:

Merkst du was... :eyecrazy:

cu
Narses


Fighter#1 - Do 13.04.06 20:30

Ohh je, worauf ich hinaus will ist, das es sein Ziel ist eine Internetseite zu öffnen!
Nun sage mir bitte wie das gehen soll ohne zu blechen.
Prüfen ob er Online oder Offline ist will er doch nur das nicht InternetExplorer Oder Firefox aufgeht und sagt : ...Seite nicht gefunden. (Oder irgendwie sowas).


DarkLord05 - Fr 14.04.06 01:47

Sein Programm kann ja vorher ne Abfrage machen ob die Seite geöffnet werden soll oder nicht. Damit der Benutzer, also du, weißt das du - eventuell - Geld bezahlen musst.

Und nochmal zu der Sache mit Google.de. Wenn (was wirklich sehr unwarscheinlich wäre :D ) der Server von Google.de ausfallen würde, bekommst du auch keine Antwort :wink:


Narses - Fr 14.04.06 18:31

Moin!

user profile iconFighter#1 hat folgendes geschrieben:
Ohh je, worauf ich hinaus will ist, das es sein Ziel ist eine Internetseite zu öffnen!
Nun sage mir bitte wie das gehen soll ohne zu blechen.

Wenn ich eine Internet-Seite aufrufe, weiß ich, dass das (potentiell) Geld kosten wird, darum geht es doch gar nicht. Es geht um:
user profile iconFighter#1 hat folgendes geschrieben:
Prüfen ob er Online oder Offline ist will er

Das geht nicht, da das ja vor einer Kontaktaufnahme passieren soll. Es ist nicht möglich, den Verbindungszustand zu ermitteln, zweifelsfrei und kostenneutral. :mahn:

cu
Narses