Autor Beitrag
Logi5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 12.02.05 18:57 
Liebe Delphi-Gemeinde,

ich beschäftige mich seid einiger Zeit mit einem Problem.

Ich suche eine funktion, die eine Variable auf true oder false setzt, je nach dem, ob der rechner im Web ist oder nicht.
Ich habe bereits eine Funktion, jedoch hat diese den Nachteil, das sie eine Fehlemeldung erzeugt, wenn der Rechner nicht online ist.

Kann mir da jemand weiterhelfen?
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Sa 12.02.05 19:05 
ausblenden Delphi-Quelltext
1:
2:
uses
  WinInet;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
var
  dwConnectedStateFlags: DWORD;
begin

  if InternetGetConnectedState(@dwConnectedStateFlags, 0then
    if (dwConnectedStateFlags or INTERNET_CONNECTION_MODEM) = dwConnectedStateFlags then
    begin
      // ...
      ShowMessage('Verbindung besteht. Vielleicht auch nicht. Es gibt keine 100%ig Lösung für deine Frage.');
      // ...
    end;

end;


Es gibt keinen sicheren Weg, um festzustellen ob jemand Online ist oder halt nicht.

_________________
Ciao, Sprint.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 12.02.05 19:11 
das würde ich nicht sagen. habe mal einen source gesehen zum auflisten der netzwerkadapter, wenn der netzwerkadapter WAN eine ip hat is man auch online.

alternativ könnte man ja folgenden einfachen trick machen: einen host anpingen der immer online is wie z.b. www.google.com
kommt ein reply so hat man ne verbindung
Kidix
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 12.02.05 19:13 
ja und wenn du dial on demand hast wählt er sich beim pingen erst ein und ist dann online....das geht also auch nicht!
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 12.02.05 19:15 
achso, der anwender soll die überprüfung ned mitbekommen... ja dann wirds schon schwerer.
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Sa 12.02.05 19:17 
retnyg hat folgendes geschrieben:
wenn der netzwerkadapter WAN eine ip hat is man auch online.

Tja, und wenn du deine Internet Daten über LAN von einem anderen PC/Server beziehst, dann bringt dir das auch nichts.

Zitat:
alternativ könnte man ja folgenden einfachen trick machen: einen host anpingen der immer online is wie z.b. www.google.com kommt ein reply so hat man ne verbindung

Das kann aber den unschönen Nebeneffekt haben, dass das DFÜ Einwahlfenster aufspringt.

_________________
Ciao, Sprint.
Logi5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: So 13.02.05 01:48 
ok, ich kann also nicht sicher feststellen, ob der rechner im Internet ist.
Dann formuliere ich das ganze anders:

Das Programm soll eine funktion haben, die ei update runterläd. Ich schreibe die funktion einfach mal im Klartext

funktion ob online: Ja oder nein

wenn ja ( auch wenns nicht sicher ist) dann

lade Datei Update.zip vom Server www.irgendwas.de (wenn sie neuer ist, als die, die auf dem Rechner ist)

sollte dieses laden fehl schlagen, gebe keine Fehlermeldung aus, sondern beende das ganze einfach.


Das ganze könnte mit einem Timer alle 10 minuten oder so erneut gemacht werden
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: So 13.02.05 02:00 
Das ist ja eine Frage, die schon manch ein Programmierer hatte. Ich würde in dein Programm ein Dialog machen, wo der Benutzer selber Einstellungen vornehmen kann. z.B. ob automatisch oder manuell nach Updates geschaut werden soll.
Beim ersten Aufruf von deiner Updatefunktion, würde ich eine MessageBox einbleden. Wo der Benutzer darüber informiert, das für die Suche nach einen Update eine Internetverbindung bestehen muss. Außerdem würde ich dieser MessageBox eine CheckBox verpassen. Damit der Benutzer die Möglichkeit hat, das beim nächsten Update diese MessageBox wieder erscheint oder es halt gleich weitergeht. Dann sieht dein Programm auch sehr professionell aus und der Benutzer freut sich, das er selber mit entscheiden darf.

_________________
Ciao, Sprint.
Kidix
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 13.02.05 11:39 
Ehrlich gesagt.

Wenn dein Programm versuchen würde zu prüfen ob ich online bin und sich meine Verbindung dadurch automatisch einwählt würde ich dein prog sofort löschen und weitere schritte einleiten...

Machs mit nem dialog und gut!

Kidix
reepo2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 138

WIN XP
Borland Delphi 7 Enterprise, Microsoft Visual C++ 6.0 Enterprise, Macromedia Dreamweaver 8
BeitragVerfasst: So 13.02.05 11:47 
Wäre es nicht besser erst zu überprüfen, ob eine neue Version online ist und nur wenn eine neue Version verfügbar ist diese runter zu laden?

Würd nämlich viel Traffic werden, wenn das Programm bei jedem Start ne neue Version runterkädt.


MfG: reepo2k
Kidix
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 13.02.05 11:49 
und ob er sich dabei auf der legalen ebene befindet mag ich bezweifeln...

ich sagte ja wenn sein programm erst meine verbindung aufbaut und dann auch noch autmatisch was runterläd würd ich anzeige erstatten!
Logi5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Mo 14.02.05 02:05 
nu mal halblang...

jeder popelige Virenscanner updatet sich automatisch. Und Windows Updates kommen auch einfach so, wenn man die Funktionen nicht abschaltet. Hast du die schon alle Verklagt? *lol

die Funktion ist natürlich auch bei meinem Programm abschaltbar..

Jede .exe auf einem Computer stellt eine potentielle Bedrohung da. Also was sollen diese Unterstellungen?
oPPi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 66

MS Win 7 Pro, WinXP Pro
D3 Pro, TurboDelhi, Kylix 3 Pro
BeitragVerfasst: Mo 14.02.05 13:18 
Hy wie wär's mit sowas:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
Uses
   WinInet;


function IsConnectedToInternet : boolean;
begin
  result := (InternetGetConnectedState(nil0))
end;

//Aufruf
procedure TForm1.Button1Click(Sender: TObject);
begin
 if IsConnectedToInternet then
   ShowMessage('Verbunden.')
 else
   ShowMessage('nicht Verbunden');
end;


gefunden bei: www.SwissDelphiCenter.ch

Du kannst natürlich anstatt ShowMessage auch ein Editfeld / CheckBox oder ähnliches verwenden.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 14.02.05 13:48 
Es gibt keine 100 prozentige Lösung. Siehe hier: www.marian-aldenhoev...e/dojo/internet.html
wham1010
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Win XP Prof.
D6 Pers
BeitragVerfasst: Mi 27.07.05 13:48 
Also, bei dem hier schreibt er mir IMMER "Nicht verbunden" hin - obwohl ich definitiv mit dem Internet verbunden bin!
(Router + Breitband)

user profile iconoPPi hat folgendes geschrieben:
Hy wie wär's mit sowas:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
Uses
   WinInet;


function IsConnectedToInternet : boolean;
begin
  result := (InternetGetConnectedState(nil0))
end;

//Aufruf
procedure TForm1.Button1Click(Sender: TObject);
begin
 if IsConnectedToInternet then
   ShowMessage('Verbunden.')
 else
   ShowMessage('nicht Verbunden');
end;


gefunden bei: www.SwissDelphiCenter.ch

Du kannst natürlich anstatt ShowMessage auch ein Editfeld / CheckBox oder ähnliches verwenden.
blaueled
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 133

Win XP
D5
BeitragVerfasst: Mi 27.07.05 18:08 
nimm einen TClientsocket und als IP www.google.de (oder was für dich passt) port 80 und
bei einem Fehler inet := false und den Errorcode auf 0 setzen.
bei Verbindung inet := true und verbindung beenden.

Arne
Experience1986
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 192

Win XP Pro SP2
Delphi 7
BeitragVerfasst: Mi 17.08.05 15:11 
Hi,

das mit dem ClientSocket hab ich noch gar nicht in betracht gezogen. interessante und einfache idee.

Der Code der oben schonmal gepostet wurde:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function IsConnectedToInternet : boolean;  
begin  
  result := (InternetGetConnectedState(nil0))  
end;  

 
//Aufruf  
procedure TForm1.Button1Click(Sender: TObject);  
begin  
 if IsConnectedToInternet then  
   ShowMessage('Verbunden.')  
 else  
   ShowMessage('nicht Verbunden');  
end;


Kan bei Router nicht funktionieren, da dieser Code nur prüft ob eine DFÜ verbindung besteht.