C# 如何使用OpenHardwareMonitor获得GPU或CPU的风扇速度?
代码如下:C# 如何使用OpenHardwareMonitor获得GPU或CPU的风扇速度?,c#,winforms,openhardwaremonitor,C#,Winforms,Openhardwaremonitor,代码如下: public float? cpuView(bool pause , CpuTemperature cpuTemp , Form1 f1 , List<string> myData , float? myCpuTemp , Button b1, decimal numeric) { try { if (pause == true) { } else {
public float? cpuView(bool pause , CpuTemperature cpuTemp , Form1 f1 , List<string> myData , float? myCpuTemp , Button b1, decimal numeric)
{
try
{
if (pause == true)
{
}
else
{
Trace.WriteLine("");
foreach (var hardwareItem in myComputer.Hardware)
{
if (hardwareItem.HardwareType == HardwareType.CPU)
{
hardwareItem.Update();
foreach (IHardware subHardware in hardwareItem.SubHardware)
subHardware.Update();
foreach (var sensor in hardwareItem.Sensors)
{
cpuTemp.SetValue("sensor", sensor.Value.ToString());
if (sensor.SensorType == SensorType.Fan)
{
MessageBox.Show("test");
sensor.Hardware.Update();
cpuTemp.GetValue("sensor", sensor.Value.ToString());
if (!f1.IsDisposed)//f1.IsHandleCreated && !f1.IsDisposed)
{
Thread.Sleep(1000);
f1.Invoke(new Action(() => myData.Add("Cpu Temeprature --- " + sensor.Value.ToString())));
}
myCpuTemp = sensor.Value;
//if (sensor.Value > 60)
//{
CpulabelTemp = sensor.Value;
cpuSensorValues.Add(sensor.Value);
if (cpuSensorValues.Count == 300 && sensor.Value >= (float)numeric)
{
float a = ComputeStats(cpuSensorValues).Item1;
float b = ComputeStats(cpuSensorValues).Item2;
float c = ComputeStats(cpuSensorValues).Item3;
Logger.Write("********************************");
Logger.Write("CPU Minimum Temperature Is ===> " + a);
Logger.Write("CPU Maximum Temperature Is ===> " + b);
Logger.Write("CPU Average Temperature Is ===> " + c);
Logger.Write("********************************" + Environment.NewLine);
cpuSensorValues = new List<float?>();
}
b1.Enabled = true;
//}
break;
}
}
}
}
}
}
catch(Exception err)
{
Logger.Write("There was an exception: " + err.ToString());
}
return myCpuTemp;
}
取而代之的是温度。
当温度升高时,它工作正常。
但一旦我把它改为风扇,以获得CPU/GPU风扇的速度,它就无法进入,它会跳过这个,如果继续
它永远不会到达消息框。显示行
有什么问题吗?试图用谷歌搜索,但到目前为止什么都没有。你的问题是有条件的
if (hardwareItem.HardwareType == HardwareType.CPU)
风扇不在CPU上。您需要使用风扇显示的相应硬件类型,可能是
HardwareType.Mainboard
可能您没有这样的传感器,或者属性具有不同的值。如果表达式的计算结果不为true,If将跳过If
。你可以用一个调试器来解决这个问题。Cody是一个常规的原始OpenHardwareMonitor程序,如果我运行它,它会显示所有的粉丝。所以我有传感器,我只是想我不知道如何正确使用它。
if (hardwareItem.HardwareType == HardwareType.CPU)