C#获取CPU温度(OpenHardwareMonitorLib.dll库)
作者尝试过WinIo,Rdmsr,WMI,OpenHardwareMonitorLib。OpenHardwareMonitorLib和rdmsr都是用的WinRing0.sys驱动,然后要在程序里面加载这个驱动就可读取这些寄存器的值。OpenHardwareMonitorLib把驱动封装到自己的内部来了,这里讲的是OpenHardwareMonitorLib的方法,很简单:
OpenHardwareMonitorLib.dll下载地址:https://download.csdn.net/download/u014597198/11106339
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);}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
