Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


andr_mozg, штатной поддержки в Windows нет (пока?), Intel никаких (бесплатных) API/SDK не предоставляет, многие графические тулзы лишь реклама своих SDK, которые продаются уже за приличные деньги... Для надоверчивых - официальный ответ на оффсайте Intel... отсюда вывод: единственный выход писать AutoIT-врапперы для доступных графических утилит... Благо, AutoIT под такие цели и "заточен"...

Мне приглянулась прога RightMark CPU Clock Utility – простой дизайн, много настроек, поддержка лога... Жаль, давно не обновлялась, но вроде пока справляется. Проверил прогу в двух режимах: режиме вывода данных в лог-файл (есть возможность просмотреть все предыдущие значения) и режиме оперативного чтения данных - оба режима легко автоматизируются. Каждый режим соответствует определенной настройке программы, поэтому перед запуском EXE нужно восстановить их в ветку HKCU\Software\RightMark (например, из REG-файла). Общий алгоритм скрипта:

0. Настаиваем RMClock в нужный режим (в скрипте опущено)
1. Запускаем RMClock.EXE
2. Ожидаем и удаляем иконку из трея
3. Входим в цикл чтения данных (из файла или окна программы)

В скрипте использована библиотека SysTray_UDF с форума оффсайта

Режим LOG-файла >>
Код: Выделить весь код
#include <SysTray_UDF.au3>

; Расположение RMClock
$RMClockDir = @ProgramFilesDir &"\RMClock"
$RMClockExe = $RMClockDir &"\RMClock.Exe"
$RMClockLog = $RMClockDir &"\RMClock.Log"
; Запуск RMClock
$PID = Run($RMClockExe, $RMClockDir)
ProcessWait("RMClock.exe")
Sleep(1000) ; минимальный период обновления лога

Global $hLog = FileOpen($RMClockLog, 0)
Global $aCPU, $iCPU=0, $iTmp=0

While 1
    ; Читаем строку из лог-файла
    $sLine = FileReadLine($hLog)
    If @error = -1 Then
        If ProcessWaitClose("RMClock.exe", 1) Then ExitLoop
        ContinueLoop
    EndIf
    ; Разбор строки
    $aCPU = StringRegExp($sLine, "(?:CPU: |CoreTemp: )([\d.]+)", 3)
    If @error Then ContinueLoop
    ; Подсчет средней температуры по всем ядрам
    If $iTmp>0 And $aCPU[0]=0 Then
        ; Вывод данных/сброс счетчиков
        ConsoleWrite("Avarage CPU Temperature: "& $iTmp/($iCPU+1) &@CRLF)
        $iTmp=0
    EndIf
    $iCPU = $aCPU[0]
    $iTmp+= $aCPU[1]
Wend
REG-файл настроек >>
Код: Выделить весь код
REGEDIT4

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowPerfLevel"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowFreqInTray"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowLoadInTray"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowCriticalBalloons"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"TaskbarButton"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"RunMinimized"=dword:00000001

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"EnableLogging"=dword:00000001

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"LoggingFlags"=dword:000000bf

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ActivePage"=dword:00000001

Оперативный режим >>
Код: Выделить весь код
#include <SysTray_UDF.au3>
AutoItSetOption("WinDetectHiddenText",1)

; Расположение RMClock
$RMClockDir = @ProgramFilesDir &"\RMClock"
$RMClockExe = $RMClockDir &"\RMClock.Exe"
; Запуск RMClock
$PID = Run($RMClockExe, $RMClockDir)
; Ожидаем и удаляем иконку из трея
Do
    Sleep(100)
    $iTrayIcon = _SysTrayIconIndex("RMClock.exe")
Until $iTrayIcon >=0
_SysTrayIconRemove($iTrayIcon)

; Цикл чтения/разбора текста окна
While ProcessExists($PID)
    $iTmp = 0
    $sTxt = WinGetText("RightMark")
    $aTmp = StringRegExp($sTxt, "Core temp\.[\n\r]+([\d.]+)", 3)
    ; Суммируем по всем ядрам
    For $i=0 To UBound($aTmp)-1
        $iTmp += $aTmp[$i]
    Next
    $iTmp = $iTmp/UBound($aTmp) ; Среднее значение

        ConsoleWrite("Avarage CPU Temperature: "& $iTmp &@CRLF)
    Sleep(1000)
WEnd
REG-файл настроек >>
Код: Выделить весь код
REGEDIT4

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowPerfLevel"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowFreqInTray"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowLoadInTray"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowCriticalBalloons"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"TaskbarButton"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"RunMinimized"=dword:00000001

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ActivePage"=dword:00000001

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"EnableLogging"=dword:00000000

ВАЖНО! Не стоит жать все подряд и менять настройки CPU/MB! RMClock работает на низком уровне и результат непредсказуем!

Последний раз редактировалось amel27, 28-07-2009 в 07:06. Причина: оформление

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:30, 28-07-2009 | #9