1

Тема: AHK: Timer (накрутка времени)

Всем привет!
Набросал таймер который при прокрутке колеса мышки накручивает время. При отпускании LControl и LWin запускает.
Есть ощущение что использовать таким образом цикл неправильно...
Есть ли более эффективные решения?
Заранее благодарен!

^#WheelDown::
^#WheelUp::
30sec := 30000
While GetKeyState("LControl","p") and GetKeyState("LWin","p"){
	if (A_PriorKey = "WheelDown"){
		if (ms >= 30000){
			
			ms += -%30sec%
		} else {
			ms = 0
		}
		Sleep,300
		;tooltip current ms %ms%
	} else if (A_PriorKey = "WheelUp"){
		ms += %30sec%
		Sleep,300
		;tooltip current ms %ms%
	}
	msInMin := ms/1000/60
	
	tooltip Timer will be set to %msInMin%
}

SetTimer, Alarm, %ms%

SetTimer, RemoveToolTip, 2000

return

2 (изменено: __Михаил__, 2020-06-21 16:38:17)

Re: AHK: Timer (накрутка времени)

afibur

Цикл, как по мне последнее, что нужно использовать.

Набросал свой вариант, вроде работает идеально:

TimeOut :=	10000	; По умолчанию 10 секунд
TimeOutStep :=	5000	; Шаг изменения
TimeOutMax :=	100000	; Максимальное время таймера
TimeOutMin :=	5000	; Минимальное время таймера
ToolTipSleep :=	2000	; Время на отображение ToolTip подсказки
Return


^#WheelDown::
^#WheelUp::
SetTimer, Alarm, Off				; Выключить текущий таймер
Mode := InStr(A_ThisHotkey, "WheelUp") ? 1 : 0		; Определить нажатую кнопку
If Mode		; Если колесо вверх:
{
 If (TimeOut < TimeOutMax)	; Проверить предел
  TimeOut += TimeOutStep		; Прибавить время
 Else							; Если вышло за предел
  TimeOut := TimeOutMax		; Установить максимум
}
Else		; Если колесо вниз:
{
 If !(TimeOut < TimeOutMin+TimeOutStep)		; Проверить предел
  TimeOut -= TimeOutStep					; Убавить время
}

T := Round(TimeOut/1000,0)
ToolTip, Таймер: %T% сек.
SetTimer, Alarm, %TimeOut%
SetTimer, RemoveToolTip, %ToolTipSleep%
Return


Alarm:
SetTimer, Alarm, Off
T := Round(TimeOut/1000,0)
MsgBox,8256, Время истекло: %T% сек, Таймер сработал!
Return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
Return
Win10x64, AHK v1.1.30.03