Bonjour,

Je débute avec WMI, j'arrive à obtenir des infos mais comme je n'ai pas tout ce que je veux mais je cherche

Ce que je cherche (et ne trouve pas) c'est ou trouver les phrases type comme
SELECT * FROM WIN32_LOGICALDISK WHERE NAME="C:"
par exemple et y en a d'autres (j'en ai vu dans la FAQ)

Connaître la différence entre "WMILocator:= CoSWbemLocator.Create();" et "WMILocator:= TSWbemLocator.Create(self);" et s'il y en a d'autre et pourquoi celui la plus qu'un autre

C'est plus de la doc que du code dont j'ai besoin

Par avance merci, pour l'instant ça me fais plus cette effet heu celui du bas pas celui qui tape


Désolé il manque des procedure / fonction. Mais sont dispo si vous les voulez

Info sur mon PC
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var  wmiObjectSet:        ISWbemObjectSet;
     Value:               Cardinal;
     SObject:             ISWbemObject;
     ArrayVariant :       OleVariant;
     ObjectEnumerator :   IEnumVariant;
begin
  try
    wmiObjectSet := connectionI.ExecQuery('SELECT * FROM WIN32_LOGICALDISK WHERE NAME="C:"','WQL',     // <==== ici la lettre du lecteur
                                          wbemFlagReturnImmediately and wbemFlagForwardOnly , nil);
    ObjectEnumerator :=  (wmiObjectSet._NewEnum) as IEnumVariant;
    if (ObjectEnumerator.Next(1, ArrayVariant, Value) = S_OK) then                // un objet trouvé ?
       begin
         SObject :=IUnknown(ArrayVariant) as ISWBemObject;
         if (SObject <> nil) then
            begin                                                                // SObject.Properties_;
              Memo1.Lines.Add(SObject.GetObjectText_(0));                        // Acceder aux propriétés
              Memo1.Lines.Add(WMILecture(SObject.GetObjectText_(0),'Caption'));
            end;
       end;
  except
    //Result:='';
  end;
Info sur un lecteur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Var wmiObjectSet:        SWbemObjectSet;
    ObjectEnumerator:    IEnumVariant;
    ArrayVariant:        OleVariant;
    WmiObject:           SWBemObject;
    NumberItem:          LongWord;
begin
  wmiObjectSet := connectionT.InstancesOf('Win32_OperatingSystem',               //wmiService:=connection;
                                                         wbemFlagReturnWhenComplete,Nil);
  ObjectEnumerator:= (WmiObjectSet._NewEnum) as IEnumVariant;
  while (ObjectEnumerator.Next(1, ArrayVariant, NumberItem) = S_OK) do
         begin
           WmiObject := IUnknown(ArrayVariant) as SWBemObject;                   // Récupére de la collection l'objet SWbemObject courant
           Memo1.Lines.Add(AdjustLineBreaks(wmiObject.GetObjectText_(0)));       // Retrouve la propriétés de l'instance au format MOF .
         end;
  label1.Caption:='nom : '+wmilecture(wmiObject.GetObjectText_(0),'caption');
 
   //AdjustLineBreaks((wmiObject.path as SWbemObjectPath ).relpath);
end;