1

Тема: AHK: нажатие Mouse Click при отпускании клавиши

Приветствую. Нужна помощь в написании скрипта, в котором при отпускании клавиши "N" производился бы mouse click. Быть может я плохо искал и вообще это простейшая вещь, но у меня не получается Помогите пожалуйста.

2

Re: AHK: нажатие Mouse Click при отпускании клавиши

Во так?

n::
KeyWait n ; Подождать, пока пользователь отпустит клавишу.
Send {LButton} ; Нажать левую кнопку мыши.
return

3

Re: AHK: нажатие Mouse Click при отпускании клавиши

Esc пишет:

Во так?

Нет.

vk4E Up:: Send {Click}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: AHK: нажатие Mouse Click при отпускании клавиши

Писал подобный скрипт - сразу же производит нажатие LButton, а не последовательно после отпускания клавиши "N".

5 (изменено: Esc, 2015-03-05 13:20:29)

Re: AHK: нажатие Mouse Click при отпускании клавиши

Michael.G
У меня после отпускания работает, но вариант teadrinker конечно лучше и быстрее.

teadrinker
А не подскажете, есть ли в AHK код двойного клика, вроде DLButton, чтобы только его переназначить?

6

Re: AHK: нажатие Mouse Click при отпускании клавиши

Есть:

Send {Click 2}

Чтобы переназначить напрямую — нет.

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

7

Re: AHK: нажатие Mouse Click при отпускании клавиши

Хм... что-то странно. При бинде "N" перестает работать вообще (т.е. когда я ее зажимаю ничего не происходит), мне нужно чтобы она продолжала выполнять свою функцию (т.е. при зажатии "N" она бы продолжала печататься), но в то же время чтобы при отпускании производился Mouse Click. Видимо я просто изначально неправильно мысль изложил.

8 (изменено: Esc, 2015-03-05 13:39:39)

Re: AHK: нажатие Mouse Click при отпускании клавиши

teadrinker
Спасибо, а есть ли вменяемый способ переназначить дабл клик, сохранив быструю реакцию одиночного? Вот вроде код рабочий, но тормозной.

dcTime := 50

LButton::
    if(A_PriorHotkey = A_ThisHotkey && A_TimeSincePriorHotkey < dcTime) {
        Send, {MButton}
    } else {
        Send, {LButton}
    }
return

Michael.G
Тогда нужно добавить тильду.

~vk4E Up:: Send {Click}

9

Re: AHK: нажатие Mouse Click при отпускании клавиши

Michael.G пишет:

мне нужно чтобы она продолжала выполнять свою функцию

~vk4E Up:: Send {Click 2}

Двойной клик:

dcTime := 200

~LButton::
   if(A_PriorHotkey = A_ThisHotkey && A_TimeSincePriorHotkey < dcTime)
      MsgBox, DblClick
   return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: нажатие Mouse Click при отпускании клавиши

teadrinker
Имелось ввиду немного другое, сохранить функциональность ЛКМ (перетаскивание, выделение) всё по умолчанию, но при двойном клике посылать одинарный ЛКМ + g + Enter, например.

11 (изменено: teadrinker, 2015-03-05 14:31:29)

Re: AHK: нажатие Mouse Click при отпускании клавиши

А, да, ступил.

OnExit, Exit
hHookMouse := DllCall("SetWindowsHookEx"
   , Int, WH_MOUSE_LL := 14
   , Int, RegisterCallback("LowLevelMouseProc", "Fast")
   , Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr)
   , UInt, 0, Ptr)
 Return

Exit:
    DllCall("UnhookWindowsHookEx", Ptr, hHookMouse)
    ExitApp

LowLevelMouseProc(nCode, wParam, lParam)
{
   static WM_LBUTTONDOWN := 0x201, PrevTime, DoubleClickTime := DllCall("GetDoubleClickTime")

   time := NumGet(lParam + 16, "UInt")
   if (wParam = WM_LBUTTONDOWN && PrevTime && time - PrevTime <= DoubleClickTime)
   {
      SetTimer, EventHandling, -10
      Return 1
   }
   (wParam = WM_LBUTTONDOWN && PrevTime := time)
   
   Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, UInt, wParam, UInt, lParam)

EventHandling:
   SendInput {Click}{vk47}{Enter}
   Return
}

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

12

Re: AHK: нажатие Mouse Click при отпускании клавиши

Подредактировал немного.

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

13 (изменено: Michael.G, 2015-03-05 15:30:52)

Re: AHK: нажатие Mouse Click при отпускании клавиши

Сейчас работаем именно так, как мне хотелось. Осталась одна деталь. Скрипт нужен для игры StarCraft, там можно использовать последовательность действий через shift (т.е. действие 1 -> shift -> действие 2 по выполнение д. 1), можно ли как-то сделать, чтобы скрипт продолжал работать при зажатой клавише shift?
З.Ы. Также отключение скрипта на клавишу "B" было бы очень кстати.

14

Re: AHK: нажатие Mouse Click при отпускании клавиши

Michael.G пишет:

Скрипт нужен для игры StarCraft

Для игр есть своя ветка, задавайте вопросы там.

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

15

Re: AHK: нажатие Mouse Click при отпускании клавиши

Esc пишет:

teadrinker
Имелось ввиду немного другое, сохранить функциональность ЛКМ (перетаскивание, выделение) всё по умолчанию, но при двойном клике посылать одинарный ЛКМ + g + Enter, например.

Ещё так можно:

DoubleClickTime := DllCall("GetDoubleClickTime")
LButton::
   if (A_PriorHotkey = A_ThisHotkey && A_TimeSincePriorHotkey <= DoubleClickTime)
      SendInput, {Click}g{Enter}
   else
   {
      SendInput, {LButton Down}
      KeyWait, LButton
      SendInput, {LButton Up}
   }
   Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: нажатие Mouse Click при отпускании клавиши

Я понимаю и все-таки, можете ли вы написать что нужно добавить чтобы скрипт отключался на клавишу B?

17

Re: AHK: нажатие Mouse Click при отпускании клавиши

А почему вы всё-таки не хотите действовать в соответствии с правилами?

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

18

Re: AHK: нажатие Mouse Click при отпускании клавиши

Я конечно сделаю, но до упоминания sc2 всё было в рамках правил.

19

Re: AHK: нажатие Mouse Click при отпускании клавиши

teadrinker пишет:

Ещё так можно:

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

Могли бы Вы помочь вот в этой теме? Как раз там я и хотел использовать переназначение дабл клика, но сейчас понял, что лучше попробовать по другому.
http://forum.script-coding.com/viewtopic.php?id=10464