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; } } }