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);
}
}
}
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);
}
}
}
相关文章推荐
- C# 获取CPU 温度 的两种方式
- 【已解决】C#获取CPU温度支持Win10(OpenHardwareMonitor)
- 转载:c# 获取CPU温度(非WMI,直接读取硬件)
- c# 获取CPU温度(非WMI,直接读取硬件)
- 【已解决】C#获取CPU温度支持Win10(OpenHardwareMonitor)
- C# 获取CPU温度
- c# WMI获取机器硬件信息(硬盘,cpu,内存等)
- c#获取Solaris系统的cpu频率和 利用率
- C#获取电脑硬盘,网卡,CPU的序列号
- Python在Linux下获取CPU温度、使用率、内存使用率、硬盘使用率
- C#获取硬盘编号、CPU编号及类型、内存大小及使用情况
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存
- C#获取电脑的唯一标示UUID 非CPU型号 mac
- C#获取硬盘编号、CPU编号及类型、内存大小及使用情况
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- Android获取手机Cpu温度
- C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)
- C# 获取硬件信息 CPU、MAC等
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- 使用C#获取CPU及硬盘序列号的源代码