![]() |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Also ich hab XP SP2 und es funktioniert ohne Probleme. Unter 2000 SP3 lief es auch (glaub ich jedenfalls). Nur unter 98/ME läuft es nicht. Aber mit SP4 für 200 probier ich nochmal.
Das ganze kommt ja aus der sensapi.dll. Schau mal was du für ne Version hast |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Wie finde ich heraus welche Version ich habe?
Ich glaube nicht dass es daran liegt wenn du auch das SP2 hast und es bei dir funktioniert. Bei Windows 2000 geht es jetzt aber! Dann hat sich das Problem erledigt weil ich es nur fürs 2000er brauche. |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Hi!
Zitat:
Ciao Frederic |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Ich habe mich geirrt, der Code funktioniert doch nicht unter Windows 2k und liefert immer "LAN" auch wenn gar keine Verbindung vorhanden ist.
Und unter Windows XP funktioniert er wieder ... verrückt! :roll: Die sensapi.dll-Version auf dem Windows-2000-PC ist 5.0.2195.6627. |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Ich bins wieder.
Es funktioniert doch unter Win2k! Allerdings beträgt die Verzögerung etwa 5 Minuten. Mein Bruder hat das Kabel rausgezogen, und nach 5 Minuten hat er sich beschwert dass der Computer nicht mehr geht. Danach hat er wieder 5 min warten müssen bis es wieder gegangen ist. Das hat er sich gemerkt, jetzt zieht er es nicht mehr raus :firejump: :stupid: mfg. Tubos |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Zitat:
wie läuft das z.b. auf Delphi 2005? hat schon jemand WMI in Delphi 2005 verwendet? muss ich da gewisse Units von WMI einbinden? |
Guten Abend allerseits!
Nun habe ich mal beide Varianten ausprobiert - sowohl die lange von toyoman, als auch den Dreizeiler, der am Anfang gepostet wurde. Allerdings habe ich folgendes Problem: toyoman's Variante läuft nur unter NT, der Dreizeiler nur unter XP! Was nun? Eine Möglichkeit wäre ja festzustellen, welches OS gerade benutzt wird, aber das ist alles ziemlich umständlich. Gibt's eventuell einen Befehl, mit dem man kurz und knapp abfragen kann, ob man mit dem LAN verbunden ist oder nicht? Ich meine, um festzustellen, ob man mit dem Internet verbunden ist, geht's auch schnell mit 'nem Befehl, der mir gerade nicht einfällt, aber funktioniert. Naja, wäre nett, wenn Ihr mal paar Tipps geben könntet. Schönen Abend noch! |
Zitat:
hey, die variante war nicht von mir sondern von djmasi... ich benütze in meinen Service diese Funktion (auch irgendwo hier aus dem Forum, bisschen modifiziert):
Delphi-Quellcode:
logfileschreiben ist eine Extra-Prozedur.
function NetworkConnect : Boolean;
var reg : TRegistry; i : Integer; NetworkCards : String; begin result := false; reg := TRegistry.Create(KEY_READ); reg.RootKey := HKEY_LOCAL_MACHINE; for i := 0 to 15 do //Mehr als 15 Netzwerkkarten sollte kein normaler Rechner haben... begin if reg.KeyExists('\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\' +inttostr(i)) = true then begin logfileschreiben('----------------------------------------------------------------------------------------'); reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\' +inttostr(i),false); NetworkCards := reg.ReadString('ServiceName'); logfileschreiben('Networkcard ID: '+Networkcards); logfileschreiben('Networkcard description: '+reg.readstring('Description')); // break; if NetworkCards <> '' then begin reg.OpenKey('\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\'+NetworkCards,false); logfileschreiben('DHCP Domain: '+reg.readstring('DhcpDomain')); logfileschreiben('DHCP IP: '+reg.readstring('DhcpIPAddress')); logfileschreiben('----------------------------------------------------------------------------------------'); if reg.ReadString('DHCPDomain') <> '' then begin result := true end else begin result := false; end; end; end; end; reg.Free; end; Aufruf:
Delphi-Quellcode:
if networkconnect=true then
begin logfileschreiben('Networkcard: Network cable plugged in.'); winipath:=vpnfile; // Konfigurationsfile logfileschreiben('Using network version of VPN.ini: '+winipath); end else begin logfileschreiben('Networkcard: Network cable unplugged!'); winipath:=getpath+'vpn.ini'; logfileschreiben('Network not reachable, Using local VPN.ini file: '+winipath); end; |
Huhu,
sorry, da hab' ich dann wohl was verwechselt - ist ja aber auch egal! Es geht um eine kleine Unterkategorie, die nur testen soll, ob eine LAN-Verbindung hergestellt ist oder nicht und dementsprechend was ausgeben soll, also "verbunden" oder "nicht verbunden"! Das alles soll bei einem Buttonklick passieren. Könntest Du mir sagen, wie ich den Code abändern muß, damit es genau so geschieht? |
Zitat:
-Entferne alle Logfileschreiben Zeilen die brauchst du indem Fall nicht. Uses Registry nicht vergessen! Würde sagen so müssts gehn:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, registry, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); function NetworkConnect : Boolean; var reg : TRegistry; i : Integer; NetworkCards : String; begin result := false; reg := TRegistry.Create(KEY_READ); reg.RootKey := HKEY_LOCAL_MACHINE; for i := 0 to 15 do //Mehr als 15 Netzwerkkarten sollte kein normaler Rechner haben... begin if reg.KeyExists('\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\' +inttostr(i)) = true then begin reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\' +inttostr(i),false); NetworkCards := reg.ReadString('ServiceName'); // break; if NetworkCards <> '' then begin reg.OpenKey('\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\'+NetworkCards,false); if reg.ReadString('DHCPDomain') <> '' then begin result := true end else begin result := false; end; end; end; end; reg.Free; end; begin // Network Cable unplugged? if networkconnect=true then begin showmessage('Netzwerkkabel ist eingesteckt!'); end else begin showmessage('Netzwerkkabel ist ausgesteckt!'); end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz