Hi, würde gerne mal die hier geposteten Codes ausprobieren da ich ein ähnliches Problem lösen möchte. Leider schaff ich es nicht den COde zu übersetzen. Benutze Delphi2006 und beim Compilieren kommt die Meldung "Field Form1.Button1 does not have a corresponding component. Remove the declaration?" Als Projekt habe ich New VCL Forms Application genommen.
Verwendet habe ich z.B. den Code von toyoman [quote="toyoman"] Zitat:
|
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
hast du denn ein Form1 und einen Button1 auf dem Form drauf?
|
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Lösch mal Zeile 11 und 26.
|
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
@toyoman,
vielen Dank! Hatte den Button nicht drauf. Nur jetzt wo ich ihn drauf habe kommt keine Fehlermeldung jedoch zeigt er mir keinen Status an ob das Kabel gesteckt ist oder nicht. Da ich erst angefangen habe mich mit Delphi auseinanderzusetzen kann es gut möglich sein dass es sich um Basics handelt. Bin aber parallel dabei mich einzuarbeiten. @Luckie Auch erstmal danke für die Beteiligung! hab ich gerade mal versucht. Musste dann allerdings noch zusätzlich Zeile 67 und 12 löschen. Allerdings kommt dann die Meldung "Netzwerkkabel ist ausgesteckt" obwohl es doch eingesteckt ist. Getestet momentan mit WinXP SP2. |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
hoi,
wahrscheinlich liefert die Funktion immer 'False' weil bei dir in der Registry der Parameter 'DHCPDomain' gar nicht existiert bei deinem netzwerk-adapter cya |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Also der Parameter ist vorhanden. Habe fünf Ordner im Registryordner "Interfaces" und in einem dieser ist mein LAN-Adapter mit sämtlichen DHCP-Einstellungen sowie 'DHCPDomain' vorhanden. Sollte doch eigentlich so stimmen, oder?
Habe auch schon versucht die IP manuell zu vergeben, weil ich mir dachte dass diese Abfrage nur für aktiviertes DHCP gilt. Allerdings kommt hier auch wieder LAN-Kabel nicht gesteckt. |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Stichwort Mediasensing....
habe unter http://www.ndis.com/faq/QA01050301/default.htm den bereits erwähnten Weg gefunden unter Win2k eine Abfrage über den Verbindungsstatus der Netzwerkkarte zu machen. In der Klasse MSNdis_MediaConnectStatus gibt es für jeden Netzwekadapter NdisMediaStateConnected. Bei 0 besteht eine Verbindung und bei 1 eben nicht. Habe das Ganze mit dem WMI-Tester unter Win2k SP4 erfolgreich getestet. Jetzt habe ich auch eine Funktion gefunden die das ganze Abfragen soll doch leider bringt mir der Compiler 2 nicht deklarierte Bezeichner (IEnumVariant, CreateOleObject) und dass IEnumVariant kein Element "Next" enthält. Ich vermute mal dass ich noch was einbinden muss aber schaut es euch lieber selbst mal an! (Quelle der Funktion: http://www.experts-exchange.com/Prog..._21072409.html)
Delphi-Quellcode:
Ziel soll es letztendlich sein auf einem System mit zwei Netzwerkkarten (1xLAN und 1xWLAN) zu erkennen ob ein Lan-Kabel gesteckt wurde um danach abfragen zu können ob gewechselt werden soll. Demnach fällt bei mir die Localhostabfrage weg da dieser bei getrennter LAN und gleichzeitig vorhandener WLAN-Verbindung dieser nicht vorhanden ist.
procedure ShowNetworkStatus;
var wmi : variant; wmiService : variant; nicstatus : variant; card : Olevariant; cnt : integer; Enum: IEnumVariant; P : IUnknown; F : Cardinal; connected : integer; status : string; begin WMI:=CreateOleObject('WbemScripting.SWbemLocator'); wmiService := wmi.ConnectServer('.', 'root\wmi'); nicstatus := wmiService.InstancesOf('MSNdis_MediaConnectStatus'); p := nicstatus._NewEnum; p.QueryInterface(IEnumVariant, Enum); for cnt := 0 to nicstatus.Count - 1 do begin Enum.Next(1, card, F); connected := card.NdisMediaConnectStatus; if (connected = 0) then Status := 'connected' else Status := 'network cable unplugged'; ShowMessage(card.InstanceName + ' : ' + Status); end; end; |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Binde mal die Units "ComObj" und "ActiveX" ein
|
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Danke spaxxn das wars. Jetzt hängt es allerdings beim Aufrufen der procedure
Zitat:
Edit: Ok habe es dann doch selbst entdeckt :) hatte statt procedure xxx.yyyy nur procedure yyyy stehen gehabt. |
Re: Feststellen, ob Netzwerkkabel gezogen wurde?
Edit: Ich schlaf noch
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 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