Página 1 de 1

Obtener temperaturas del ordenador con ayuda de un programa

Publicado: 14 Jun 2013, 07:21
por Jonny
Llevo un montón de tiempo intentando obtener con AutoIt las temperaturas del ordenador.

He desistido, porque con WMI es imposible (incluso en Windows 7) :)

Así que, se me ha ocurrido que con ayuda de un programa, driver o DLL externo podría hacerlo. Pero tampoco está dando resultado. No he encontrado ningún driver ni DLL para poder hacerlo, así que he optado por buscar un programa que lo haga (hay muchos). Pero el problema es, encontrar un programa que haga esto, y funcione desde la línea de comandos, para poder usarlo como un motor y hacer yo la interfaz. Para Linux sí que hay programas que funcionen así, pero para Windows no hay nada.

Me dio por buscar alguno open source, para compilarlo con alguna modificación, si había que hacerla. Pero sólo encontré open hardware monitor, que ni funciona a través de la consola y no está escrito en C/C++. Creo que estaba escrito en C#. Y como no tengo ni idea de ese lenguaje...

¿Conocéis algún programa para Windows, que devuelva la temperatura de la CPU, ventilador, discos... De cuantos más componentes mejor, que funcione desde la consola y sea gratis?.

¿Sería muy difícil recompilar uno de esos que hay para Linux, para Windows?.

Si es open source, sería preferible que estuviera escrito en C/C++, que además de AutoIt, es el lenguaje que mejor entiendo ;).

Salu2!

Re: Obtener temperaturas del ordenador con ayuda de un progr

Publicado: 14 Jun 2013, 14:11
por Dany
La única forma de hacerlo sin driver seria esta.

Código: Seleccionar todo

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
 $strComputer = "."
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\wmi")
$Instances = $objWMIService.InstancesOf("MSAcpi_ThermalZoneTemperature")
For $Item in $Instances
  Msgbox(0,"",($Item.CurrentTemperature - 2732) / 10 & "c")
Next
PD: tu tarjeta debe soportar Acpi_ThermalZoneTemperature sino no funciona

saludos :smt027

Re: Obtener temperaturas del ordenador con ayuda de un progr

Publicado: 14 Jun 2013, 16:02
por Jonny
A ti te funciona?.

Mi placa debe soportarlo, porque Aida32 y otros programas me dan la temperatura de los sensores. Pero no me funciona nada de esto, hecho con WMI.

No me importaría hacerlo con drivers (genéricos). Quiero decir, no con los de mi placa, sino con un driver para todos los sensores. De hecho, preferiría hacerlo así, porque salvo el driver, lo demás estaría hecho en AutoIt. Pero yo no he encontrado ningún driver, y menos aún, para usarlo con AutoIt. Everest (y supongo que Aida32 también) usa un driver, pero como no son programas comerciales, no me sirven, para no tener líos con rollos legales.
Además, no podría usar esos drivers, porque no creo que haya documentación sobre su uso a nivel interno.

Open hardware monitor, creo que tiene drivers, pero no sé en qué lenguaje están hechos. No me gusta eso de C#, porque además del driver, o ese programa, tendría que tener instalado el .NET framework, el equipo que ejecutara la aplicación. ¡Demasiados requisitos de software!.

Por eso, necesitaría un programa tipo el antivirus que hablamos en otro hilo, para obtener las temperaturas.

Pero, si hay alguna DLL o driver, mucho mejor.

Salu2!

Re: Obtener temperaturas del ordenador con ayuda de un progr

Publicado: 14 Jun 2013, 16:31
por Dany
Pues la verdad no he visto ninguna librería DLL para usar. :smt009


saludos

Re: Obtener temperaturas del ordenador con ayuda de un progr

Publicado: 14 Jun 2013, 16:36
por Jonny
Ni yo, por eso busco un programa que lo haga, para usarlo como motor. Pero es que, ni siquiera los hay que funcionen por línea de comandos.

Salu2!

Re: Obtener temperaturas del ordenador con ayuda de un progr

Publicado: 14 Jun 2013, 19:34
por Jonny
Vaya. Buscando y buscando programas portables, que aunque tuvieran interfaz devolvieran las temperaturas del ordenador, me he encontrado con uno que bajé ayer, pero que no tenía pensado usar (por tener interfaz gráfica) :)

Pero es portable y gratuito. Y encima, tiene algo que puede ser muy útil: ¡Un SDK! ;)

http://www.alcpu.com/CoreTemp/developers.html

Dice que el SDK puede usarse con varios lenguajes, entre los que está C/C++, incluso hay un ejemplo de como declarar la función y la estructura. Así, que no debe haber problema para hacerlo en AutoIt y es una DLL ¡lo que yo quería! :).

Eso sí, aún no he descargado la API, así que no he visto bien como funciona. Imagino, que en el SDK habrá información más detallada sobre su uso.

Si consigo hacer un código que funcione lo pondré por aquí, para quien le interese.

Por cierto: He visto en el foro inglés, que con Open hardware monitor, del que he hablado ya en este hilo, se podría también obtener la información de las temperaturas del ordenador, a través de WMI:

http://www.autoitscript.com/forum/topic ... try1048578

Y aquí está la documentación:

http://openhardwaremonitor.org/wordpres ... or-WMI.pdf

En ese post del foro inglés, dicen que se puede usar "openhardwaremonitorlib.dll" pero que no saben como. ¡Yo tampoco! ;)

Eso sí estaría bien, parece como más completo el open hardware monitor que el Core temp, en cuanto a la información que da.

Si alguien sabe como usar esa DLL, estaría muy bien que lo explicara por aquí :)

El problema es que ese programa está escrito en C#, así que no sé si esa DLL podrá usarse con AutoIt.

Por cierto, podría usar para lo que quiero hacer, Open hardware monitor, y obtener las temperaturas del equipo a través de WMI, pero por lo que he visto en el post que he puesto del foro inglés, hay que tener ejecutado el programa, o ha de ejecutarse antes. Y eso no me gusta, porque la idea es que no se vea la interfaz del programa, sino la mía (la que haga yo en AutoIT).

Quizás pueda ejecutarse con Run() pasándole al último parámetro "@SW_HIDE". De esta manera quizás no se viera la interfaz de Open hardware monitor y pudiera obtener la info que devuelve, a través de WMI. Pero no sé, me parece un poco chapucero :). Me gusta más usar un SDK :).

Salu2!