Не могу выполнять любые другие действия в цикле - PullRequest
0 голосов
/ 01 марта 2020

Функциональность: я хочу, чтобы скрипт l oop F5 обновил sh страницу для меня, и когда я вижу что-то хорошее, я нажимаю одну из других клавиш, чтобы отсканировать предмет.

Проблема : Пока он зацикливается на F5, я не могу выполнить ни один из других сценариев.

MouseGetPos, OrigX, OrigY
mouseClick, left
sleep 20
random, randomlocx , 0,5
random, randomlocy , 0,5
MouseMove, 1162+randomlocx, 477+randomlocy, 0
mouseClick, left
sleep 10
send {y}
random, randomlocx2 , 0,10
random, randomlocy2 , 0,10
MouseMove, OrigX+randomlocx2, OrigY+randomlocy2, 0
return

2::
MouseGetPos, OrigX, OrigY
random, randomlocx , 0,5
random, randomlocy , 0,5
MouseMove, 964+randomlocx, 575+randomlocy, 0
sleep 20
mouseClick, left
MouseMove, OrigX, OrigY, 0

~$F5::
loop , 300 
{
Send {F5}
}   
return
F12::Reload   ; Reload script```

1 Ответ

1 голос
/ 01 марта 2020

AutoHotkey не обеспечивает истинную многопоточность, поэтому ваш сценарий не будет реагировать, пока у вас все oop.
Чтобы обойти это, вы захотите использовать Таймер . L oop на самом деле не предназначен для этого.

Пример включения / выключения таймера одной клавишей:

F5::
    toggle := !toggle ;a convenient way to toggle a variable in AHK, see below of explanation
    if(toggle) ;if true
        SetTimer, TimerCallback, 100 ;callback every ~100ms
    else
        SetTimer, TimerCallback, Off ;turn off timer
return

TimerCallback() ;the callback function
{
    Tooltip, % A_TickCount
}

Пояснение для toggle := !toggle переключение состояния переменной может быть найденным из моего предыдущего ответа здесь .
Также включает пример для милой маленькой 1liner таймера переключения горячей клавиши.

...