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
من فقط خط دوم را میخوام که روی سیستم های مختلف هم جواب فرق میکنه ...
با تشکر
کوچیک شما محسن
من یک سورس کد شسته رفته می خواهم که مدل، سرعت و مک آدرس کارت شبکه فعال
( توجه : خروجی فقط یک کارت ) یک کامپیوتر متصل به شبکه را برام برگردونه . من خودم چندتا برنامه دارم که لیستی از 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
من فقط خط دوم را میخوام که روی سیستم های مختلف هم جواب فرق میکنه ...
با تشکر
کوچیک شما محسن