ورود

View Full Version : سوال: تشخیص کارت شبکه



karimim
چهارشنبه 23 شهریور 1390, 10:08 صبح
سلام به همه اساتید
من یک سورس کد شسته رفته می خواهم که مدل، سرعت و مک آدرس کارت شبکه فعال
( توجه : خروجی فقط یک کارت ) یک کامپیوتر متصل به شبکه را برام برگردونه . من خودم چندتا برنامه دارم که لیستی از NIC را برمی گردونه که البته بعضی هاش مجازی هست
من یک روش جدید برای این کار می خوام تو اینترنت هم مثال های زیادی بود که به دردم نخورد

این کد مورد استفاده من هست :


procedure ShowNetworkStatus;
var
wmi : variant;
wmiService : variant;
nicstatus : variant;
card : Olevariant;
cnt : integer;
Enum: IEnumVariant;
P : IUnknown;
F : Cardinal;
connected : integer;
status,s : string;
begin
WMI:=CreateOleObject('WbemScripting.SWbemLocator') ;
wmiService := wmi.ConnectServer('.', 'root\wmi');
nicstatus := wmiService.InstancesOf('MSNdis_MediaConnectStatus' );
p := nicstatus._NewEnum;
p.QueryInterface(IEnumVariant, Enum);

s:='';
Card:='';
ShowMessage(IntToStr(nicstatus.Count));
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';
s:=s + card.InstanceName + ' - ' + status + #13#10;
end;
ShowMessage(s);
end;


این هم خروجیش :

75292

من فقط خط دوم را میخوام که روی سیستم های مختلف هم جواب فرق میکنه ...

با تشکر

کوچیک شما محسن

joker
چهارشنبه 23 شهریور 1390, 14:21 عصر
بايد ببيني كدوم كارت شبكه Recive Packet بيشتري داشته ، اونا به عنوان كارت شبكه فعال تر! ( نه صرفا فقط يك كارت شبكه فعال ) انتخاب كني.