Что нового

Узнать температуру Процессора

reset86

Новичок
Сообщения
47
Репутация
0
Не могу получить температуру процессора, перерыл много форумов, везде примерно один и тот же код на WMI (пример привел) но он не работает.

Код:
ConsoleWrite(_ACPI_Temp() & @CrLf)
Func _ACPI_Temp()
Local $wbemFlagReturnImmediately = 0x10, $strComputer, $objWMIService, $colItems
Local $wbemFlagForwardOnly = 0x20
Local $CurrTemp = "N/A"
$strComputer = "."
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\wmi")
$colItems = $objWMIService.ExecQuery("SELECT * FROM MSAcpi_ThermalZoneTemperature", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
For $objItem In $colItems
$CurrTemp = ($objItem.CurrentTemperature - 2732) / 10
Next
Return $CurrTemp
EndFunc



Есть еще вот такая штука, на cimv2, судя по всему используя Win32_PerfRawData_Counters_ThermalZoneInformation, температуру получить можно, пока не нашел как, тут есть, кое какая информация http://wutils.com/wmi/root/cimv2/win32_perfrawdata_counters_thermalzoneinformation/#temperature_properties.

Код:
_CPU_Info()
Func _CPU_Info()
$oService  = ObjGet('winmgmts:\\.\root\cimv2')
If IsObj($oService) Then
$oItems  = $oService.ExecQuery('SELECT * FROM Win32_Processor')
If IsObj($oItems) Then
For $Property In $oItems
ConsoleWrite($Property.Caption & @CR)
ConsoleWrite($Property.Name & @CR)
Next
EndIf
EndIf
EndFunc



Наткнулся на библиотеку speedfan.dll, попробовал поработать с ней, но нечего не вышло.

Код:
$handle = DllCall("speedfan.dll", "int", "speedfan", "int", 2, "int", 3, "int", 0)
ConsoleWrite($handle  & @CR)



Сломал себе голову, есть ли вообще какие то рабочие способы получить температуры CPU?
Например из реестра, по типу:

Код:
$Cpu_Name = RegRead ("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0","ProcessorNameString")
$Cpu_BIOS = RegRead ("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS","SystemProductName")
ConsoleWrite($Cpu_Name  & @CR)
ConsoleWrite($Cpu_BIOS  & @CR)


Или, возможно внешние DLL?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Попробуйте с правами админа запустить
 
Автор
reset86

reset86

Новичок
Сообщения
47
Репутация
0
Дело не в правах администратора.

OffTopic:
inververs это шутка? Если да, то не удачная.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Нет, у меня с правами администратора только показывает температуру. Win10
 
Автор
reset86

reset86

Новичок
Сообщения
47
Репутация
0
Кокой скрипт? У меня Win10 64x, тот, что в примере, не показывает, причем в любых программах по типу AIDA все показывает.
 
A

Alofa

Гость
А такой костыль будет работать?
Код:
#RequireAdmin
Local $sOutput, $iPID = Run('wmic /namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature', _
		'', @SW_HIDE, BitOR($STDERR_CHILD, $STDOUT_CHILD))
While 1
	$sOutput = StdoutRead($iPID)
	If Number($sOutput) Or @error Then ExitLoop
WEnd
MsgBox(262144, Default, 't = ' & (($sOutput / 10) - 273) & '°C')
 
Автор
reset86

reset86

Новичок
Сообщения
47
Репутация
0
Alofa нет :(
Код:
#RequireAdmin
#include <constants.au3>
Local $sOutput, $iPID = Run('wmic /namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature', '', @SW_HIDE, BitOR($STDERR_CHILD, $STDOUT_CHILD))
While 1
$sOutput = StdoutRead($iPID)
ConsoleWrite($sOutput & @CRLF);пусто
MsgBox(262144, Default, 't = ' & (($sOutput / 10) - 273) & '°C')
; И в скомпилированном виде - 273, потому что в $sOutput пусто
Sleep(1000)
WEnd
 

hedji

Продвинутый
Сообщения
409
Репутация
94
wmic /namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature
The property may or may not be supported by your hardware.
ссылка
При запуске вручную в окне CMD выдает это?
ERROR:
Description = Not supported
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
У меня вот пишет: отказано в доступе
 

Вложения

  • Снимок.PNG
    Снимок.PNG
    9.3 КБ · Просмотры: 27
Автор
reset86

reset86

Новичок
Сообщения
47
Репутация
0
Запустил WMIC.exe (C:\Windows\System32\wbem), посмотрел доступные команды через справку (/?), нашел много чего интересного, но на температуру не наткнулся.
Скорее всего данный способ, не поддерживается оборудованием (об этом много где написано) и тут можно пыжится долго и нечего не выйдет, это тупиковый вариант решения задачи.

Вот тут, тоже нашел много интересного, но пока на температуру не наткнулся - http://www.powertheshell.com/reference/wmireference/root/cimv2/

Может кто какие dll знает, по типу speedfan.dll?

OffTopic:
Alofa и монитор, протирал тоже ))))
 

Вложения

  • Безымянный.png
    Безымянный.png
    9.7 КБ · Просмотры: 18
Верх