| 12
 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