您的位置:首页 > 编程语言 > C#

C#获取CPU温度(OpenHardwareMonitorLib.dll库)

2017-07-25 16:28 2266 查看
作者尝试过WinIo,Rdmsr,WMI,OpenHardwareMonitorLib。OpenHardwareMonitorLib和rdmsr都是用的WinRing0.sys驱动,然后要在程序里面加载这个驱动就可读取这些寄存器的值。OpenHardwareMonitorLib把驱动封装到自己的内部来了,这里讲的是OpenHardwareMonitorLib的方法,很简单:

1、下载OpenHardwareMonitorLib库,并引用到项目中



2、读取温度,这里只读取了一次,如果需要你可以用定时器轮询:

using System;

using OpenHardwareMonitor.Hardware;

using System.Text;

namespace VS_ReadCPUTemperature

{

    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) { }

    }

    class Program

    {

        static int getTemperature() 

        {

            int ret = 0;

            Computer myComputer = new Computer();

            UpdateVisitor updateVisitor = new UpdateVisitor();

            myComputer.Open();

            myComputer.Accept(updateVisitor);

            foreach (var hardwareItem in myComputer.Hardware)

            {

                if (hardwareItem.HardwareType == HardwareType.CPU)

                {

                    foreach (var sensor in hardwareItem.Sensors)

                    {

                        if (sensor.SensorType == SensorType.Temperature)

                        {

                            ret = Convert.ToInt32(sensor.Value);

                        }

                    }

                }

            }

            return ret;

        } 

        static void Main(string[] args)

        {

            int t = getTemperature();

            Console.WriteLine("温度是:" + t);

            Console.ReadKey();

            //如果文件不存在,则创建;存在则覆盖

            //System.IO.File.WriteAllText(@"C:\Users\Public\Documents\CPUTemperature.txt", t.ToString(), Encoding.UTF8);

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: