2025-03-28 09:49:56 +08:00

74 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenHardwareMonitor.Hardware;
using System.Management;
namespace CPUTemperature
{
public class UpdateVisitor : IVisitor
{
public void VisitComputer(IComputer computer)
{
computer.Traverse(this);
}
public void VisitHardware(IHardware hardware)
{
hardware.Update();
foreach (IHardware subHardware in hardware.SubHardware)
subHardware.Accept(this);
}
public void VisitSensor(ISensor sensor) { }
public void VisitParameter(IParameter parameter) { }
}
public class CHardwareMonitor
{
public static Double GetCPUTemperature()
{
Double CPUtprt = 0;
string tem =null;
try
{
ManagementObjectSearcher mos = new ManagementObjectSearcher(@"root\WMI",
"Select * From MSAcpi_ThermalZoneTemperature");
foreach (System.Management.ManagementObject mo in mos.Get())
{
CPUtprt = Convert.ToDouble(Convert.ToDouble(mo.GetPropertyValue("CurrentTemperature").ToString()) - 2732) / 10;
}
//UpdateVisitor updateVisitor = new UpdateVisitor();
//Computer computer = new Computer();
//computer.Open();
//StringBuilder str = new StringBuilder();
//computer.Accept(updateVisitor);
//for (int i = 0; i < computer.Hardware.Length; i++)
//{
// if (computer.Hardware[i].HardwareType == HardwareType.CPU)
// {
// for (int j = 0; j < computer.Hardware[i].Sensors.Length; j++)
// {
// if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature)
// {
// //这里就是cpu温度了
// CPUtprt = Convert.ToDouble(computer.Hardware[i].Sensors[j].Value.ToString());
// }
// }
// }
//}
}
catch { }
return CPUtprt;
}
}
}