1

我的 VB.NET 程序中需要 CPU 的温度传感器,我想使用 OpenHardwareMonitorLib.dll 来获取 CPU 温度的值。

我从这里下载 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

但是有了这个我只得到我的硬件的名称我需要 CPU 温度。

我尝试在 VB.NET 中使用 WMI,但收到不支持的消息。

4

4 回答 4

2

这让我恢复了所有 CPU 传感器的温度。确保以管理员权限运行 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()
于 2015-08-02T18:01:42.683 回答
2

我刚刚在 VS2015 中得到了这个工作,所以我想我会分享......

1 - 下载 openhardware monitor,解压 .dll 并将其放入项目的 Bin\debug 文件夹中

2-确保您以管理员身份启动VS

3- 导入 OpenHardwareMonitor 和 OpenHardwarMonitor.Hardware

4- 类级别全局变量 {Public CPUTemp as Double,Public cp 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

温度以摄氏度显示,如我的小部件所示

于 2016-05-19T23:02:19.677 回答
1

谢谢,我也找到了这段代码并且可以正常工作!

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
于 2015-08-02T18:19:29.627 回答
1

检查这个实时温度信息系统。

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

检查屏幕截图并附加源代码。 工作截图。

源代码

于 2017-12-27T13:51:47.743 回答