1 (изменено: test2test, 2014-11-14 18:13:28)

Тема: Приоритет потоков, буферизация определенного количества нажатий

Нужен скрипт, в котором горячие клавиши не прерывали бы друг друга и все нажатия отрабатывались последовательно одно после другого.

Решение "в лоб" с выставлением

#MaxThreads, 1

основную задачу выполняет, но создает другую проблему - пока не отработает предыдущий бинд все последующие нажатия отбрасываются. В идеале же нужно чтобы нажатия  сохранялись в какой-либо "буфер", глубину которого можно было бы регулировать, и потом начиная с самого старого отсылались на выполнение.

Подозреваю что копать надо в сторону приоритетов процессов, но не могу сообразить как именно это реализовать.

2

Re: Приоритет потоков, буферизация определенного количества нажатий

Копните в сторону команды Critical. Вроде бы там сохраняются.

3

Re: Приоритет потоков, буферизация определенного количества нажатий

Спасибо за подсказку. Работает. Стало лучше.

А ограничить размер "буфера" запоминаемых команд /время их жизни как-то можно?

Поясню чтобы понятнее было: По хоткею запускаются небольшие действия на 1-3 секунды. Если не ограничивать "глубину" то боюсь будут ситуации, когда ты уже ничего не жмешь, а контроль над событиями в игре получишь еще не скоро.

Возможно реализовать защиту от дурака оставляющую, допустим, последние 2-3 нажатия в очереди, или отбрасывающую слишком долго "ожидающие"?

4

Re: Приоритет потоков, буферизация определенного количества нажатий

Не знаю, никогда этим не заморачивался. Может, кто другой подскажет какую-нибудь идею.

5

Re: Приоритет потоков, буферизация определенного количества нажатий

Такой вариант буфферизирует три нажатия в течение трёх секунд:

CountPress := 3
Time := 3000

i := 0
F11::
   Critical
   if (i++ = 0)
      SetTimer, Period, % Time
   if (i > CountPress)
      Return

; здесь действия, которые необходимо буфферизировать
   SoundBeep, 300
   Sleep, 1000
   SoundBeep, 900
   Return
   
Period:
   i := 0
   Return

Изменяя переменные CountPress и Time можно добиться подходящего результата.

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