![]() |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
jo bitte poste doch mal deinen unsauberen weg !
kannst du auich mal den link zu dem C code posten ?? evtl kann der weiterhelfen ! |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Vielleicht hilft dir das ja (Das sollte die NDSI Seite sein):
![]() |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
So jetzt endlich aus dieser absolut langweiligen Sitzung raus...
Also die ganze Geschichte mit Netzwerkkabel raus rein läuft eigentlich über die MediaSense API. Den Link zu dem C Code hat dir ja schon der Moritz geschickt. Man sollte sich im klaren sein das MediaSense erst seit Windows 2000 existiert. (NDIS 5) Nach langem suchen und studieren der API hab ich mich dann doch beschlossen das alles komplett anders zu machen :-) . Ihr dürft raten :-) die supertolle wunderschöne fehlerlose Windows Registry hat nen Schlüssel in der sich beim einstecken und austecken ein Wert ändert :-) Ich poste mal den Code den ich damals zusammengefriemelt hab. Also ohne Garantie as funktionstüchtigkeit etc... Rückmeldungen wären schön da ich knapp 2 Monate mit der SenseAPI mich rumgeschlagen hab bevor ich dann doch zu dieser unüblichen Lösung kam...
Delphi-Quellcode:
So also macht euch mal her über den Code ;-)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... 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; end; if NetworkCards <> '' then begin reg.OpenKey('\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\'+NetworkCards,false); if reg.ReadString('DHCPDomain') <> '' then result := true else result := false; end; reg.Free; end; MfG Kasoft P.S.: Ich danke unsererm VB Programmierer aus unserer Abteilung für seine Supergeniale unterstützung bei dem Problem ;-) Danke Thomas! |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
also bei mir unter winXP funzt dieser Code nicht ! er gibt immer false zurück !
|
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
schau mal in der Registry ob die Sachen existieren.
|
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
was ich noch vergessen hab. Windows braucht eine kleine Weile bis er bemerkt das Kabel nicht
da ist. Also nicht rausziehen gleich anklicken und dann sagen geht net raus :-) |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
kommt auf die Version an, meins (Windows XP) erkennt sofort, wenn ich ds Kabel ziehe.
|
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Hab daheim WinXP. Da kann es verspätet kommen muss aber nicht. Im Geschäft
Win2k und es reagiert auch nicht schneller/langsamer als mein XP... |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Tach,
aslo, ich hab mich mal damit beschäftigt, es passiert einiges in der Registry. Ich hab leider keine Zeit das auszuwerten, aber das würde ich auf jeden Fall mal als Ansatz verfolgen (Mittels RegMon). Ansonsten wäre könntest du es evtl. damit lösen, wenn du alles 5 Sekunden die Netzwerk-IP prüfst, und sobald die 0 bzw. 0.0.0.0 ist dan PC ausschalten. Das wäre glaube ich das effektivste, denn sobald das Kabel steckt hat dein PC eine IP. (Zumindest wenn er so konifguriert ist...aber davon gehe ich bei euren Schulrechnern mal aus) Gruß |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Zitat:
Allerdings kann der Rechner (u.A. gerade in Schulnetzen bei je einem Subnet pro Klassenraum) statisch konfiguriert sei (macht zum Teil bei überschaubaren Subnets durchaus Sinn) - und dann hat der die IP sowieso immer, ob nun Kabel oder nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 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