Pour un projet de programmation, j'aimerais accéder aux lectures de température de mon CPU et de mes GPU. Je vais utiliser C #. Sur différents forums, j'ai l'impression qu'il existe des informations spécifiques et des ressources de développement dont vous avez besoin pour accéder à ces informations pour différents conseils. J'ai un tableau MSI NF750-G55. Le site Web de MSI ne contient aucune des informations que je recherche. J'ai essayé leur support technique et le représentant avec qui j'ai parlé a déclaré ne pas avoir cette information. Il doit y avoir un moyen d'obtenir cette information.
Des pensées?
Pour au moins le côté CPU, vous pouvez utiliser WMI.
L'espace de nom\object est root\WMI, MSAcpi_ThermalZoneTemperature
Exemple de code:
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM MSAcpi_ThermalZoneTemperature");
ManagementObjectCollection collection =
searcher.Get();
foreach(ManagementBaseObject tempObject in collection)
{
Console.WriteLine(tempObject["CurrentTemperature"].ToString());
}
Cela vous donnera la température dans un format brut. Vous devez convertir à partir de là:
kelvin = raw / 10;
celsius = (raw / 10) - 273.15;
Fahrenheit = ((raw / 10) - 273.15) * 9 / 5 + 32;
En fait, le meilleur moyen de coder du matériel en utilisant WMI est plus efficace en utilisant cet outil WMI Code Creator de Microsoft l’outil créera le code pour vous en fonction de ce que vous recherchez et quel langage .Net vous voulez utiliser.
Les langues prises en charge sont actuellement: C #, Visual Basic, VB Script.
Notez que MSAcpi_ThermalZoneTemperature
ne vous donne pas la température de la CPU, mais plutôt la température de la carte mère. Notez également que la plupart des cartes mères ne l'implémentent pas via WMI.
Vous pouvez essayer Open Hardware Monitor, bien que les derniers processeurs ne soient pas pris en charge.
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
}
}
}
Téléchargez le fichier Zip à partir de source officielle , extrayez-le et ajoutez une référence à OpenHardwareMonitorLib.dll dans votre projet.