C#用openhardwaremonitor动态链接库获取CPU温度

1.到https://openhardwaremonitor.org/下载openhardwaremonito,这里下载的是v0.8.0-beta版,也可到https://download.csdn.net/download/jhycjhyc/11583104下载。

2.解压下载到的包,取出其中的OpenHardwareMonitorLib.dll文件。

3.启动visual studio 2017,建立一个新的控制器项目,如下图所示:

 

4.通过主菜单的“项目”->"添加引用“->”浏览“将OpenHardwareMonitorLib.dll文件引用到项目中。

5.在program.cs中增加”using OpenHardwareMonitor.Hardware;“和”using System.Threading;“两个语句。

6.在program.cs中增加两个类,代码如下:

 public class UpdateVisitor : IVisitor
    {
        public void VisitComputer(IComputer computer)
        {
            computer.Traverse(this);
        }

        public void VisitHardware(IHardware hardware)
        {
            hardware.Update();
            foreach (IHardware subHardware in hardware.SubHardware)
                subHardware.Accept(this);
        }

        public void VisitSensor(ISensor sensor) { }

        public void VisitParameter(IParameter parameter) { }
    }

 
   

 public class GetCPUTemp
    {

        public static int GetTemp()
        {
            //注意,必须以管理员身份运行方可。hhd只有已用空间一项,mainboard没有传感器。cpu温度
            UpdateVisitor updateVisitor = new UpdateVisitor();
            Computer computer = new Computer();
            computer.Open();
            computer.CPUEnabled = true;
            // computer.MainboardEnabled = true;
            // computer.HDDEnabled = true;
            computer.Accept(updateVisitor);

            int  temperature = 0;


            for (int i = 0; i < computer.Hardware.Length; i++)
            {
                //查找硬件类型为CPU
                if (computer.Hardware[i].HardwareType == HardwareType.CPU)
                {
                    for (int j = 0; j < computer.Hardware[i].Sensors.Length; j++)
                    {
                        string str = computer.Hardware[i].Sensors.ToString();
                        int k = 0;
                        if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature && computer.Hardware[i].Sensors[j].Name == "CPU Package")
                        {
                            temperature = Convert.ToInt32( computer.Hardware[i].Sensors[j].Value);
                        }
                    }
                }
            }
            return temperature;
        }
    }

7.在program类的main方法中添加代码,如下:

 static void Main(string[] args)
        {

            while (true)
            {
                Console.WriteLine(GetCPUTemp.GetTemp().ToString());
                Thread.Sleep(1000);
              
            }

        }

 

8.生成项目,以管理员身份运行生成的可执行文件,即可实时显示CPU的温度。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章