OpenHardwareMonitorLib benutzen

    • VB.NET

    Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Luki-Progger.

      OpenHardwareMonitorLib benutzen

      Heute möchte ich euch zeigen, wie man die OpenHardwareMonitorLib benutzt.
      Diese ist ganz einfach zu benutzen. Hier könnt ihr den OpenHardwareMonitor downloaden.
      Dann müsst ihr die ZIP entpacken, Projekt öffnen/neues beginnen, einen Verweis auf "OpenHardwareMonitorLib.dll" hinzufügen.
      Wichtig: Ihr müsst VS mir Administratorrechten starten und diese auch dem Programm geben!
      Für's erste war es das mal, dann fangen wir mal an.

      Folgendermaßen sind die Kapitel eingeteilt:
      1. CPU
      2. HDD
      3. Mainboard
      4. GPU



      Kapitel 1: CPU
      Ihr wolltet schon immer die Temperatur des Prozessor auslesen und habt "Nicht unterstützt" bekommen?
      Dass wird jetzt anders. Dank dem Auslesen der DTS(Digital Thermal Sensors) funktioniert das jetzt!

      Als erstes Importieren wir mal das benötigte:

      VB.NET-Quellcode

      1. Imports OpenHardwareMonitor.Hardware


      Um die Infos auszulesen, müssen wir einen Computer "deklaieren"

      VB.NET-Quellcode

      1. Dim Computer As New Computer


      Um jetzt die CPU-Infos zu bekommen, müsst ihr ins Load-Event folgenden Code:

      VB.NET-Quellcode

      1. Computer.CPUEnabled = True 'Dass er bei .Open() nur die CPU-Daten holt
      2. Computer.Open() 'Öffnet die Funktion zum holen der Information

      Info: Die Open-Funktion nimmt einige Zeit in Anspruch. Es wäre sinnvoll, alles in einen eigenen Thread zu verlagern.

      Dann Erstellen wir eine Funktion, wo man den gewünschten Kern nullbasiert angeben muss, und diese gibt 'Temperature' °C zurück

      VB.NET-Quellcode

      1. Private Function GetCoreTemp(ByVal Core As Integer) As String


      Dann finde wir jede einzelne Hardware heraus und überprüfen, ob diese vom Typ CPU ist:

      VB.NET-Quellcode

      1. For Each Hardware In Computer.Hardware 'Jede einzelne Hardware heraussuchen
      2. Hardware.Update() 'Die Werte aktualisieren
      3. If Hardware.HardwareType = HardwareType.CPU Then 'Da wir die CPU brauchen, überprüfen wir, ob die aktuelle Hardware die CPU ist.


      Dann finde wir jeden einzelnen Sensor heraus und überprüfen, ob dieser vom Typ Temperature ist:

      VB.NET-Quellcode

      1. For Each Sensor In Hardware.Sensors 'Jeden Sensor heraussuchen
      2. If Sensor.SensorType = SensorType.Temperature Then ' Da wir die Temperatur brauchen überprüfen wir, ob der aktuelle Sensor die Temperatur ausliest.
      3. If Sensor.Index = Core Then 'Überprüfen, ob der aktuelle Index der gewünschte Kern ist
      4. Return CDbl(Sensor.Value) 'Wenn alles passt (CPU, Temperatur-Sensor, Kern), wird der Wert zurückgegeben (MH/z)
      5. End If
      6. End If
      7. Next


      Und dann noch der Schluss:

      VB.NET-Quellcode

      1. End If
      2. Next
      3. Return 0.0 'Wenn nichts gefunden wurde, wird '0.0" zurückgegeben.
      4. End Function


      Ihr könnt es auch gleich für andere Sachen verwenden, aber für den aktuellen Takt(Clock) braucht man folgenden Code, da der Bus Index 0 ist:

      VB.NET-Quellcode

      1. Private Function GetCoreClock(ByVal Core As Integer) As String
      2. For Each Hardware In Computer.Hardware 'Jede einzelne Hardware heraussuchen
      3. Hardware.Update() 'Die Werte aktualisieren
      4. If Hardware.HardwareType = HardwareType.CPU Then 'Da wir die CPU brauchen, überprüfen wir, ob die aktuelle Hardware die CPU ist.
      5. For Each Sensor In Hardware.Sensors 'Jeden Sensor heraussuchen
      6. If Sensor.SensorType = SensorType.Temperature Then ' Da wir die Temperatur brauchen überprüfen wir, ob der aktuelle Sensor die Temperatur ausliest.
      7. If Sensor.Index = Core + 1Then 'Überprüfen, ob der aktuelle Index der gewünschte Kern ist, aber da auch noch der Bus-Speed exisiert, muss man hier Core + 1 überprüfen
      8. Return CDbl(Sensor.Value) 'Wenn alles passt (CPU, Temperatur-Sensor, Kern), wird der Wert zurückgegeben (MH/z)
      9. End If
      10. End If
      11. Next
      12. End If
      13. Next
      14. Return 0.0 'Wenn nichts gefunden wurde, wird '0.0" zurückgegeben.
      15. End Function


      Zum Schluss noch eine Zusammenfassung:

      VB.NET-Quellcode

      1. Imports OpenHardwareMonitor.Hardware
      2. Public Class Form1
      3. Dim Computer As New Computer
      4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Click
      5. Computer.CPUEnabled = True 'Dass er bei .Open() nur die CPU-Daten holt
      6. Computer.Open() 'Öffnet die Funktion zum holen der Information
      7. For i = 0 To Environment.ProcessorCount - 1 'Alle Kerne werden ermittelt
      8. MessageBox.Show("Core temperature " & i + 1 & ": " & GetCoreTemp(i)) 'Für jeden Kern wird die Temperatur angezeigt.
      9. Next
      10. End Sub
      11. Private Function GetCoreTemp(ByVal Core As Integer) As String
      12. For Each Hardware In Computer.Hardware 'Jede einzelne Hardware heraussuchen
      13. Hardware.Update() 'Die Werte aktualisieren
      14. If Hardware.HardwareType = HardwareType.CPU Then 'Da wir die CPU brauchen, überprüfen wir, ob die aktuelle Hardware die CPU ist.
      15. For Each Sensor In Hardware.Sensors 'Jeden Sensor heraussuchen
      16. If Sensor.SensorType = SensorType.Temperature Then ' Da wir die Temperatur brauchen überprüfen wir, ob der aktuelle Sensor die Temperatur ausliest.
      17. If Sensor.Index = Core Then 'Überprüfen, ob der aktuelle Index der gewünschte Kern ist
      18. Return CDbl(Sensor.Value) 'Wenn alles passt (CPU, Temperatur-Sensor, Kern), wird der Wert zurückgegeben (MH/z)
      19. End If
      20. End If
      21. Next
      22. End If
      23. Next
      24. Return 0.0 'Wenn nichts gefunden wurde, wird '0.0" zurückgegeben.
      25. End Function
      26. Private Function GetCoreClock(ByVal Core As Integer) As Double
      27. For Each Hardware In Computer.Hardware 'Jede einzelne Hardware heraussuchen
      28. Hardware.Update() 'Die Werte aktualisieren
      29. If Hardware.HardwareType = HardwareType.CPU Then 'Da wir die CPU brauchen, überprüfen wir, ob die aktuelle Hardware die CPU ist.
      30. For Each Sensor In Hardware.Sensors 'Jeden Sensor heraussuchen
      31. If Sensor.SensorType = SensorType.Temperature Then ' Da wir die Temperatur brauchen überprüfen wir, ob der aktuelle Sensor die Temperatur ausliest.
      32. If Sensor.Index = Core + 1 Then 'Überprüfen, ob der aktuelle Index der gewünschte Kern ist, aber da auch noch der Bus-Speed exisiert, muss man hier Core + 1 überprüfen
      33. Return CDbl(Sensor.Value) 'Wenn alles passt (CPU, Temperatur-Sensor, Kern), wird der Wert zurückgegeben (MH/z)
      34. End If
      35. End If
      36. Next
      37. End If
      38. Next
      39. Return 0.0 'Wenn nichts gefunden wurde, wird '0.0" zurückgegeben.
      40. End Function
      41. End Class


      Edit://Rückgabewerte auf Zahlen geändert



      Nächstes Kaptitel: Kapitel 2: HDD


      ch hoffe es war hilfreich für euch.
      Grüße,
      Luki-Progger
      Grüße,
      Lukas

      Fragen über Themen im Forum per Konversation werden gelöscht und die Absender blockiert...

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Luki-Progger“ ()

      Uhm... Du hast zwei mal die Selbe Methode angegeben:
      GetCoreClock & GetCoreTemp.
      Diese machen exact das Selbe.

      Ebenfalls finde ich es komisch, dass du Return "0 °C" zurückgibst. Ich finde, dass "Nicht gefunden!" wesentlich besser wäre.
      Mfg: Gather
      Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


      @Gather: FALSCH!
      GetCoreClock:

      VB.NET-Quellcode

      1. If Sensor.Index = Core + 1 Then 'Überprüfen, ob der aktuelle Index der gewünschte Kern ist, aber da auch noch der Bus-Speed exisiert, muss man hier Core + 1 überprüfen
      2. Return Math.Round(CDbl(Sensor.Value), 2) & " °C" 'Wenn alles passt (CPU, Temperatur-Sensor, Kern), wird der Wert zurückgegeben
      3. End If

      GetCoreTemp:

      VB.NET-Quellcode

      1. If Sensor.Index = Core Then 'Überprüfen, ob der aktuelle Index der gewünschte Kern ist
      2. Return Math.Round(CDbl(Sensor.Value), 2) & " °C" 'Wenn alles passt (CPU, Temperatur-Sensor, Kern), wird der Wert zurückgegeben
      3. End If


      Wenn du alles gelesen hättest, dann würde dir das Kommentar aufallen.

      Zu zweitens: Werde ich ändern
      Grüße,
      Lukas

      Fragen über Themen im Forum per Konversation werden gelöscht und die Absender blockiert...