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的溫度。

 

 

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