本文概述
- 1.添加对System.Management类的引用
- 2.检索CPU温度和实例名称
在本文中, 我们将与你分享一种非常简单的方法, 该方法通过Windows的WMI类使用C#检索CPU的当前温度。
1.添加对System.Management类的引用 为了获得有关WinForms中带有C#的主板的信息, 你将需要访问System Management类:
using System.Management;
但是, 在某些Visual Studio版本中(特别是在2010年和更高版本中), 你需要在项目中手动添加引用(.DLL)。为此, 请按照下列步骤操作:
- 右键单击项目, 添加引用
- 选择”
程序集(框架)”
选项卡, 然后搜索System.Management, 最后添加引用, 然后单击”
确定”
。
文章图片
我们需要添加System.Management来在WMI类中创建查询。在此处阅读有关在msdn中检索.NET中的WMI类的更多信息。
另一方面, 请记住, 所有使用ManagementObjectSearcher类来获取系统信息的实现, 其属性值为整数值(0-100), 并且这些值与属性名称无关(例如, 使用Video_Controller GPU类)返回0到9之间的值的Architecture属性), 并且你期望一个非常特定的值(例如x86或x64), 则可能是你传递了一些信息!请阅读Microsoft开发人员网络网站上的类的文档(分别在文章的每个部分中提供), 以获取每个属性的详细说明。
2.检索CPU温度和实例名称 【如何在WinForms中使用C#检索CPU的温度】现在, 你可以访问” 系统管理” 类, 你将可以使用以下代码查询所提到的类以获得CPU的温度:
注意 你可能会遇到从内核获得特权访问的问题, 因此请确保以管理员身份运行你的应用程序或Visual Studio(如果正在尝试)。
// Important: don't forget to include the System Management class in your codeusing System.Management;
// Create tmp variables to store values during the queryDouble temperature = 0;
String instanceName = "";
// Query the MSAcpi_ThermalZoneTemperature API// Note: run your app or Visual Studio (while programming) or you will get "Access Denied"ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature");
foreach (ManagementObject obj in searcher.Get()){temperature = Convert.ToDouble(obj["CurrentTemperature"].ToString());
// Convert the value to celsius degreestemperature = (temperature - 2732) / 10.0;
instanceName = obj["InstanceName"].ToString();
}// Print the values e.g:// 29.8Console.WriteLine(temperature);
// ACPI\ThermalZone\TZ01_0Console.WriteLine(instanceName);
编码愉快!
推荐阅读
- 如何在Symfony 3中使用php创建Word文件
- 如何从控制器执行symfony命令
- 如何在WinForms中使用C#检索主板信息
- 在Android上将Canvas移植到OpenGL
- 如何在Android上将OpenGL ES 1.0代码转换为OpenGL Es 2.0()
- 如何在android上定义glsl的“time”参数
- 使用OpenGL ES 2.0在Android上创建Audio wave
- PixelBuffer对象和Android上的glReadPixel(ARCore)阻塞
- 如何在Android上的GvrView中显示2D图像()