hello,
you can try my modified wmi utility
utilwmito use the
MSStorageDriver_ATAPISmartData wmi class you must change the wmi name space to root\WMI :
in utilwmi :
objWMIService := FSWbemLocator.ConnectServer('localhost', 'root\WMI', '', '');
the class MSStorageDriver_ATAPISmartData doesn't work for all disk drive and as the temperature is a vendorspecific property the index can change according to manufacturer.
Here is a code to read the temperature from my WD hard disk (you must execute application as administrator ) :
procedure TForm1.Button10Click(Sender: TObject);
var WMIResult : TFPObjectList;
f : integer;
retVal : String;
temperature : String;
begin
WMIResult := GetWMIInfo('MSStorageDriver_ATAPISmartData', ['InstanceName','VendorSpecific']);
for f := 0 to Pred(WMIResult.Count) do
begin
retVal := TStringList(WMIResult[f]).ValueFromIndex[0];
Memo1.Lines.add(Retval);
retVal := TStringList(WMIResult[f]).ValueFromIndex[1];
temperature := retVal.Split(',')[163];
Memo1.Lines.add('temperature : ' + temperature + ' °C');
end;
WMIResult.Free;
end;
Result in attachment
Friendly, J.P