2015-10-01 1 views
1

Я пытаюсь настроить автоматическое письмо, если условия встречаются. Я пытаюсь посмотреть загрузку процессора. если пропуск или падение над номером, отправьте электронное письмо.CPU watch и email с AutoHotKey

CheckCPULoad: CoordMode, ToolTip, Screen SetFormat, float, 0.0 CPULoad := GetCPULoad_Short() ToolTip, CPULoad = %CPULoad%%, 0,% A_ScreenHeight% возвращение

GetCPULoad_Short() 
{ 
Static IdleTime, Tick 
global ProcessorCount 
SetBatchLines, -1 
OldIdleTime = %IdleTime% 
OldTick = %Tick% 
VarSetCapacity(IdleTicks,8,0) 
    DllCall("kernel32.dll\GetSystemTimes", "uint",&IdleTicks, "uint",0, "uint",0) 
    IdleTime := *(&IdleTicks) 
Loop 7      
    IdleTime += *(&IdleTicks + A_Index) << (8 * A_Index) 
Tick := A_TickCount 
Return 100 - 0.01*(IdleTime - OldIdleTime)/(Tick - OldTick)/ProcessorCount 
} 




############# 
#IfEqual, CPUload, 0, 
    #or 
if (CPUload = 0) 
{ 

    IfWinNotExist Inbox - [email protected] - Outlook 
    return ; Outlook isn't open to the right section, so do nothing. 
    WinActivate ; Activate the window found by the above command. 
    Send ^n ; Create new/blank e-mail via Control+N. 
    WinWaitActive Untitled - Message (HTML) 
    Send, [email protected] 
    Send {Tab 3} computer has stopped ; Set the subject line. 
    Send {Tab} more txt. ; etc. 
    return ; This line serves to finish the hotkey. 



} 

Но я попытался с помощью простого

если (CPULoad = 0) MsgBox тестирование

и это не даст мне сообщение. почему я могу открыть окно сообщения. или отправить по электронной почте?

+0

Вы используете Outlook, на этом компьютере, и он запущен и работает? Обратите внимание, что AutoHotKey, вероятно, не лучший способ справиться с предупреждениями о производительности ... –

+0

Да, это работает и это просто тест, чтобы узнать, поможет ли это нам. мы обязательно рассмотрим другие варианты .. любые предложения? с открытым исходным кодом, который может смотреть на процессор и отправлять предупреждения, если условия выполнены. –

+0

Мы используем платную версию datadoghq.com, хотя есть бесплатная версия, которая может вам подойдет. –

ответ

1

Это сообщение заставило меня интересно посмотреть, если бы это было сделано раньше, и я сразу же нашел решение, размещенном на ahkscript форумах:

Loop { 
    If (CPULoad() > 25) ; Assign the Number you want. 
    ; Your EMAIL Code here! If MultiLine Use {...code...} 
    Sleep 250 
} 

CPULoad() { ; By SKAN, CD:22-Apr-2014/MD:05-May-2014. Thanks to ejor, Codeproject: http://goo.gl/epYnkO 
Static PIT, PKT, PUT       ; http://ahkscript.org/boards/viewtopic.php?p=17166#p17166 
    IfEqual, PIT,, Return 0, DllCall("GetSystemTimes", "Int64P",PIT, "Int64P",PKT, "Int64P",PUT) 

    DllCall("GetSystemTimes", "Int64P",CIT, "Int64P",CKT, "Int64P",CUT) 
, IdleTime := PIT - CIT, KernelTime := PKT - CKT, UserTime := PUT - CUT 
, SystemTime := KernelTime + UserTime 

Return ((SystemTime - IdleTime) * 100) // SystemTime, PIT := CIT, PKT := CKT, PUT := CUT 
} 
+0

Да, это позволяет мне присваивать номер CPUload .. спасибо за то, что вы нашли это –