Vaya chackall, yo lo estaba intentando de esta manera:
Código Delphi
[-]
var
ScriptControl: OleVariant;
WmiService: OleVariant;
Items: IUnknown;
Enum: IEnumVariant;
Fetched: Cardinal;
Item: OleVariant;
begin
ScriptControl:= CreateOleObject('ScriptControl');
ScriptControl.Language := 'VBScript';
WmiService:= ScriptControl.Eval('GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")');
Items:= WMIService.ExecQuery('Select * from Win32_OnBoardDevice')._NewEnum;
Enum:= Items as IEnumVariant;
Enum.Reset;
Enum.Next(1, Item, Fetched);
while Fetched = 1 do
begin
if not VarIsNull(Item.Description) then
Memo1.Lines.Add(Item.Description);
Enum.Next(1, Item, Fetched);
end;
end;
Pero no daba con la manera de enumerar la colección devuelta por ExecQuery, gracias por el código me has ahorrado mucho tiempo.