reset86
Новичок
- Сообщения
- 47
- Репутация
- 0
Не могу получить температуру процессора, перерыл много форумов, везде примерно один и тот же код на WMI (пример привел) но он не работает.
Есть еще вот такая штука, на cimv2, судя по всему используя Win32_PerfRawData_Counters_ThermalZoneInformation, температуру получить можно, пока не нашел как, тут есть, кое какая информация http://wutils.com/wmi/root/cimv2/win32_perfrawdata_counters_thermalzoneinformation/#temperature_properties.
Наткнулся на библиотеку speedfan.dll, попробовал поработать с ней, но нечего не вышло.
Сломал себе голову, есть ли вообще какие то рабочие способы получить температуры CPU?
Например из реестра, по типу:
Или, возможно внешние DLL?
Код:
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?