Einzelnen Beitrag anzeigen

Tod787

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

Re: Feststellen, ob Netzwerkkabel gezogen wurde?

  Alt 2. Jun 2008, 10:57
Habe jetzt folgenden optimierten Quellcode der mir anzeigt ob sämtliche Netzwerkadapter im System verbunden sind oder nicht.

Genutzt wird ja WMI (MSNdis_MediaConnectStatus). Ich möchte allerdings nur einen der Netzwerkadapter überprüfen. Wie schaffe ich es gezielt diesen einen zu überprüfen und die anderen zu ignorieren? Letztendlich soll nur der LAN-Adapter überprüft werden udn WLAN, WAN & Co ignoriert werden.

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
wmi : OleVariant;
wmiService : variant;
nicstatus : Olevariant;
card : Olevariant;
cnt : integer;
Enum: IEnumVariant;
P : IUnknown;
F : Cardinal;
connected : integer;
status : string;

begin
  Listbox1.Items.BeginUpdate;
  try
  ListBox1.clear;
  WMI:=CreateOleObject('WbemScripting.SWbemLocator');
  try
    wmiService := wmi.ConnectServer('.', 'root\wmi');
    nicstatus := wmiService.InstancesOf('MSNdis_MediaConnectStatus');
    try
      p := nicstatus._NewEnum;
      p.QueryInterface(IEnumVariant, Enum);
      for cnt := 0 to nicstatus.Count - 1 do
       begin
         Enum.Next(1, card, F);
         try
           connected := card.NdisMediaConnectStatus;
           if (connected = 0) then
              begin
                Status := 'verbunden';
              end
           else
              begin
                Status := 'nicht verbunden';
              end;
           ListBox1.Items.Add( card.InstanceName + ' : ' + status);
         finally
           card := unassigned;
         end;
       end;
    finally
      nicstatus := unassigned;
    end;
  finally
    wmi := unassigned;
  end;
  finally
    Listbox1.Items.EndUpdate;
  end;
end;
  Mit Zitat antworten Zitat