AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Feststellen, ob Netzwerkkabel gezogen wurde?
Thema durchsuchen
Ansicht
Themen-Optionen

Feststellen, ob Netzwerkkabel gezogen wurde?

Ein Thema von raffix · begonnen am 24. Mär 2003 · letzter Beitrag vom 2. Jun 2008
 
Tod787

Registriert seit: 19. Mai 2008
99 Beiträge
 
#29

Re: Feststellen, ob Netzwerkkabel gezogen wurde?

  Alt 28. Mai 2008, 11:05
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:
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;
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.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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