Тема: AHK: Неадекватное поведение AHK (или меня)
Привет, ребят. Переписываю свой AHK-скрипт на ООП, вот этот крайне важный кусок кода работает некорректно. Я пробовал во всех вариациях, до которых смог додуматься, я убил 4 часа и гуглил как мог, выручайте!
class Grabber {
__new(){
this.vkKey := "vk5A"
}
grab() {
Send % "{" this.vkKey " down}{" this.vkKey " up}"
;return
}
start() {
setTimer, % this.grab(), 150
;return
}
stop() {
setTimer, % this.grab(), off
;return
}
}
class Handler {
__new() {
this.grabber := new Grabber
this.grabberActive := false
}
handle(module) {
if (module == "Grabber") {
if (this.grabberActive == true) {
this.grabber.start()
this.grabberActive := false
} else {
this.grabber.stop()
this.grabberActive := true
}
}
}
}
; /// Точка входа
handler := new Handler
F2::handler.handle("Grabber")
Написанный выше код нормально работает в процедурном стиле. Если из кода непонятно, то я хочу, чтобы по нажатию F2 начиналась бесконечная отправка клавиши z (vk5A), а если нажать еще раз — прекращалась.
Насколько я понял, каждая итерация цикла в setTimer дергает (ЗАЧЕМ?!) метод handle из совсем другого класса, из-за этого там меняются значение true/false и все работает криво, но может быть, я неправильно понял. Как с этим бороться? Как добиться нужного? Подскажите, пожалуйста, буду очень благодарен!
P.S. Пример рабочий, можно вставить и запустить.