1

Тема: AHK: Событие LButton Up иногда не срабатывает.

Проблема заключается в том, что временами левую кнопку мышки "заедает". Как я предполагаю, скрипт не отлавливает событие отпускания ЛКМ. С чем это может быть связано?

2

Re: AHK: Событие LButton Up иногда не срабатывает.

Код в студию.
(Вполне возможно, что до LButton Up исполнение не доходит, если наличествуют #IF ... #IF, или можно LButton поменять на ~LButton).

3

Re: AHK: Событие LButton Up иногда не срабатывает.


*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

4 (изменено: Irbis, 2012-07-23 23:18:40)

Re: AHK: Событие LButton Up иногда не срабатывает.

Попробуй так:

*LButton::
    SetTimer, Func, 100
Func:
    Click
	if (!GetKeyState("LButton", "P"))
	   SetTimer, Func, Off
return

5

Re: AHK: Событие LButton Up иногда не срабатывает.

Спасибо! И компактно получилось. Пока "заеданий" не замечал. А в чём разница между этими вариантами (в плане отлова LButton Up)?

6 (изменено: Irbis, 2012-07-25 21:27:30)

Re: AHK: Событие LButton Up иногда не срабатывает.

В том хотя бы, что в этом варианте проверяется физическое состояние ЛКМ в цикле, так что "заедание" ее весьма маловероятно.

7

Re: AHK: Событие LButton Up иногда не срабатывает.

Прошу прощения. В 3-ем сообщении в функции Func не дописал 3 строки. На деле она у меня выглядела так:


Func:
    GetKeyState, state, LButton, P;
    if state = U
        SetTimer, Func, Off
    Click
return

Т.е. у меня состояние ЛКМ изначально проверялось, но цикл не прерывался, если я её отпускал.

8 (изменено: Irbis, 2012-07-25 22:00:13)

Re: AHK: Событие LButton Up иногда не срабатывает.

На самом деле можно вообще написать так:

*LButton::
while GetKeyState("LButton","P")
   Click

Если скорость повтора не устраивает, то это исправит SetMouseDelay, Задержка_в_миллисекундах   первой строкой или Sleep внутри блока while {...}.

9

Re: AHK: Событие LButton Up иногда не срабатывает.

Это конечно всё замечательно, но меня больше интересует почему условие if state = U не было истинным после того как я отпускал ЛКМ. Хочу понять, почему так происходило.

10

Re: AHK: Событие LButton Up иногда не срабатывает.

С указанными исправлениями не удалось вызвать залипание ЛКМ. (AHK_L 1.1.8.0 Unicode, Win7 x64)