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