Ceci est une ancienne révision du document !


Manipulations avec WMI

Enumérer les properties d'un SWbemObject

Version Courte
// On créé un enumérateur
  vEnum := IUnknown(ASWbemObject.Properties_._NewEnum) as IEnumVariant;
  while vEnum.Next(1, vSWbemProperty, vCardinal) = 0 do
  begin
  ... // ici on accéde a chaque properties avec vSWbemProperty
  end;
Version complète
function SWbemObjectPropertiesToString(ASWbemObject: TSWbemObject): string;
var
  vSWbemProperty: TSWbemProperty; //olevariant
  vPropValueV: olevariant;
  vPropvalueS: string;
  vCardinal: cardinal;
  vEnum: IEnumvariant;
  vVT:   TVarType;
 
begin
  Result := '';
 
  vEnum := IUnknown(ASWbemObject.Properties_._NewEnum) as IEnumVariant;
  while vEnum.Next(1, vSWbemProperty, vCardinal) = 0 do
  begin
    vPropValueV := vSWbemProperty.Value;
    vVT         := VarType(vPropValueV);
    if vVT > varQWord then
      vPropValueS := format('Variant de type (%d)', [vVT])
    else
      vPropValueS := vartostrdef(vPropValueV, 'null');
    Result += vSWbemProperty.Name + ' = ' + vPropValueS + chr(13) + chr(10);
  end;
end;

Faire une Requête Asynchrone

Vous pourriez laisser un commentaire si vous étiez connecté.