读取C#中的GPU温度



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

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

任何帮助都会很棒!

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

Andy

我建议你看看这里的OpenHardwareMonitor项目

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

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

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

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

AMD显示库

具体而言:ADL2_Overdrive6_Temperature_Get (ADL_CONTEXT_HANDLE context, int iAdapterIndex, int *lpTemperature)

对于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);
    }
}

最新更新