1 (изменено: Gorvin, 2011-05-28 09:37:06)

Тема: AHK: Потоки метки

Есть матка которая запускается по SetTimer внутри которой есть пауза keywait, что собственно блокирует горячую клавишу.
Пример:

test = 0
F12::
test++
SetTimer, TestLabel, 400
Return


End::ExitApp

TestLabel:
SetTimer, TestLabel, off
if test > 1
{
    MsgBox test: %test%
    return
}
KeyWait, LButton, D
MsgBox test: %test%
Return

Если использовать MaxThreadsPerHotkey то он не выполняет метку в отдельном потоке, а дожидается завершения первого. Собственно есть возможность заставить его запустить второй поток TestLabel пока первый ждет нажатия кнопки мыши? Ну или хотя бы можно определить сколько запущено потоков обрабатывающих нажатие данной клавиши и если их два и более запустить другую метку?

2

Re: AHK: Потоки метки

Gorvin пишет:

Собственно есть возможность заставить его запустить второй поток TestLabel пока первый ждет нажатия кнопки мыши?

#MaxThreadsPerHotkey 2
test = 0
F12::
test++
if test > 1
{
    MsgBox test: %test%
    return
}
KeyWait, LButton, D
MsgBox test: %test%
Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Потоки метки

teadrinker пишет:
Gorvin пишет:

Собственно есть возможность заставить его запустить второй поток TestLabel пока первый ждет нажатия кнопки мыши?

#MaxThreadsPerHotkey 2
test = 0
F12::
test++
if test > 1
{
    MsgBox test: %test%
    return
}
KeyWait, LButton, D
MsgBox test: %test%
Return

То что MaxThreadsPerHotkey отлично работает для кнопки я прекрасно знаю, но меня интересует именно второй поток лейбла по таймеру. Пока нашел только кривой выход. Что тот nипа:

F12::
test++
SetTimer, TestLabel_%test%, 400
Return

TestLabel_1:
...
Return

TestLabel_2:
...
Return

4

Re: AHK: Потоки метки

Мне не совсем ясна цель всего этого, но в любом случае нужно учитывать, что AHK не поддерживает многопоточность, и начать новый поток можно, только прервав предыдущий.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder