2015-08-02 6 views
0

J'ai besoin de capteur de température de CPU dans mon programme VB.NET, je veux utiliser OpenHardwareMonitorLib.dll pour prendre des valeurs de température CPU.Comment puis-je voir la température du CPU en utilisant VB.NET avec Open Hardware Monitor DLL

Je télécharger dll ici: http://openhardwaremonitor.org/downloads/

je ne dispose que ce code:

Imports OpenHardwareMonitor 
Imports OpenHardwareMonitor.Hardware 

Public Class Form1 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    End Sub 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim cp As New Computer() 
     cp.Open() 
     cp.HDDEnabled = True 
     cp.FanControllerEnabled = True 
     cp.RAMEnabled = True 
     cp.GPUEnabled = True 
     cp.MainboardEnabled = True 
     cp.CPUEnabled = True 

     Dim Info As String = "" 
     For i As Integer = 0 To cp.Hardware.Count() - 1 


      If cp.Hardware(i).HardwareType = HardwareType.Mainboard Then 
       Info += " Motherboard: " & Trim(cp.Hardware(i).Name) & vbCrLf 
      End If 
      If cp.Hardware(i).HardwareType = HardwareType.CPU Then 
       Info += " Processor: " & Trim(cp.Hardware(i).Name) & vbCrLf 
      End If 
      If cp.Hardware(i).HardwareType = HardwareType.GpuNvidia Then 
       Info += " Video Card: " & Trim(cp.Hardware(i).Name) & vbCrLf 
      End If 
      If cp.Hardware(i).HardwareType = HardwareType.RAM Then 
       Info += " RAM: " & Trim(cp.Hardware(i).Name) & vbCrLf 
      End If 
      If cp.Hardware(i).HardwareType = HardwareType.HDD Then 
       Info += " HDD: " & Trim(cp.Hardware(i).Name) & vbCrLf 
      End If 
      If cp.Hardware(i).HardwareType = HardwareType.SuperIO Then 
       Info += " SuperIO: " & Trim(cp.Hardware(i).Name) & vbCrLf 
      End If 
     Next 
     TextBox1.Text = Info 

    End Sub 

End Class 

Mais avec ce que j'obtenir seulement le nom de mon matériel j'ai besoin Température CPU.

J'ai essayé WMI à utiliser dans VB.NET mais je reçois le message Non pris en charge.

Répondre

0

Cela m'a donné les températures de tous mes capteurs cpu. Assurez-vous d'exécuter l'instance Visual Studio avec des droits d'administrateur. Cela pourrait ne pas fonctionner autrement. La DLL OpenHardwareMonitor devait également être sur le disque local pour que cela fonctionne.

Dim computer As New Computer() 
    computer.Open() 
    computer.CPUEnabled = True 

    Dim cpu = computer.Hardware.Where(Function(h) h.HardwareType = HardwareType.CPU).FirstOrDefault() 

    If cpu IsNot Nothing Then 
     cpu.Update() 

     Dim tempSensors = cpu.Sensors.Where(Function(s) s.SensorType = SensorType.Temperature) 
     tempSensors.ToList.ForEach(Sub(s) Console.WriteLine(s.Value)) 
    End If 

    Console.ReadLine() 
0

Merci, j'ai aussi trouvé ce code et fonctionne parfaitement!

Imports OpenHardwareMonitor 
Imports OpenHardwareMonitor.Hardware 

Public Class Form1 

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
     Dim cp As New Computer() 
     cp.Open() 
     cp.HDDEnabled = True 
     cp.FanControllerEnabled = True 
     cp.RAMEnabled = True 
     cp.GPUEnabled = True 
     cp.MainboardEnabled = True 
     cp.CPUEnabled = True 

     Dim Info As String = "" 

     For i As Integer = 0 To cp.Hardware.Count() - 1 
      Dim hw = cp.Hardware(i) 

      Select Case hw.HardwareType 
       Case HardwareType.Mainboard 
        TextBox3.AppendText("Motherboard" & vbCrLf) 
        For k = 0 To hw.SubHardware.Count - 1 
         Dim subhardware = hw.SubHardware(k) 
         TextBox3.AppendText(subhardware.Name & vbCrLf) 
         For j = 0 To subhardware.Sensors.Count - 1 
          Dim sensor = subhardware.Sensors(j) 
          TextBox3.AppendText(sensor.SensorType & " - " & sensor.Name & " - " & sensor.Value & vbCrLf) 
         Next 
        Next 
       Case HardwareType.CPU 
        TextBox3.AppendText("CPU" & vbCrLf) 
        For j = 0 To hw.Sensors.Count - 1 
         Dim sensor = hw.Sensors(j) 
         TextBox3.AppendText(sensor.SensorType & " - " & sensor.Name & " - " & sensor.Value & vbCrLf) 
        Next 
       Case HardwareType.RAM 
        TextBox3.AppendText("RAM" & vbCrLf) 
        For j = 0 To hw.Sensors.Count - 1 
         Dim sensor = hw.Sensors(j) 
         TextBox3.AppendText(sensor.SensorType & " - " & sensor.Name & " - " & sensor.Value & vbCrLf) 
        Next 
      End Select 
     Next 
    End Sub 

End Class 
1

Je viens de recevoir ce travail dans VS2015 donc pensé que je partagerais ...

1 - Télécharger moniteur openhardware, extrait et mettre le .dll dans votre dossier de débogage Bin \ pour votre projet

2- Assurez-vous de commencer à VS en tant qu'administrateur

3- importation OpenHardwareMonitor et OpenHardwarMonitor.Hardware

4- classe Niveau Globals {CPUTemp public comme Double, cp public comme nouvel ordinateur()}

J'ai ensuite utilisé le code suivant dans un travailleur de fond que je peaufiné en haut:

'GET CPU TEMPERATURE 
     Dim cpu = cp.Hardware.Where(Function(h) h.HardwareType = HardwareType.CPU).FirstOrDefault() 
     cpu.Update() 
     For i As Integer = 0 To cp.Hardware.Count() - 1 
      Dim hw = cp.Hardware(i) 
      Select Case hw.HardwareType 
       Case HardwareType.CPU 

        Dim sensor = hw.Sensors(5) 'AVERAGE CPU TEMPERATURE 
        CPUTemp = sensor.Value 

      End Select 
     Next 

The temperature displays in Celsius as shown in my little widget

0

Vérifier Ce temps réel Système d'information de température.

Imports System 
Imports System.Management 
Imports OpenHardwareMonitor 
Imports OpenHardwareMonitor.Hardware 

Public Class Form1 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Timer1.Enabled = True 
End Sub 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

End Sub 

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    Dim computer As New Computer() 
    computer.Open() 
    computer.CPUEnabled = True 

    Dim cpu = computer.Hardware.Where(Function(h) h.HardwareType = HardwareType.CPU).FirstOrDefault() 

    If cpu IsNot Nothing Then 
     cpu.Update() 

     Dim tempSensors = cpu.Sensors.Where(Function(s) s.SensorType = SensorType.Temperature) 

     Label1.Text = tempSensors.ToList.Item(0).Value 
     Label2.Text = tempSensors.ToList.Item(1).Value 
     MetroProgressSpinner1.Value = Label1.Text 
     MetroProgressSpinner2.Value = Label2.Text 
    End If 
End Sub 

End Class 

Cochez la capture d'écran et joignez le code source. Working Screenshot.

Source Code