Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2013, 14:26   #1
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию Не появляется TSWbemLocator при импорте Microsoft WMI Scripting v1.2

Пробую работать с WMI, по этому мануалу
Все делаю как там написано, но
Цитата:
добавляем к нему компоненту TSWbemLocator
такого компонента у меня нет, Delphi XE4. Как я понимаю он должен был появиться после импорта Microsoft WMI Scripting v1.2, но этого не происходит. В чем соль?)
Спасибо
bakanaev вне форума Ответить с цитированием
Старый 28.07.2013, 16:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В чем соль нужно посмотреть в палитре классов для этого Microsoft WMI Scripting v1.2.
Сейчас навскидку не помню что он содержит, возможно придется еще что-то подключать. Я лично предпочитаю вот так с ним работать:
Код:
uses    activex, comobj, variants,
...
var objSWbemLocator,objWMIService,Records,Rec,Field:olevariant;
  id:IDispatch;  Enum,Fields:IEnumVariant;
...
begin
  objSWbemLocator:=CreateOleObject('WbemScripting.SWbemLocator');
  if not VarIsClear(objSWbemLocator) then begin
   objWMIService:=objSWbemLocator.ConnectServer('','','','','','',0,id);
   if not VarIsClear(objWMIService) then begin
    Records:=objWMIService.ExecQuery('select name from win32_account','WQL',0,id);
    if not VarIsClear(Records) then begin
     Enum:=IEnumVariant(IUnknown(Records._NewEnum));
     while (Enum.Next(1, Rec) = S_OK) do begin
      Fields:=IEnumVariant(IUnknown(Rec.Properties_._NewEnum));
        while (Fields.Next(1, Field) = S_OK) do begin
         try
          if VarIsNull(Field.Value) then s:='[NULL]'
          else  begin
            s:=Field.Value;
            if Field.CIMType=$00000065 then begin
             s:=copy(s,7,2)+'.'+copy(s,5,2)+'.'+copy(s,1,4);
            end;
          end;
          ListBox1.Items.Append(s);
         except

         end;
        end;
     end;
     Records:=nil;
    end;
   end;
   objWMIService:=nil;
  end;
  objSWbemLocator:=nil;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистить кэш при импорте Snekich Microsoft Office Excel 4 19.11.2012 20:07
Проверка при импорте Власов А.С. БД в Delphi 3 09.11.2009 09:48
phpmyadmin, ошибка при импорте Linel PHP 3 14.07.2009 19:11
При завершение работы программы появляется окно Microsoft Visual C++ Debug Library TheWanderer Visual C++ 2 25.11.2008 00:27