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
   | function setWMI(Requete, Properties, Item, Value : String) :Integer;
var
  WmiLocator:          TSWbemLocator;
  WmiService:          SWbemServices;
  WmiObject,
  WmiObjectInProperties,
  WmiObjectOut:        SWbemObject;
  WmiObjectMethod:     ISWbemMethod;
  WmiProperty:         SWbemProperty;
 
  ArrayVariant,
  ArrayValue:           OleVariant;
begin
  WmiLocator:= TSWbemLocator.Create(nil);
  try
    Screen.Cursor := crAppStart;
    // Connexion WMI (PCName, 'ROOT\CIMV2', UserName, UserPassword, '', '', ...)
    WmiService := WMILocator.ConnectServer('.', 'ROOT\CIMV2', '', '', '',
                                          '', wbemConnectFlagUseMaxWait, nil);
    WmiObject := WmiService.Get(Requete, 0, Nil);
    WmiObjectMethod := WmiObject.Methods_.Item(Properties, 0);
    WmiObjectInProperties := WmiObjectMethod.InParameters.SpawnInstance_(0);
    WmiProperty := WmiObjectInProperties.Properties_.Item(Item,0);
    ArrayValue := Value;
    WmiProperty.Set_Value(ArrayValue);
    WmiObjectOut := WmiObject.ExecMethod_(Properties, WmiObjectInProperties,
                                          wbemFlagReturnWhenComplete, Nil);
    ArrayVariant := WmiObjectOut.Properties_.Item('ReturnValue', 0);
 
    Result := ArrayVariant.Value;
 
    Screen.Cursor:= crDefault;
  Finally;
    WmiLocator.Disconnect;
    WmiLocator.Free;
  end;
end; | 
Partager