Добрый день!
пытаюсь научиться работать с WMI на Delphi.
столкнулся с проблемами:
нашел много инструкци, примеров по этой теме но:
>> Для начала импортируйте библиотеку типов (wmi начиная с NT4SP4 встроен в систему)
>> 1.Active DS Type Library ---- нет у меня такого
имею WIN 2K как называется dll/ocx??
>> 2.Microsoft WMI Scripting v1.1 Library
>> используйтте TSWbemLocator
советуют установить WMIcore но он только для NT4
соответсвенно не могу ни как с этим рабоатать где только не пыался найти....
большенство ссылок 2004года и не рабочии..
не помню где нашел
const STGM_default =STGM_READWRITE + STGM_SHARE_EXCLUSIVE;
STGM_BASE =STGM_READ + STGM_SHARE_EXCLUSIVE;
function getobject(const name:string;accs:dword=STGM_default):variant;
var err:HResult;
bo:tBINDOPTS;
res:IDispatch;
nm:widestring;
begin nm := name; fillchar(bo,sizeof(bo),0);
with bo do begin cbStruct := sizeof(bo);
grfFlags := BIND_MAYBOTHERUSER;
grfMode := accs;
end;
err:=CoGetObject( @nm[1] , @bo , IDispatch , @res );
OleCheck(err);
result:=res;
end;
procedure TForm1.Button1Click(Sender: TObject);
var q1,Boards,q3:variant;
begin
q1:=getobject('winmgmts:{impersonationLevel=impersonate}!//.\root\cimv2');
Bouards:=q1.ExecQuery('select * from Win32_BaseBoard', , 48);
end;
отрабатывает без проблем.. вот только не знаю что делать дальше...
в VB там дальше
For Each Board In Boards
но тогда как это реализовать на Delphi??
здесь на форуме находил похожие темы, но они тоже "старые" и не понятно как была решена проблема...