#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <HotKey.au3>
#include <vkConstants.au3>
Global Const $TICK = 1
Global Const $WINDOW = 0
Global Const $CONTROL = 1
Global Const $TIME = 2
Global Const $PAUSE_TIME = 3
Global $Pause = 0
Global $Quit = 0
Global $PauseData[4]
_HotKey_Assign($VK_PAUSE, 'TogglePause')
_HotKey_Assign(BitOR($CK_CONTROL, $VK_Q), 'ToggleQuit')
Func Pause()
Switch $Pause
Case 1
If TimerDiff($PauseData[$TIME]) > 290000 Then
$PauseData[$PAUSE_TIME] += 5
TrayTip('На паузе', 'уже '& $PauseData[$PAUSE_TIME] &' минут', 20, 1)
ControlFocus($PauseData[$WINDOW], '', $PauseData[$CONTROL])
ControlSend($PauseData[$WINDOW], '', $PauseData[$CONTROL], '{PAUSE}{TAB}{TAB down}{PAUSE}')
$PauseData[$TIME] = TimerInit()
EndIf
Case 2
WinActivate($PauseData[$WINDOW])
ControlFocus($PauseData[$WINDOW], '', $PauseData[$CONTROL])
ControlSend($PauseData[$WINDOW], '', $PauseData[$CONTROL], '{PAUSE}{TAB}')
$Pause = 3
Case 3
If WinActive($PauseData[$WINDOW]) Then
$Pause = 0
EndIf
EndSwitch
EndFunc
Func Terminate()
If $Quit > 0 Then
If TimerDiff($Quit) > 5000 Then
Exit
EndIf
EndIf
EndFunc
TrayTip('Прога запущена','Нажми "Pause Break" для включения паузы,'& @LF &'"Ctrl+Q" для завершения работы', 30, 1)
While 1
Pause()
Terminate()
Sleep($TICK)
WEnd
Func TogglePause()
If $Quit = 0 Then
Switch $Pause
Case 0
$Pause = 1
TrayTip('Окно поставлено на паузу', 'Сделай себе кофейку', 20, 1)
$PauseData[$WINDOW] = WinGetHandle('[active]')
$PauseData[$CONTROL] = ControlGetFocus($PauseData[$WINDOW])
$PauseData[$TIME] = TimerInit()
$PauseData[$PAUSE_TIME] = 0
ControlSend($PauseData[$WINDOW], '', $PauseData[$CONTROL], '{TAB down}{PAUSE}')
Case 1
$Pause = 2
TrayTip('Пауза', 'снята', 20, 1)
Case Else
TrayTip('Пауза', 'снята', 20, 1)
EndSwitch
EndIf
EndFunc
Func ToggleQuit()
If $Quit = 0 Then
TrayTip('Завершаем работу', 'До новых встреч!', 5 ,1)
If $Pause = 1 Then
$Pause = 2
EndIf
$Quit = TimerInit()
EndIf
EndFunc