22

对于一个编程项目,我想从我的 CPU 和 GPU 访问温度读数。我将使用 C#。从各种论坛中,我得到的印象是,您需要特定的信息和开发人员资源才能访问各种板的信息。我有一个 MSI NF750-G55 板。MSI 的网站没有我要查找的任何信息。我尝试了他们的技术支持,我与之交谈的代表表示他们没有任何此类信息。必须有一种方法来获取该信息。

有什么想法吗?

4

3 回答 3

20

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

命名空间\对象是root\WMI, MSAcpi_ThermalZoneTemperature

示例代码:

ManagementObjectSearcher searcher = 
    new ManagementObjectSearcher("root\\WMI",
                                 "SELECT * FROM MSAcpi_ThermalZoneTemperature");

ManagementObjectCollection collection = 
    searcher.Get();

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

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

kelvin = raw / 10;

celsius = (raw / 10) - 273.15;

fahrenheit = ((raw / 10) - 273.15) * 9 / 5 + 32;
于 2010-05-27T19:06:30.190 回答
2

在 Windows 上进行硬件相关编码的最佳方法是使用Microsoft的工具WMICode Creator,该工具将根据您在硬件相关数据中查找的内容以及您想要使用的 .Net 语言为您创建代码.

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

于 2016-08-05T08:14:48.947 回答
0

请注意,MSAcpi_ThermalZoneTemperature这不是给你 CPU 的温度,而是给你主板的温度。另外,请注意大多数主板不通过 WMI 实现这一点。

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

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
        }
    }
}

官方源下载 zip ,解压缩并在您的项目中添加对 OpenHardwareMonitorLib.dll 的引用。

于 2018-08-08T07:02:44.993 回答