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;