1

Тема: AHK: Принудительное завершение потока Loop

Возможно ли вручную завершить действие потока на который воздействует loop?

#SingleInstance force
Gui, Add, Edit, number w60 h18 vslots, %slots%
Gui, Add, UpDown, Range8-140
Gui,Show
return

F1::SetTimer, label, % (enabled := !enabled)? 100:"Off"

label:
Loop, %slots%
{
    if A_Index > %slots%
        break
SendInput %A_Index% %Clipboard%{enter}
sleep 1100
}
SetTimer, Show_Flood, Off
return

End::ExitApp

2

Re: AHK: Принудительное завершение потока Loop

Добавьте в цикл условие: Если нажата <горячая клавиша>, то прервать цикл.

3 (изменено: creature.ws, 2012-11-15 20:52:31)

Re: AHK: Принудительное завершение потока Loop

завершить действие потока

Поток завершить можно лишь «изнутри».

F1::SetTimer, label, % (enabled := !enabled)? 100:"Off" ; обращение к метке label будет происходить каждые 100мс

label: ; метка label
; После обращения к метке начнётся выполнение цикла.
Loop, %slots% ; количество повторений задаётся числом в переменной slots
{
    if A_Index > %slots% ; a_index никогда не будет больше числа сохранённого в переменной slots
        break
SendInput %A_Index% %Clipboard%{enter} ; действие которое требуется выполнить
sleep 1100 ; пауза которая требуется между действиями
}
SetTimer, Show_Flood, Off ; вдруг мы решаем выключить таймер. такие вот мы переменчивые.
return ; конец метки.

Код выше избыточен.

F1::
    Loop, %slots%
    {
        SendInput %A_Index% %Clipboard%{enter}
        sleep 1100
    }
    return

Если нажата <горячая клавиша>, то прервать цикл.

F1::
    Loop, %slots%
    {
        SendInput %A_Index% %Clipboard%{enter}
        sleep 1100
    }
    until breakThisLoop
    breakThisLoop := false
    return

F2::breakThisLoop := true