在C#中读取GPU温度

时间:2013-12-08 11:15:54

标签: c# gpu temp ati

我想创建一个程序来监控我的GPU温度(AMD ATI HD),如果它低于50C就给我发电子邮件。

我知道如何发送电子邮件 - 我根本不知道如何获得温度:/

任何帮助都会很棒!

运行Visual Studio - 适用于Windows窗体(或Java也适用!)

安迪

3 个答案:

答案 0 :(得分:4)

我建议您查看here上的OpenHardwareMonitor项目

  

Open Hardware Monitor是一款免费的开源软件,可监控计算机的温度传感器,风扇速度,电压,负载和时钟速度。

     

Open Hardware Monitor支持当今主板上的大多数硬件监控芯片。通过读取Intel和AMD处理器的核心温度传感器,可以监控CPU温度。可以显示ATI和Nvidia视频卡的传感器以及SMART硬盘驱动器温度。监视的值可以显示在主窗口,可自定义的桌面小工具或系统托盘中。 Open Hardware Monitor软件可在32位和64位Microsoft Windows XP / Vista / 7以及任何基于x86的Linux操作系统上运行,无需安装。

它们是开源的,您应该能够查看他们的代码并查看。

答案 1 :(得分:3)

查看AMD显示库中的Overdrive API。他们有一个C#示例,但您必须自己将钩子添加到温度库中。

AMD Display Library

具体来说:ADL2_Overdrive6_Temperature_Get (ADL_CONTEXT_HANDLE context, int iAdapterIndex, int *lpTemperature)

答案 2 :(得分:0)

对于 NVIDIA 用户...

我尝试了 Open Hardware Monitor,它工作正常,但有时它会在拉 GPU 温度时导致 CPU 使用率高的状态(如果我只拉 CPU 温度,这个问题就会消失)。

我最终使用这个 NuGet 包直接从 NVAPI 中提取温度。

https://github.com/falahati/NvAPIWrapper

一些示例代码看起来像...

PhysicalGPU[] gpus = PhysicalGPU.GetPhysicalGPUs();
foreach (PhysicalGPU gpu in gpus)
{
    Console.WriteLine(gpu.FullName);
    foreach (GPUThermalSensor sensor in gpu.ThermalInformation.ThermalSensors)
    {
        Console.WriteLine(sensor.CurrentTemperature);
    }
}