VB 5/6-Tipp 0743: Temperatur der Festplatte auslesen
von Konrad Doblander
Beschreibung
Dieser Tipp erlaubt es, die Temperatur der Festplatte mittels WMI auszulesen.
Vergleichstests mit diversen HW-Monitoring-Programmen haben korrekte Werte bei verschiedenen Festplatten unterschiedlicher Hersteller (Samsung, IBM (Hitachi), Maxtor) geliefert. Allerdings kann es insbesondere bei Western Digital-Festplatten vorkommen, dass keine Werte angezeigt werden - laut den mir zur Verfügung stehenden Unterlagen, wird dort der Wert für die Festplatten-Temperatur nicht im 'VendorSpecific'-Block abgelegt.
Der Code funktioniert auch unter 'normalen' Benutzerrechten - die WMI-Klasse gibt es, soweit der Autor feststellen konnte, erst ab Windows XP.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Projekt1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Beschriftungsfeld "Label1" '****************************************************************************** ' Anwendung: HDD Temp ' ltzt. Änderung: 30.09.2007 13:20 Uhr '****************************************************************************** ' Option Explicit Dim idx As Integer Private Sub Command1_Click() Label1.Caption = HW_SmartHDTemp(0) & "°" End Sub ' ' Private Function HW_SmartHDTemp(Optional ByVal nID As Integer = 0) As String Dim objWMI As Object Dim objItem As Object Dim objInsts As Object Dim idx As Integer Dim strTemp As String Dim strReturn As String On Error Resume Next Err.Clear 'If Env_Status_WMI = True Then Set objWMI = GetObject("winmgmts:\\.\root\WMI") Set objInsts = objWMI.InstancesOf("MSStorageDriver_ATAPISmartData", 48) For Each objItem In objInsts If idx = nID Then strTemp = Join(objItem.VendorSpecific, ", ") ' ID 194 ist akt. Temp in °C strReturn = subGetSmartID(strTemp, 194, 5) 'Debug.Print strReturn End If idx = idx + 1 Next 'End If Set objItem = Nothing Set objWMI = Nothing On Error Goto 0 HW_SmartHDTemp = Format$(strReturn, "##0.0") End Function Private Function subGetSmartID(ByRef smartStrVal As String, _ ByRef nID As Integer, nItem As Integer) As String Dim idx1 As Integer Dim strPart1() As String If Len(Trim$(smartStrVal)) = 0 Then Exit Function strPart1 = Split(smartStrVal, ",") For idx1 = 2 To UBound(strPart1) Step 12 If CInt(strPart1(idx1)) = nID Then subGetSmartID = strPart1(idx1 + nItem) Exit Function End If Next End Function '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Projekt1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB5 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB6 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.