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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| function info_disques_logiques: TStringList;
var
l_WMILocator: ISWbemLocator; // Locator, gets Services
l_WMIServices: ISWbemServices; // Services, gets Object Definitions
l_WMIObjectSet: SWbemObjectSet; // ObjectSet, gets Enum over Instances
l_WMIObjectInstances: IEnumVariant; // Enum of Instances, gets Object
l_WMIObject: ISWbemObject; // Object, gets Sets of his properties
l_WMIPropertySet: ISWbemPropertySet; // PropertySet, gets single property
l_WMIProperty: ISWbemProperty; // Property, gets Value
l_TempObj: oleVariant; // temporary used values
l_ObjValue: Cardinal;
sValue:string;
count,code:integer;
tampon,tampon1:real;
longueur:byte;
begin
result := TStringList.Create;
// retrieve object enum through WMI classes
l_WMILocator := CoSWbemLocator.Create;
l_WMIServices := L_WMILocator.ConnectServer('', 'root\cimv2', '', '', '', '',wbemConnectFlagUseMaxWait, nil);
l_WMIObjectSet:= l_WMIServices.ExecQuery('SELECT * FROM Win32_LogicalDisk', 'WQL',
wbemFlagReturnImmediately or wbemFlagForwardOnly , nil);
l_WMIObjectInstances := (l_WMIObjectSet._NewEnum) as IEnumVariant;
//iterate through enum values (WbemObjects) and get the property values
while (l_WMIObjectInstances.Next(1, l_TempObj, l_ObjValue) = S_OK) do
begin
l_WMIObject:= IUnknown(l_TempObj) as SWBemObject;
l_WMIPropertySet := l_WMIObject.Properties_;
l_WMIProperty := l_WMIPropertySet.Item('DeviceID', 0);
if not VarIsNull(l_WMIProperty.Get_Value) then
begin
sValue:=l_WMIProperty.Get_Value;
result.Append(sValue);
end
else
result.Append('');
l_WMIProperty := l_WMIPropertySet.Item('Drivetype', 0);
if not VarIsNull(l_WMIProperty.Get_Value) then
begin
sValue:=l_WMIProperty.Get_Value;
val(svalue,count,code);
case count of
2 :svalue:='Disque amovible' ;
3 :svalue:='Disque local' ;
4 :svalue:='Repertoire reseau';
5 :svalue:='Lecteur disque';
end;
result.Append(sValue);
end
else
result.Append('');
l_WMIProperty := l_WMIPropertySet.Item('FileSystem', 0);
if not VarIsNull(l_WMIProperty.Get_Value) then
begin
sValue:=l_WMIProperty.Get_Value;
result.Append(sValue);
end
else
result.Append('');
l_WMIProperty := l_WMIPropertySet.Item('FreeSpace', 0);
if not VarIsNull(l_WMIProperty.Get_Value) then
begin
sValue:=l_WMIProperty.Get_Value;
result.Append(sValue);
end
else
result.Append('');
l_WMIProperty := l_WMIPropertySet.Item('size', 0);
if not VarIsNull(l_WMIProperty.Get_Value) then
begin
sValue:=l_WMIProperty.Get_Value;
result.Append(sValue);
end
else
result.Append('');
end;
end; |
Partager