Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

WMI и сеть [D7, WinXP]


pirks ©   (2007-08-08 13:41:00) 

у меня такакя проблема :
C помощью WMI получил свединия о первой сетевухе

var
 Service:             ISWbemServices;
 ObjectSet:           ISWbemObjectSet;
 SObject:             ISWbemObject;
 PropSet:             ISWbemPropertySet;
 SProp:               ISWbemProperty;

 PropEnum, Enum:      IEnumVariant;
 TempObj:             OleVariant;
 Value:               Cardinal;
 StrValue:            string;
 na :                 integer ;

begin
 na := 1 ;

 Service:= DM.SWLocator.ConnectServer( Name , 'root\CIMV2' , User , Password , '' , '' , 0 , nil);
 SObject:= Service.Get('Win32_NetworkAdapter', wbemFlagUseAmendedQualifiers, nil);
 ObjectSet:= SObject.Instances_(0, nil);

 Enum:= (ObjectSet._NewEnum) as IEnumVariant;
 Enum.Next(1, TempObj, Value);
 SObject:= IUnknown(TempObj) as SWBemObject;

 PropSet := SObject.Properties_;
 PropEnum := (PropSet._NewEnum) as IEnumVariant;

 // начинаю перебирать свойства
 while (PropEnum.Next(1, TempObj, Value) = S_OK) do
 begin
   SProp:= IUnknown(TempObj) as SWBemProperty;
   if (SProp.Get_Value <> null) then
   begin
     with SProp do
     begin
       if Name = 'SystemName' then
         MainInfo.NET.SystemName := Get_Value
     else if Name = 'Caption' then
       MainInfo.NET.Adapter[na].Caption := Get_Value
     else if Name = 'Name' then
       MainInfo.NET.Adapter[na].Name := Get_Value
     else if Name = 'ServiceName' then
       MainInfo.NET.Adapter[na].ServiceName := Get_Value
     else if Name = 'Description' then
       MainInfo.NET.Adapter[na].Description := Get_Value
     else if Name = 'Manufacturer' then
       MainInfo.NET.Adapter[na].Manufacturer := Get_Value
     else if Name = 'DeviceID' then
       MainInfo.NET.Adapter[na].DeviceID := Get_Value
     else if Name = 'MACAddress' then
       MainInfo.NET.Adapter[na].MACAddress := Get_Value
   end; { with }
 end; { if 1 }

 end;

Всё отлично работает но как получить данные остальных карт у меня лично их 2
Кто нибудь знает ?
Заранее спасибо


pirks   (2007-08-08 14:04:00) [1]

работает !!! Точняк    Enum.Next(1, TempObj, Value);
Спасибо всем за внимаеие :)


Lacmus   (2007-08-08 13:56:00) [2]

>pirks ©   (08.08.07 13:41)
Enum.Next(1, TempObj, Value); ?


Сергей М.   (2007-08-08 13:53:00) [3]

Ну так у тебя ж реализован цикл по ВСЕМ "адаптерам" !

В чем проблема-то ?


pirks   (2007-08-08 13:46:00) [4]

нет я проверял и на своём у меня 2 своих + VMWare ещё  1


Сергей М.   (2007-08-08 13:44:00) [5]


> у меня лично их 2


У тебя-то может их и две, а на удаленном компе вполне может быть и одна)


Наверх

Титульная страница Поиск, карта сайта Написать письмо