Тема: AHK: Событие LButton Up иногда не срабатывает.
Проблема заключается в том, что временами левую кнопку мышки "заедает". Как я предполагаю, скрипт не отлавливает событие отпускания ЛКМ. С чем это может быть связано?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Проблема заключается в том, что временами левую кнопку мышки "заедает". Как я предполагаю, скрипт не отлавливает событие отпускания ЛКМ. С чем это может быть связано?
Код в студию.
(Вполне возможно, что до LButton Up исполнение не доходит, если наличествуют #IF ... #IF, или можно LButton поменять на ~LButton).
*LButton::
Click
SetTimer, Func, 100
KeyWait, LButton
SetTimer, Func, Off
return
Func:
Click
returnили
*LButton::
Click
SetTimer, Func, 100
return
*LButton Up::
SetTimer, Func, Off
return
Func:
Click
returnПопробуй так:
*LButton::
SetTimer, Func, 100
Func:
Click
if (!GetKeyState("LButton", "P"))
SetTimer, Func, Off
returnСпасибо! И компактно получилось. Пока "заеданий" не замечал. А в чём разница между этими вариантами (в плане отлова LButton Up)?
В том хотя бы, что в этом варианте проверяется физическое состояние ЛКМ в цикле, так что "заедание" ее весьма маловероятно.
Прошу прощения. В 3-ем сообщении в функции Func не дописал 3 строки. На деле она у меня выглядела так:
Func:
GetKeyState, state, LButton, P;
if state = U
SetTimer, Func, Off
Click
returnТ.е. у меня состояние ЛКМ изначально проверялось, но цикл не прерывался, если я её отпускал.
На самом деле можно вообще написать так:
*LButton::
while GetKeyState("LButton","P")
ClickЕсли скорость повтора не устраивает, то это исправит SetMouseDelay, Задержка_в_миллисекундах первой строкой или Sleep внутри блока while {...}.
Это конечно всё замечательно, но меня больше интересует почему условие if state = U не было истинным после того как я отпускал ЛКМ. Хочу понять, почему так происходило.
С указанными исправлениями не удалось вызвать залипание ЛКМ. (AHK_L 1.1.8.0 Unicode, Win7 x64)
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться