1

Тема: AHK: Буферизация горячей клавиши

Как избежать буферизации в данном примере, не реагировать на нажатия во время выполнения функции??
Если тут нажать 1, и во время отображения MsgBox, ещё раз нажать 1, то при закрытии MsgBox, он снова появится.

#If HotkeysRules() 
#If

Global oHotkeys := {}
oHotkeys[1] := func("MyFunc").Bind(1)
oHotkeys[2] := func("MyFunc").Bind(2)

Hotkey, IF, HotkeysRules()
Hotkey, 1, Return
Hotkey, 2, Return
Hotkey, IF 

HotkeysRules() {
	Return 1, SetTimer(oHotkeys[A_ThisHotkey], -1)
}

SetTimer(func, time) {
	SetTimer, % func, % time
}

MyFunc(p) {
	MsgBox % p
}

Return:
	Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

2

Re: AHK: Буферизация горячей клавиши

#MaxThreads 1

?

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

3

Re: AHK: Буферизация горячей клавиши

Нет, так 2 не работает, и обе не блокируются пока MsgBox.

Если в примере

Hotkey, 1, Return

Return заменить на funcobj, то всё работает нормально.
Получается вопрос в том как в SetTimer запретить "повторный буферизированный" вызов funcobj.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Буферизация горячей клавиши

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

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

5

Re: AHK: Буферизация горячей клавиши

Цель в том, что у меня как и в примере funcobj проще использовать в HotkeysRules, но видимо костыли таймера для имитации метки хоткея эту простоту нивелируют.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: Буферизация горячей клавиши

Как избежать буферизации в данном примере, не реагировать на нажатия во время выполнения функции??

Я в пример не вникал. Но, чтобы игнорировать ГК во время выполнения функции, как вариант, можно в первой строке функции отключить эту ГК.

Hotkey, F3, Off