【发布时间】:2013-03-12 12:40:20
【问题描述】:
这是我在 Form1 构造函数中调用方法的代码:
private void cpuFanSpeed()
{
SelectQuery query =
new SelectQuery("Win32_Fan");
// Instantiate an object searcher
// with this query
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(query);
// Call Get() to retrieve the collection
// of objects and loop through it
foreach (ManagementObject envVar in searcher.Get())
MessageBox.Show(envVar["DesiredSpeed"].ToString());
}
但它永远不会到达 MessageBox。 这里有什么问题?我试图通过这里的文档阅读和执行:http://msdn.microsoft.com/en-us/library/aa394146(v=vs.85).aspx
在这里:http://msdn.microsoft.com/en-us/library/ms257359.aspx
但它不起作用。
我想在标签上显示我的 CPU 风扇每秒的速度。
这是 OpenHardwareMonitor 显示我的 cpu 风扇速度的屏幕截图:
这是我在我的应用程序中使用的函数获取 CPU 温度的代码:
在课堂上:
public static float? cpuView(bool pause , CpuTemperature cpuTemp , Form1 f1 , List<string> myData , float? myCpuTemp , Button b1)
{
if (pause == true)
{
}
else
{
Computer myComputer = new Computer();
myComputer = new Computer(cpuTemp)
{
CPUEnabled =
true
};
myComputer.Open();
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.Temperature)
{
sensor.Hardware.Update();
cpuTemp.GetValue("sensor", sensor.Value.ToString());
f1.Invoke(new Action(() => myData.Add("Cpu Temeprature --- " + sensor.Value.ToString())));
myCpuTemp = sensor.Value;
if (sensor.Value > 60)
{
Logger.Write("The Current CPU Temperature Is ===> " + sensor.Value);
b1.Enabled = true;
}
break;
}
}
}
}
}
return myCpuTemp;
}
【问题讨论】:
-
您是否遇到任何具体错误?
-
Arshad 不,我只是不知道如何通过打开硬件监视器来获得 cpu 风扇速度