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 47 48
| var
WMILocator: TSWbemLocator;
WmiService: SWbemServices;
WmiObject, WClass: SWbemObject;
wmiObjectSet, WInParameters: SWbemObjectSet;
WmiProperty: SWbemProperty;
WmiPropertySet: SWbemPropertySet;
PropertyEnumerator,
ObjectEnumerator, Enum: IEnumVariant;
ArrayVariant: OleVariant; // Tableau de variant
NumberItem: LongWord;
begin
WMILocator:= TSWbemLocator.Create(self);
try
// Création d'une connexion à un espace de nom local
// ici le nom de l'espace de nom cible est : CIMV2
// L'appel renvoie un pointeur sur un objet SWbemServices
WmiService:= WMILocator.ConnectServer('.', 'ROOT\CIMV2', '', '', '',
'', wbemConnectFlagUseMaxWait, nil);
// Retrouve la collection d'instance de la classe Win32_Service
// de l'espace de nom courant
wmiObjectSet := wmiService.InstancesOf('Win32_TemperatureProbe',
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,
// ici 1 élément est demandé
while (ObjectEnumerator.Next(1, ArrayVariant, NumberItem) = S_OK) do
begin
// 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
Memo1.Lines.Add(AdjustLineBreaks(wmiObject.GetObjectText_(0)));
end;
Finally
WMILocator.Free;
end;
end; |
Partager