1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| function InfoWMI(Instance, Properties : String) :String;
var
WmiLocator: TSWbemLocator;
WmiService: SWbemServices;
WmiObjectSet: SWbemObjectSet;
WmiObject: SWbemObject;
//WmiProperty: SWbemProperty;
ObjectEnumerator: IEnumVariant;
ArrayVariant: OleVariant;
NumberItem: LongWord;
OldCursor: TCursor;
i: integer;
begin
i := 0;
WmiLocator:= TSWbemLocator.Create(nil);
try
OldCursor := Screen.Cursor;
Screen.Cursor := crAppStart;
// Connexion WMI (PCName, 'ROOT\CIMV2', UserName, UserPassword, '', '', ...)
WmiService:= WMILocator.ConnectServer('.', 'ROOT\CIMV2', '', '', '',
'', wbemConnectFlagUseMaxWait, nil);
WmiObjectSet := wmiService.InstancesOf(Instance,
wbemFlagReturnWhenComplete, nil);
// Affecte un énumérateur pour la collection d'objet SWbemObject
ObjectEnumerator:= (WmiObjectSet._NewEnum) as IEnumVariant;
// Retourne NumberItem éléments dans le tableau ArrayVariant,
while (ObjectEnumerator.Next(1, ArrayVariant, NumberItem) = S_OK) do
begin
i := i + 1;
// Récupére de la collection l'objet SWbemObject courant
WmiObject := IUnknown(ArrayVariant) as SWBemObject;
// Retrouve la propriétés de l'instance au format MOF
Result := AdjustLineBreaks(WmiObject.Properties_.Item(Properties,0).Get_Value);
test[i] := WmiObject.Properties_.Item(Properties,0).Get_Value;
end;
Screen.Cursor:= OldCursor;
Finally;
WmiLocator.Free;
end;
end; |
Partager