ver temperatura saber programas online normal medir medidor laptop cual como c# .net wmi

c# - saber - temperatura pc online



¿Cómo obtener la temperatura de la CPU? (7)

Para otros que puedan venir aquí, tal vez eche un vistazo a: http://openhardwaremonitor.org/

Sigue ese enlace y al principio podrías pensar: "hey, esa es una aplicación, por eso fue eliminada, la pregunta era cómo hacer esto desde el código C #, no para encontrar una aplicación que pueda decirme la temperatura ...". es donde muestra que no está dispuesto a invertir el tiempo suficiente para leer lo que también es "Open Hardware Monitor".

También incluyen una interfaz de datos, aquí está la descripción:

Interfaz de datos El Open Hardware Monitor publica todos los datos del sensor en WMI (Windows Management Instrumentation). Esto permite que otras aplicaciones también lean y usen la información del sensor. Una documentación preliminar de la interfaz se puede encontrar here(click) .

Cuando lo descarga, contiene la aplicación OpenHardwareMonitor.exe, no está buscando esa. También contiene OpenHardwareMonitorLib.dll, lo está buscando.

En su mayoría, si no es al 100%, es solo un envoltorio alrededor de la API de WinRing0, que puedes elegir para envolverte si te da la gana.

Lo he probado desde una aplicación C # y funciona. Aunque todavía está en beta, parecía bastante estable. También es de código abierto, por lo que podría ser un buen punto de partida.

Al final del día, me resulta difícil de creer que no esté en el tema de esta pregunta.

Necesito recopilar información de algún sistema para la aplicación que estoy desarrollando. La memoria disponible y la carga de la CPU son fáciles de obtener con C #. Desafortunadamente, la temperatura de la CPU no es tan fácil. He intentado usar WMI pero no pude obtener nada usando

Win32_TemperatureProbe

o

MSAcpi_ThermalZoneTemperature

¿Alguien ya ha tratado con este problema? Me pregunto cómo los programas de monitoreo, como SiSoftware Sandra, pueden obtener esa información ...

En caso de que alguien esté interesado, aquí está el código de la clase:

public class SystemInformation { private System.Diagnostics.PerformanceCounter m_memoryCounter; private System.Diagnostics.PerformanceCounter m_CPUCounter; public SystemInformation() { m_memoryCounter = new System.Diagnostics.PerformanceCounter(); m_memoryCounter.CategoryName = "Memory"; m_memoryCounter.CounterName = "Available MBytes"; m_CPUCounter = new System.Diagnostics.PerformanceCounter(); m_CPUCounter.CategoryName = "Processor"; m_CPUCounter.CounterName = "% Processor Time"; m_CPUCounter.InstanceName = "_Total"; } public float GetAvailableMemory() { return m_memoryCounter.NextValue(); } public float GetCPULoad() { return m_CPUCounter.NextValue(); } public float GetCPUTemperature() { //... return 0; } }


Depende de si su computadora es compatible con WMI . Mi computadora no puede ejecutar esta demostración de WMI también.

Pero obtengo con éxito la temperatura de la CPU a través de Open Hardware Monitor. Agregue la referencia de Openhardwaremonitor en Visual Studio. Es mas fácil. Prueba esto

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using OpenHardwareMonitor.Hardware; namespace Get_CPU_Temp5 { class Program { 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) { } } static void GetSystemInfo() { UpdateVisitor updateVisitor = new UpdateVisitor(); Computer computer = new Computer(); computer.Open(); computer.CPUEnabled = true; 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) Console.WriteLine(computer.Hardware[i].Sensors[j].Name + ":" + computer.Hardware[i].Sensors[j].Value.ToString() + "/r"); } } } computer.Close(); } static void Main(string[] args) { while (true) { GetSystemInfo(); } } } }

Necesita ejecutar esta demostración como administrador.

Puede ver el tutorial aquí: http://www.lattepanda.com/topic-f11t3004.html


Estoy bastante seguro de que depende del fabricante, ya que se accederá a ellos a través de un puerto de E / S. Si tiene una placa específica con la que está tratando de trabajar, intente consultar los manuales y / o ponerse en contacto con el fabricante.

Si quieres hacer esto para una gran cantidad de tableros diferentes, te recomiendo contactar a alguien en algo así como SiSoftware o estar preparado para leer MUCHOS manuales de la placa base.

Como otra nota, no todas las placas tienen monitores de temperatura.

También podría tener problemas para obtener acceso privilegiado del kernel.


Extraje la parte de la CPU de Open Hardware Monitor en una biblioteca separada, exponiendo sensores y miembros normalmente ocultos en OHM. También incluye muchas actualizaciones (como el soporte para Ryzen y Xeon) porque en OHM no aceptan solicitudes de extracción desde 2015.

https://www.nuget.org/packages/HardwareProviders.CPU.Standard/

Déjame saber tu opinión :)


Hay una publicación en el blog con algún código de muestra de C # sobre cómo hacerlo here .


Sé que esta publicación es antigua, pero solo quería agregar un comentario si alguien debería mirar esta publicación e intentar encontrar una solución para este problema.

De hecho, puede leer la temperatura de la CPU muy fácilmente en C # utilizando un enfoque WMI.

Para obtener un valor Celsius, he creado un contenedor que convierte el valor devuelto por WMI y lo envuelve en un objeto fácil de usar.

Recuerde agregar una referencia a System.Management.dll en Visual Studio.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Management; namespace RCoding.Common.Diagnostics.SystemInfo { public class Temperature { public double CurrentValue { get; set; } public string InstanceName { get; set; } public static List<Temperature> Temperatures { get { List<Temperature> result = new List<Temperature>(); ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root/WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature"); foreach (ManagementObject obj in searcher.Get()) { Double temp = Convert.ToDouble(obj["CurrentTemperature"].ToString()); temp = (temp - 2732) / 10.0; result.Add(new Temperature { CurrentValue = temp, InstanceName = obj["InstanceName"].ToString() }); } return result; } } } }

Actualización 25.06.2010:

(Acabo de ver que se envió un enlace al mismo tipo de solución anterior ... De todos modos, dejaré este fragmento de código si alguien quisiera usarlo :-))


Se puede hacer en tu código a través de WMI. Encontré una herramienta de Microsoft que crea código para ella.

La herramienta WMI Code Creator le permite generar código VBScript, C # y VB .NET que usa WMI para completar una tarea de administración, como consultar datos de gestión, ejecutar un método desde una clase WMI o recibir notificaciones de eventos mediante WMI.

Puedes descargarlo here .