2015-08-02 3 views
0

Мне нужен температурный датчик процессора в моей программе VB.NET, я хочу использовать OpenHardwareMonitorLib.dll для принятия значений температуры процессора.Как я могу видеть температуру процессора с помощью VB.NET с Open Hardware Monitor DLL

загрузить DLL здесь: http://openhardwaremonitor.org/downloads/

У меня есть только этот код:

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 

Но с этим я получаю только имя моего Hardware мне нужно температура процессора.

Я пробовал WMI использовать в VB.NET, но я получаю сообщение Not Supported.

ответ

0

Это позволило мне вернуть температуру всех моих датчиков температуры. Обязательно запустите экземпляр Visual Studio с правами администратора. Возможно, это не сработает. OpenHardwareMonitor DLL также должен быть на локальном диске, чтобы это работало.

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

Спасибо, я также нашел этот код и отлично работает!

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

Я только что получил эту работу в VS2015 так понял, я хотел бы поделиться ...

1 - Скачать openhardware монитор, экстракт и поместить файл .dll в папку Bin \ Debug для вашего проекта

2 Убедитесь, что вы начинаете VS как администратор

3- Импорт OpenHardwareMonitor и OpenHardwarMonitor.Hardware Globals

4 уровня Класс {Public CPUTemp, как Double, Public сП As New Computer()}

Затем я использовал следующий код в фоновом режиме работника, который я подредактированны сверху:

'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

Проверка Это в режиме реального времени Информационная система температуры.

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 

Проверить скриншот и приложить исходный код. Working Screenshot.

Source Code