CPU Temperatur auslesen

    • VB.NET

      CPU Temperatur auslesen

      Da die Anfrage in letzter Zeit groß ist, wie man denn nun die CPU Temperatur ausliest, mache ich nun diesen Thread auf.

      Also ein Verweis auf System.Management und folgenden Code:

      VB.NET-Quellcode

      1. Imports System.Management
      2. Public Class Form1
      3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      4. Try
      5. Dim TempSearcher As New Management.ManagementObjectSearcher( _
      6. "root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature")
      7. For Each TempSensor As Management.ManagementObject In TempSearcher.Get()
      8. Dim Temperature As Double = CDbl(TempSensor("CurrentTemperature"))
      9. Temperature = (Temperature - 2732) / 10.0
      10. MessageBox.Show(Temperature.ToString & "° C")
      11. Next
      12. Catch err As Management.ManagementException
      13. MessageBox.Show("Fehler: " & err.Message)
      14. End Try
      15. End Sub
      16. End Class
      Problem ist hierbei dass das Mainboard das auch unterstützen muss, weil sonst sieht man nur die Meldung:

      Fehler: Nicht Kompatibel

      Aber leider bietet hier VB keine andere Möglichkeit...
      WMI Probleme? -> [VB 2008] Ganz einfach informationen aus der WMI Auslesen
      Private Boxer As Short
      Private Tanga As String
      Private Penis As Long
      Private Breasts, Eggs As Double

      ich würde es so machen, sonst kommt die MsgBox 2mal:

      VB.NET-Quellcode

      1. Try
      2. Dim TempSearcher As New Management.ManagementObjectSearcher("root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature")
      3. Dim Temperature As Double
      4. For Each TempSensor As Management.ManagementObject In TempSearcher.Get()
      5. Temperature = (TempSensor("CurrentTemperature") - 2732) / 10.0
      6. Next
      7. MsgBox(Temperature & "° C")
      8. Catch err As Management.ManagementException
      9. MsgBox("Fehler: " & err.Message)
      10. End Try


      oder als Function mit einem Timer und einem Label:

      VB.NET-Quellcode

      1. Public Function Temperature() As Double
      2. Try
      3. Dim TempSearcher As New Management.ManagementObjectSearcher("root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature")
      4. For Each TempSensor As Management.ManagementObject In TempSearcher.Get()
      5. Temperature = (TempSensor("CurrentTemperature") - 2732) / 10.0
      6. Next
      7. Return Temperature
      8. Catch err As Management.ManagementException
      9. MsgBox("Fehler: " & err.Message)
      10. End Try
      11. End Function
      12. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
      13. Label1.Text = Temperature() & "° C"
      14. End Sub


      Ciao...

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Adam“ ()

      es geht schon, nur wie im ersten beitrag geschrieben, ist dein motherboard nicht ünterstützt. ich schau schnell, ob meins unterstützt...
      RemoteSteuerung 3.0: 51%
      Status: Hintergrundvorgänge

      deLaKing schrieb:

      Fehler: Zugriff verweigert

      Kann man den Zugriff erlauben?

      MfG

      geh in den Debug Ordner und für es als Admin aus :)

      btw fände sowas auch ganz nett weiß nicht was die obere grenze ist was ein motherboar aushält hab jetzt einfach mal iwas geschrieben :D

      VB.NET-Quellcode

      1. Imports System.Management
      2. Public Class Form1
      3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      4. Try
      5. Dim TempSearcher As New Management.ManagementObjectSearcher( _
      6. "root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature")
      7. For Each TempSensor As Management.ManagementObject In TempSearcher.Get()
      8. Dim Temperature As Double = CDbl(TempSensor("CurrentTemperature"))
      9. Temperature = (Temperature - 2732) / 10.0
      10. Label1.Text = (Temperature.ToString & "° C")
      11. Next
      12. Catch err As Management.ManagementException
      13. MessageBox.Show("Fehler: " & err.Message)
      14. MessageBox.Show("Als Admin ausführen... bittö")
      15. End Try
      16. End Sub
      17. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      18. Application.Exit()
      19. End Sub
      20. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
      21. Try
      22. Dim TempSearcher As New Management.ManagementObjectSearcher( _
      23. "root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature")
      24. For Each TempSensor As Management.ManagementObject In TempSearcher.Get()
      25. Dim Temperature As Double = CDbl(TempSensor("CurrentTemperature"))
      26. Temperature = (Temperature - 2732) / 10.0
      27. Label1.Text = (Temperature.ToString & "° C")
      28. If Temperature <= 20 Then
      29. Me.BackColor = Color.Yellow
      30. ElseIf Temperature <= 30 Then
      31. Me.BackColor = Color.Orange
      32. ElseIf Temperature <= 40 Then
      33. Me.BackColor = Color.DarkOrange
      34. ElseIf Temperature <= 50 Then
      35. Me.BackColor = Color.Blue
      36. ElseIf Temperature <= 65 Then
      37. Me.BackColor = Color.Green
      38. ElseIf Temperature <= 80 Then
      39. Me.BackColor = Color.DarkGreen
      40. ElseIf Temperature <= 100 Then
      41. Me.BackColor = Color.DarkGray
      42. ElseIf Temperature <= 120 Then
      43. Me.BackColor = Color.Black
      44. ElseIf Temperature <= 140 Then
      45. Me.BackColor = Color.Red
      46. ElseIf Temperature > 140 Then
      47. Me.BackColor = Color.DarkRed
      48. MsgBox("GEFÄHRLICHER BEREICH DER MOTHERTEMP. !!!")
      49. MsgBox("FAHREN SIE DEN COMPUTER UMGEHEND HERUNTER !!!")
      50. End If
      51. Next
      52. Catch err As Management.ManagementException
      53. MessageBox.Show("Fehler: " & err.Message)
      54. MessageBox.Show("Als Admin ausführen... bittö")
      55. End Try
      56. End Sub
      57. End Class

      Meine opensource Audio-lib auf codeplex: KLICK, im Showroom oder auf NuGet.