If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register or Login
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

How to retrieve hard drive temperature?

I am looking for a way to retrieve the temperature of hard drives in VB Express 2008. I have found posts at a few different places that accomplish this with the following:

Code:

Public Function GetDriveTemp() As Integer
Try
Dim searcher As New ManagementObjectSearcher("root\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData")
For Each queryObj As ManagementObject In searcher.Get()
Dim arrVendorSpecific As Byte() = queryObj("VendorSpecific")
GetDriveTemp = arrVendorSpecific(115
Next
Catch ex As ManagementException
MessageBox.Show(ex.Message)
End Try
End Function

This function retrieves the temperature for all the hard drives in my system (excluding USB), two internal and one external esata drive. There are two problems, tough:

1. I want to know the drive letter and maybe the drive label that the retrieved temperature corresponds to. I'm assuming that the * in the query, "SELECT * FROM MSStorageDriver_ATAPISmartData", can be changed to specify a particular drive rather than all drives, but I don't know how retrieve a list of all the drives in my system or how to write the query based on those results.

2. If I call the funciton from a some click event like for a label or button, there are no problems and the return value seems valid. But when I call the function from a Timer_Tick event, the mouse cursor is the busy cursor as long as the mouse is within the form, the form doesn't receive any click events, and it cannot be closed.

I know what I'm trying to do can be done because there are a few utilities that provide this information. So, does anyone have any ideas?

Re: How to retrieve hard drive temperature?

Funky!!! Good One!

Just a side not, in order to make use of the ManagementObject and the ManagementObjectSearcher you need to set a reference to System.Management, by clicking on Project, ProjectName proeprties, scroll for System.Management, OK.

Re: How to retrieve hard drive temperature?

I think I got it...a sort of: on my pc I get the drive temp and letter associated with instanceName, but had to trick a bit (had to remove 2 bytes from instancename, and do not know if it might be valid for any disk)