1

Тема: AHK: Блокировка двойного клика мышкой

День добрый.

Не знаю как решить задачу блокировки в приложении (ACDSee) двойного клика ЛКМ. При случайном двойном клике открывается окно Quick Start Quide, что совсем не нужно. Помогите пожалуйста начинающему пользователю. Заранее спасибо.

2 (изменено: Александр_, 2011-10-04 15:41:28)

Re: AHK: Блокировка двойного клика мышкой

vipigor пишет:

Не знаю как решить задачу блокировки в приложении (ACDSee) двойного клика ЛКМ. При случайном двойном клике открывается окно Quick Start Quide, что совсем не нужно. Помогите пожалуйста начинающему пользователю. Заранее спасибо.

Пример скрипта, блокирующего двойной клик в блокноте. См. комментарии в коде.

; получаем интервал двойного клика
DoubleClickTime := DllCall("GetDoubleClickTime")
; в этой переменной будет лежать время последнего щелчка
LastClick := 0
return

$LButton::
   ; получаем класс окна, по которому произвели щелчок
   WinGetClass, class, A
   ; если это "Notepad", то продолжаем обработку, иначе посылаем окну щелчок
   if (class="Notepad")
   {
      ; запоминаем время щелчка
      NewClick := A_TickCount
      ; если интервал двойного клика уже прошёл, то посылаем клик нашему окну
      if (NewClick-LastClick>DoubleClickTime)
         Send {LButton}
      ; обновляем время последнего клика
      LastClick := NewClick
   }
   else
      Send {LButton}
return

3

Re: AHK: Блокировка двойного клика мышкой

Александр_, существуют переменные A_PriorHotkey и A_TimeSincePriorHotkey.

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

4

Re: AHK: Блокировка двойного клика мышкой

teadrinker пишет:

Александр_, существуют переменные A_PriorHotkey и A_TimeSincePriorHotkey.

Ага, но ими тут не обойтись. Дело в том, что между щелчками мыши могут быть нажаты клавиши на клавиатуре. Кстати, по-хорошему тут бы надо ещё и координаты отслеживать, ведь два клика в разных местах с интервалом меньше чем DoubleClickTime не считаются двойным кликом . Пусть это будет домашним заданием для ТС

5

Re: AHK: Блокировка двойного клика мышкой

#IfWinActive, ahk_group ACDSee
GroupAdd, ACDSee, ahk_class QVMainFrame-ACDSEE90
GroupAdd, ACDSee, ahk_class QVMainFrame-ACDSeePro30

$LButton::
   If (A_TimeSincePriorHotkey <= 250
   And A_PriorHotkey = "$LButton")
      Return
   Else
      Click,, D
   KeyWait, LButton
   Click,, U
   Return

6

Re: AHK: Блокировка двойного клика мышкой

Знак $ перед LButton не нужен, т. к. «префикс $ является эквивалентом использования команды #UseHook», а все «горячие клавиши мыши ... используют хук мыши».

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

7

Re: AHK: Блокировка двойного клика мышкой

Сие результат, банальной не внимательности, я убирал префикс у хоткея, но забыл видимо убрать его из условия. Опробовал - не работает, вернул назад.

8

Re: AHK: Блокировка двойного клика мышкой

Благодарю за помощь, идеи понял, буду работать.

9

Re: AHK: Блокировка двойного клика мышкой

Спасибо, учту.
Кстати, есть ещё очень хороший способ- установка собственного обработчика. В этом случае нам не нужно будет ставить никаких хуков, более того- можно будет даже завершить работу скрипта. К сожалению сейчас нет времени для написания примера, сделаю это позже.