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

来源:互联网 发布:网络博客报警有用吗 编辑:程序博客网 时间:2024/06/05 10:05

作者尝试过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);
        }
    }
}

原创粉丝点击