Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Funktion: IsNetworkConnected ?? (https://www.delphipraxis.net/34881-funktion-isnetworkconnected.html)

Piro 29. Nov 2004 17:02


Funktion: IsNetworkConnected ??
 
Delphi-Quellcode:
function IsNetworkConnected: Boolean;
begin
  Result := (GetSystemMetrics(SM_NETWORK) and $01) = $01;
end;
Dies Funktion liefert dauernd True bei mir. Obwohl ich kein Netzwerkkabel dran haben. Die Netzwerkkarte ist deaktiviert und ich bin auch nicht im Internet.

Warum kommt denn dann immer True?

Sven

SubData 29. Nov 2004 17:11

Re: Funktion: IsNetworkConnected ??
 
Hier im Forum suchenSM_NETWORK

Edit: 3. Result

Luckie 29. Nov 2004 17:12

Re: Funktion: IsNetworkConnected ??
 
Guck mal im Forum. Wie man feststelt, ob man online ist, hatten wir hier schon ein paar mal.

justify 17. Jun 2005 08:00

Morgen,

SubData: Genau das hatte ich eingebunden, aber er zeigt immer an, daß man mit dem Netzwerk verbunden ist, selbst wenn ich den Stecker gezogen habe. Da bringt die Funktion von Daniel B also nichts, da ich exakt die gleiche verwende.

Luckie: Es geht erstmal darum, daß man herausfindet, ob man mit dem Netzwerk verbunden ist, nicht mit dem Internet.

Naja, ich werd' dann mal weitersuchen!

Falls jemand noch meint eine Hilfestellung geben zu können, dann bitte! :)

Luckie 17. Jun 2005 08:24

Re: Funktion: IsNetworkConnected ??
 
Ping doch den Server an. Oder schick ein Broadcast ins Netz, wenn da snicht klappt, dann bist du wohl nicht mit dem Netzwerk verbunden.

justify 17. Jun 2005 12:11

Hi Luckie!

Und wie soll das Programm wissen, wie die IP-Adresse lautet? Es wird ja in unterschiedlichen Unternehmen angewendet, die immer - logischerweise - 'ne andere IP haben.

Nun muß das OS ermittelt werden, um die entsprechende Funktion dafür dann aufzurufen.

Dabei könnte ich auch mal wieder Eure Hilfe gebrauchen!

justify 17. Jun 2005 14:17

Hallo nochmal,

ich bräuchte nun mal eine Netzwerkstatus-Überprüfung, die Windows 95, 98, NT und ME durchguckt.

Je nach OS wird dann entweder diese Funktion, oder die, die XP unterstützt, aufgerufen.

Allerdings funktioniert's unter XP Home Edition auch nicht!

Naja, postet mal über's WE, ich schau zuhause mal rein und teste mal bißchen rum.

Schon mal danke für Eure Hilfe!

justify 17. Jun 2005 14:21

Liste der Anhänge anzeigen (Anzahl: 1)
Naja, was soll's, Ihr wisst ja sowieso nicht, was wir mit dem Script vorhaben, von daher stelle ich es als Anhang rein.

Vielleicht kann der ein oder andere mal schauen - wenn er lustig ist - und bißchen coden.

Eventuell klappt's ja bei Euch!

Luckie 17. Jun 2005 14:22

Re: Funktion: IsNetworkConnected ??
 
Bitte schieb im Zukunft deine Beiträge erst nach 24 Stunden. Bis dahin kannst du deine Posting noch änderen. Danke.

justify 17. Jun 2005 20:31

*zur Erinnerung nochmal nach oben schiebt*

justify 19. Jun 2005 10:22

*..und nochmal nach oben schiebt*

SirThornberry 19. Jun 2005 10:58

Re: Funktion: IsNetworkConnected ??
 
in der Unit "wininet" gibt es die Funktion "InternetGetConnectedState". Die gibt dir den Status der Verbindung zurück.
Delphi-Quellcode:
function ConnectedToLan: Boolean;
var LWord: DWord;
begin
  LWord := INTERNET_CONNECTION_LAN;
  result := InternetGetConnectedState(@LWord, 0);
end;
genauere Hilfe zu der funktion gibts im msdn MSDN-Library durchsuchenInternetGetConnectedState

justify 19. Jun 2005 13:20

Hallo,

hab's getestet, funktioniert kein bißchen.

SirThornberry 19. Jun 2005 13:22

Re: Funktion: IsNetworkConnected ??
 
habs auch getestet und bei mir funktionierts auch nicht, aber laut msdn sollte es funktionieren.

justify 19. Jun 2005 13:23

Hast Du den Anhang mal runtergeladen und es daran getestet?

Naja, zur Zeit hab' ich echt keine Ahnung, was ich noch machen könnte..

justify 19. Jun 2005 20:53

*..weiterschiebt*

justify 20. Jun 2005 08:28

Morgen,

soweit habe ich jetzt alles (also Betriebssystem wird ermittelt, für XP & 2000 läuft die Funktion).

Jetzt bräuchte ich nur noch eine Funktion, die unter NT und niedriger überprüft, ob der Netzwerkstatus aktiv ist oder nicht.

Weiß jemand Rat?

Tonic1024 20. Jun 2005 09:00

Re: Funktion: IsNetworkConnected ??
 
Moin...

(für meinen Geschmack pushst du zu viel/häufig)

Bringt es dich weiter, wenn du deine eigene IP pingst? Hab das grad getestet und bei mir gings. 127.0.0.1 ging und 192.168.x.x ging nicht nachdem ich mein Netzwerkkabel gezogen hatte.

Die eigene IP kannst du ja ermitteln - ich glaube das Stichwort "Neo.pas" hilft da weiter. musst mal hier im Forum suchen und testen.

MfG

Toni

justify 20. Jun 2005 09:05

Hi,

genau das habe ich ja gemacht, aber diese Variante läuft nur unter XP & 2000.

Unter NT und niedriger funktioniert das noch nicht recht.

Welches OS hast Du denn, wenn man fragen darf?

Tonic1024 20. Jun 2005 09:53

Re: Funktion: IsNetworkConnected ??
 
Sorry, hab ich entweder "überlesen" oder nur halb mitgedacht (Montag Morgen halt) :roll:

Hab ein 2k System.


Schau mal in der 'Hosts-Datei' ob da u.U. deine IP-Eingetragen ist. Wenn ja, mach sie mal raus und versuchs nochmal. Sollte zumindest Aufschluss darüber geben worans liegt, dass es dort anders ist.

Sollte dort zu Finden sein:
WINNT\system32\drivers\etc\SERVICES


MfG

Toni

justify 20. Jun 2005 09:59

Hallo,

ich habe so irgendwie das Gefühl, wir reden aneinander vorbei.

Es gibt eine Möglichkeit für 2000 & XP zu prüfen, ob eine Netzwerkverbindung aktiv ist oder nicht.

Dann muß es auch eine Möglichkeit für ältere Windows-Versionen geben.

Falls nicht: Könnte mir mal jemand erklären, wie ich das mit dem anpingen mache? Also z.B. www.google.de anpingen, um zu sehen, ob ich eine Internetverbing habe oder nicht.

Allerdings kann's ja auch mal sein, daß die Seite offline ist und dann hab' ich das nächste Problem.. :roll:

Tonic1024 20. Jun 2005 10:08

Re: Funktion: IsNetworkConnected ??
 
Ich glaube, ich habe dich schon verstanden...

Wenn in der oben beschriebenen Datei eine IP-Adresse eingetragen ist, so wird sie sofort, also lokal, aufgelöst und die Anfrage landet garnicht erst im netz.

Die Tatsache, dass sie bei Win2K nicht eingetragen ist sorgt dafür, dass sie doch ins netz gesendet wird, wo natürlich nur eine Antwort ala "Ey, das bist du selber" zurückkommt, wenn (zumindest) ein netzwerkkabel angeschlossen ist.

Darum schau doch bitte man nach, ob vielleicht in dieser Datei unter WinNT die eigene IP-Adresse vielleicht standardmäßig eingetragen ist. wenn ja, ist das dein Problem!

regards

Toni

justify 20. Jun 2005 10:14

Liste der Anhänge anzeigen (Anzahl: 1)
Nee, ist keine IP eingetragen.

Das Problem liegt woanders, aber ich weiß nicht wo.

Hier sind doch soviele Freaks online - weiß denn wirklich keiner eine Lösung???

Ich hänge nochmal die aktuelle Version vom Programm an, vllt. findet Ihr ja was raus, ich hab' jetzt bald so alles durchprobiert und weiß irgendwie nicht weiter. :?

Tonic1024 20. Jun 2005 10:26

Re: Funktion: IsNetworkConnected ??
 
Morgends keinen Joint und Google ist deinen Freund.

Simple MSDN sagt: Finde heraus ob du im Netzwerk bist.

[nicht getestet]


Toni

justify 20. Jun 2005 10:33

Könntest Du das ganze nochmal auf deutsch formulieren? Ich verstehe atm nur Bahnhof! :)

mr47 20. Jun 2005 10:47

Re: Funktion: IsNetworkConnected ??
 
Das beste wird sein, du klickst auf den Link :wink:

Tonic1024 20. Jun 2005 10:50

Re: Funktion: IsNetworkConnected ??
 
ganz unten steht:
Zitat:

Zitat von MSDN
Redistributable: Requires Internet Explorer 5 or later on Windows NT 4.0 and Windows 98/95.

Daraus schließe ich, dass diese Funktion, die sich aller wahrscheinlichkeit nach dort befindet:

Zitat:

Zitat von MSDN
DLL Requires Sensapi.dll.

, auch auf nem WinNT4 System zum Laufen bringen lassen sollte. DLL importieren, und schauen was die Funktion zurückliefert. Ich kann dir da nicht viel zu sagen, weil ich ja - wie gesagt ein 2k System habe. Die DLL liegt bei mir übrigens im Ordner \WINNT\System32 - was aber für eine NT4 Maschiene nichts heissen muss, wie du im MSDN lesen kannst.

wenn du hier klickst Hier im Forum suchenisNetworkAlive wirst du einen Post von djmasi finden, der dir zeigt, dass du die Funktion einfach mit dem Parameter starten kannst, den du in meinem Link zum MSDN finden kannst.

Toni

scp 20. Jun 2005 11:24

Re: Funktion: IsNetworkConnected ??
 
Beim Parameter muss nichts ausser einer Variable angegeben werden, die Funktion füllt diese dann mit dem entsprechenden Wert.
Delphi-Quellcode:
function IsNetworkAlive(var dwFlags: DWORD): bool; external 'sensapi.dll'; stdcall;
EDIT: Rückgabewert vergessen.

justify 20. Jun 2005 11:25

Und wie sieht dann die komplette Prozedur aus?

scp 20. Jun 2005 11:26

Re: Funktion: IsNetworkConnected ??
 
genau so, sie wird ja aus der DLL importiert.

justify 20. Jun 2005 12:54

Ist schon klar, so wird sie deklariert, aber wenn ich nun abfragen will, ob der Status aktiv ist oder nicht, wie mache ich das dann?

justify 20. Jun 2005 13:03

Wenn ich die Funktion deklariere, kommen folgende Fehlermeldungen:

Code:
[Fehler] UVTP.pas(31): Felddefinition nicht erlaubt nach Methoden oder Eigenschaften
[Fehler] UVTP.pas(31): ',' oder ':' erwartet, aber ';' gefunden
[Fehler] UVTP.pas(32): Funktion benötigt Ergebnistyp
[Fehler] UVTP.pas(167): Undefinierter Bezeichner: 'FPCName'
[Fehler] UVTP.pas(174): Undefinierter Bezeichner: 'Result'
[Fehler] UVTP.pas(272): Undefinierter Bezeichner: 'FPCName'
[Fehler] UVTP.pas(31): Ungenügende Forward- oder External-Deklaration: 'TFrmVTP.IsNetworkAlive'
[Fataler Fehler] VTP.dpr(5): Verwendete Unit 'UVTP.pas' kann nicht compiliert werden
Ich habe die Funktion exakt so deklariert, wie sie hier gepostet wurde.

Was hab' ich falsch gemacht?

Tonic1024 20. Jun 2005 14:23

Re: Funktion: IsNetworkConnected ??
 
Im ernst justify... sei nicht böse, ist auch nicht so gemeint...

Benutzt du auch mal die Such-Funktion im Forum oder Google?

Hier wird dir Stück für Stück der Code geschrieben und ich habe selbst mehrere dezente Hinweise auf diverse Quellen geliefert. Ich würde das jetzt nicht so direkt formulieren, wenn nicht der erste(!) Hit, den Google auswirft beim Suchwort "NETWORK_ALIVE_LAN" - das ist das was du wissen willst (eine Konstante) auf die DP verweisen würde, die du ja (angeblich) schon komplett (ich neige zu Übertreibungen, ich weiss) durchsucht hast.

Was du suchst hat NicoDE hier gepostet und was er davon hält hat er auch gleich dazu geschrieben.

sorry... musste jetzt sein. Ich hoffe ich war nicht zu barsch aber ich habe mich mit dem Thema heute keine 20 min beschäftigt und finde 2 Threads in denen du diese Frage stellst und den kompletten Code in einem Dritten - alles in der DP.

regards

Toni

justify 20. Jun 2005 14:32

Hi,

ja, Du hast Recht!

Die Funktion haben wir soeben umgecodet und getestet - leider auch mangelhaft!

Er gibt immer den Status "verbunden" zurück, auch wenn der Netzstecker draußen ist.

Naja, morgen ist ja auch noch ein Tag! :???:

justify 21. Jun 2005 08:07

Hallo,

hat jemand zufällig 'ne Idee, wie man den Netzwerkstatus bei NT & niedriger überprüfen kann? Vielleicht gibt's ja 'nen Trick, wie beim Internetverbindungstest z.B.?!

Habe dort mehrere URL's angepingt und wenn er eine Antwort bekommt, gibt er den Status "verbunden" zurück.

Kann man da in der Richtung evtl. auch was für die LAN-Verbindung machen und wenn ja, was?

Danke schon mal..

Sharky 21. Jun 2005 08:11

Hai justify,

ich denke es reicht jetzt endgültig mit deinen Pushs in diesem Thread.
Schon dein pushen nach dem Hinweiss von Luckie fand ich, gelinde gesagt, eine frechheit.

Wenn sich das nicht ändert werde ich den Thread ohne weiteren Kommentar schliessen.

endeffects 23. Jun 2005 12:41

Re: Funktion: IsNetworkConnected ??
 
IsNetworkConnected und InternetGetConnectedState liefern
immer true wenn dem Rechner eine IP zugewiesen worden ist

du könntest mit Hilfe von InternetCheckConnection(PChar('http://www.google.com'), 1, 0)
den Netzwerkstatus prüfen, die Methode versucht den Server zu pingen,
läßt sich sicher auch auf dein LAN anwenden, wenn du keine
URL übergibst wird der nächsten erreichbare Server gesucht,
problematisch an der Methode ist lediglich das es relativ lange
dauert bis man ein Ergebnis hat


mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz