首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPU温度监控

CPU温度监控
EN

Stack Overflow用户
提问于 2010-05-28 02:52:11
回答 3查看 39.8K关注 0票数 22

对于编程项目,我想访问来自CPU和GPU的温度读数。我将使用C#。从不同的论坛中,我得到的印象是,您需要特定的信息和开发人员资源,以便访问各种板的信息。我有一块MSI NF750-G55板。MSI的网站上没有我正在寻找的任何信息。我试过他们的技术支持,与我交谈的代表说他们没有任何这样的信息。一定有办法获取这些信息。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-28 03:06:30

至少在CPU方面,您可以使用WMI。

名称空间\对象为root\WMI, MSAcpi_ThermalZoneTemperature

示例代码:

代码语言:javascript
复制
ManagementObjectSearcher searcher = 
    new ManagementObjectSearcher("root\\WMI",
                                 "SELECT * FROM MSAcpi_ThermalZoneTemperature");

ManagementObjectCollection collection = 
    searcher.Get();

foreach(ManagementBaseObject tempObject in collection)
{
    Console.WriteLine(tempObject["CurrentTemperature"].ToString());
}

这将为您提供原始格式的温度。您必须从那里进行转换:

代码语言:javascript
复制
kelvin = raw / 10;

celsius = (raw / 10) - 273.15;

fahrenheit = ((raw / 10) - 273.15) * 9 / 5 + 32;
票数 20
EN

Stack Overflow用户

发布于 2016-08-05 16:14:49

在windows上进行硬件相关编码的最好方法是使用微软的Code Creator工具WMI,该工具将根据您在硬件相关数据中寻找的内容和您要使用的.Net语言为您创建代码。

目前支持的语言有: C#、Visual Basic、VB Script。

票数 2
EN

Stack Overflow用户

发布于 2018-08-08 15:02:45

请注意,MSAcpi_ThermalZoneTemperature不会给出中央处理器的温度,而是给出主板的温度。此外,请注意,大多数主板不通过WMI实现此功能。

您可以尝试一下Open Hardware Monitor,尽管它缺乏对最新处理器的支持。

代码语言:javascript
复制
internal sealed class CpuTemperatureReader : IDisposable
{
    private readonly Computer _computer;

    public CpuTemperatureReader()
    {
        _computer = new Computer { CPUEnabled = true };
        _computer.Open();
    }

    public IReadOnlyDictionary<string, float> GetTemperaturesInCelsius()
    {
        var coreAndTemperature = new Dictionary<string, float>();

        foreach (var hardware in _computer.Hardware)
        {
            hardware.Update(); //use hardware.Name to get CPU model
            foreach (var sensor in hardware.Sensors)
            {
                if (sensor.SensorType == SensorType.Temperature && sensor.Value.HasValue)
                    coreAndTemperature.Add(sensor.Name, sensor.Value.Value);
            }
        }

        return coreAndTemperature;
    }

    public void Dispose()
    {
        try
        {
            _computer.Close();
        }
        catch (Exception)
        {
            //ignore closing errors
        }
    }
}

official source下载压缩包,解压并在项目中添加对OpenHardwareMonitorLib.dll的引用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2923984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档