1

Тема: AHK: click при зажатии и перенос курсора

Приветствую, уверен что более чем глупый вопрос, но сам найти его решение я не смог, так что вынужден писать тут.
Мне нужен скрипт, в котором при нажатии на клавиши курсор будет переноситься к указанным координатам и нажимать там LClick один раз, всего мне нужно 10 комбинаций из клавиш с разными начальными координатами и одним конечным. Трудность (для меня) заключается в том, что мне нужно, чтобы после второго нажатия этой же клавиши (в течении секунды после первого) курсор переносился в другие координаты к нажимал там дважды LClick. Рассчитываю на вашу помощь, ибо мне самому (пока что) эта задача не под силу, а нужно это достаточно срочно.
P.S. Ниже напишу координаты для начального клика и завершающего (а также клавиши, на которые это нужно забиндить):
1 = X:552 Y:24
2 = X:625 Y:24
3 = X:688 Y:24
4 = X:756 Y:24
5 = X:824 Y:24
6 = X:1094 Y:24
7 = X:1161 Y:24
8 = X:1228 Y:24
9 = X:1293 Y:24
0 = X:1360 Y:24
^ это клавиша на которую нужен бинд и начальные координаты для каждой клавиши.
X:555 Y:966 это завершающие координаты (они общие для всех биндов).
Заранее благодарен.

2

Re: AHK: click при зажатии и перенос курсора

Надо продолжить массив bind, это для 3 клавиш:

bind := {1:[552,24], 2:[625,24], 0:[1360,24]} 
for k, v in bind
    HotKey, %k%, Action 
Return

Action:  
    MouseClick, , bind[A_ThisHotkey][1], bind[A_ThisHotkey][2], 2
    Sleep 1000
    MouseClick, , 555, 966, 2
    Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

3 (изменено: michael.gg, 2014-12-22 14:24:57)

Re: AHK: click при зажатии и перенос курсора

Вот что получилось:

bind := {1:[552,24], 2:[625,24], 3:[688,24], 4:[756,24], 5:[824,24], 6:[1094,24], 7[1161,24], 8[1228,24], 9[1293,24], 0:[1360,24]}
for k, v in bind
    HotKey, %k%, Action 
Return

Action:  
    MouseClick, , bind[A_ThisHotkey][1], bind[A_ThisHotkey][2], bind[A_ThisHotkey][3], bind[A_ThisHotkey][4], bind[A_ThisHotkey][5], bind[A_ThisHotkey][6], bind[A_ThisHotkey][7], bind[A_ThisHotkey][8], bind[A_ThisHotkey][9], bind[A_ThisHotkey][0]
    Sleep 1000
    MouseClick, , 555, 966, 2
    Return

Но когда пытаюсь запустить, скрипт выдает ошибку

4 (изменено: niceice, 2014-12-22 15:44:48)

Re: AHK: click при зажатии и перенос курсора

michael.gg пишет:

Но когда пытаюсь запустить, скрипт выдает ошибку

Вот без ошибок и простенько но длинно и все как просил.Один раз нажал на 1= клик на X:552 Y:24, 2 раза нажал на 1 = задержка 1 сек. и клик на X:555 Y:966. Ну а дальше думаю сам поймешь.

+ длиннопост

$1::                                       ;клавиша бинда
    KeyWait, 1             
    KeyWait, 1, D T0.3               
    If ErrorLevel
        send {click, 552, 24}        ; 1 = X:552 Y:24
    Else
    {
        sleep 1000                      ;второго нажатия этой же клавиши (в течении секунды после первого)
        send {click, 555, 966, 2}     ; X:555 Y:966 это завершающие координаты
    }
    KeyWait, 1
    Return

$2::
    KeyWait, 2
    KeyWait, 2, D T0.3
    If ErrorLevel
        send {click, 625, 24}
    Else
    {
        sleep 1000
        send {click, 555, 966, 2}
    }
    KeyWait, 2
    Return

$3::
    KeyWait, 3
    KeyWait, 3, D T0.3
    If ErrorLevel
        send {click, 688, 24}
    Else
    {
        sleep 1000
        send {click, 555, 966, 2}
    }
    KeyWait, 3
    Return

$4::
    KeyWait, 4
    KeyWait, 4, D T0.3
    If ErrorLevel
        send {click, 756, 24}
    Else
    {
        sleep 1000
        send {click, 555, 966, 2}
    }
    KeyWait, 4
    Return

$5::
    KeyWait, 5
    KeyWait, 5, D T0.3
    If ErrorLevel
        send {click, 824, 24}
    Else
    {
        sleep 1000
        send {click, 555, 966, 2}
    }
    KeyWait, 5
    Return

$6::
    KeyWait, 6
    KeyWait, 6, D T0.3
    If ErrorLevel
        send {click, 1094, 24}
    Else
    {
        sleep 1000
        send {click, 555, 966, 2}
    }
    KeyWait, 6
    Return

$7::
    KeyWait, 7
    KeyWait, 7, D T0.3
    If ErrorLevel
        send {click, 1161, 24}
    Else
    {
        sleep 1000
        send {click, 555, 966, 2}
    }
    KeyWait, 7
    Return

$8::
    KeyWait, 8
    KeyWait, 8, D T0.3
    If ErrorLevel
        send {click, 1228, 24}
    Else
    {
        sleep 1000
        send {click, 555, 966, 2}
    }
    KeyWait, 8
    Return

$9::
    KeyWait, 9
    KeyWait, 9, D T0.3
    If ErrorLevel
        send {click, 1293, 24}
    Else
    {
        sleep 1000
        send {click, 555, 966, 2}
    }
    KeyWait, 9
    Return

$0::
    KeyWait, 0
    KeyWait, 0, D T0.3
    If ErrorLevel
        send {click, 1360, 24}
    Else
    {
        sleep 1000
        send {click, 555, 966, 2}
    }
    KeyWait, 0
    Return

5

Re: AHK: click при зажатии и перенос курсора

+ длиннокод

$1::                                       ;клавиша бинда
    KeyWait, 1             
    KeyWait, 1, D T0.1               
    If ErrorLevel
        send {click, 552, 24}        ; 1 = X:552 Y:24
    Else
    {
        sleep 10                      ;второго нажатия этой же клавиши (в течении секунды после первого)
        send {click, 555, 966, 2}     ; X:555 Y:966 это завершающие координаты
    }
    KeyWait, 1
    Return

$2::
    KeyWait, 2
    KeyWait, 2, D T0.1
    If ErrorLevel
        send {click, 625, 24}
    Else
    {
        sleep 10
        send {click, 555, 966, 2}
    }
    KeyWait, 2
    Return

$3::
    KeyWait, 3
    KeyWait, 3, D T0.1
    If ErrorLevel
        send {click, 688, 24}
    Else
    {
        sleep 10
        send {click, 555, 966, 2}
    }
    KeyWait, 3
    Return

$4::
    KeyWait, 4
    KeyWait, 4, D T0.1
    If ErrorLevel
        send {click, 756, 24}
    Else
    {
        sleep 10
        send {click, 555, 966, 2}
    }
    KeyWait, 4
    Return

$5::
    KeyWait, 5
    KeyWait, 5, D T0.1
    If ErrorLevel
        send {click, 824, 24}
    Else
    {
        sleep 10
        send {click, 555, 966, 2}
    }
    KeyWait, 5
    Return

$6::
    KeyWait, 6
    KeyWait, 6, D T0.1
    If ErrorLevel
        send {click, 1094, 24}
    Else
    {
        sleep 10
        send {click, 555, 966, 2}
    }
    KeyWait, 6
    Return

$7::
    KeyWait, 7
    KeyWait, 7, D T0.1
    If ErrorLevel
        send {click, 1161, 24}
    Else
    {
        sleep 10
        send {click, 555, 966, 2}
    }
    KeyWait, 7
    Return

$8::
    KeyWait, 8
    KeyWait, 8, D T0.1
    If ErrorLevel
        send {click, 1228, 24}
    Else
    {
        sleep 10
        send {click, 555, 966, 2}
    }
    KeyWait, 8
    Return

$9::
    KeyWait, 9
    KeyWait, 9, D T0.1
    If ErrorLevel
        send {click, 1293, 24}
    Else
    {
        sleep 10
        send {click, 555, 966, 2}
    }
    KeyWait, 9
    Return

$0::
    KeyWait, 0
    KeyWait, 0, D T0.1
    If ErrorLevel
        send {click, 1360, 24}
    Else
    {
        sleep 10
        send {click, 555, 966, 2}
    }
    KeyWait, 0
    Return

Немного поменял значения и получил практически то, что мне нужно! ... но совсем чуть-чуть не так. Просто в получившемся скрипте перенос и дабл клик происходит после двойного нажатия клавиши, а не после нажатия второй раз (т.е. подразумевалось так: нажимаю N первый раз - кликает на первой координате, нажимаю N (в течении секунды после первого нажатия) второй раз - нажимает дважды на второй координате), можно ли это вообще реализовать? Пока буду пользоваться этим, конечно. Спасибо.

6

Re: AHK: click при зажатии и перенос курсора

michael.gg пишет:

нажимаю N (в течении секунды после первого нажатия) второй раз - нажимает дважды на второй координате, можно ли это вообще реализовать?


Твой вариант тоже в принципе возможен, но если ты не уложишься в эту секунду (между первым нажатием на N и вторым нажатием на N), то придется все заново делать, тоесть - прошла секунда и 1 сота секунды и вы нажали на N второй раз то уже 2 клика не выполнится, если я вас правильно понял.Можно сделать так что нажимайте на N (кликает по 1 координате 1 = X:552 Y:24) и держишь, а когда отпускаешь N то кликает 2 раза в конечной координате X:555 Y:966.

7 (изменено: michael.gg, 2014-12-22 20:03:52)

Re: AHK: click при зажатии и перенос курсора

Интересует именно первый вариант, в котором если не нажимаешь в течении секунды - то серия сбрасывается (при нажатии перенос и двойной клик, просто Вы упомянули только двойной клик). Был бы очень благодарен, если бы Вы реализовали такой скрипт

8

Re: AHK: click при зажатии и перенос курсора

michael.gg, избегайте избыточного цитирования. Отредактируйте свой пост.

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

9 (изменено: Irbis, 2014-12-22 23:28:17)

Re: AHK: click при зажатии и перенос курсора

michael.gg, для нормальной работы приведенного serzh82saratov кода должна быть новая версия AHK_L, которой пользуется почти весь форум. Ссылка у него же в подписи.

Исправил ваш дополненный код, убрал ненужное, добавил недостающее. ))

bind := {1:[552,24], 2:[625,24], 3:[688,24], 4:[756,24], 5:[824,24]
       ,6:[1094,24], 7:[1161,24], 8:[1228,24], 9:[1293,24], 0:[1360,24]}
for k, v in bind
    HotKey, %k%, Action 
Return

Action:  
    MouseClick, , bind[A_ThisHotkey][1], bind[A_ThisHotkey][2]
    KeyWait, %A_ThisHotKey%, T0.2
    KeyWait, %A_ThisHotKey%, D T1
    If !ErrorLevel
        MouseClick, , 555, 966, 2
Return

10 (изменено: michael.gg, 2014-12-22 19:49:00)

Re: AHK: click при зажатии и перенос курсора

Это именно то, что мне нужно! Огромное спасибо. А проблема и правда была в версии AHK, извиняюсь за мою глупость. Еще раз всем огромное спасибо!

11 (изменено: michael.gg, 2014-12-22 18:48:50)

Re: AHK: click при зажатии и перенос курсора

В версии, которая была у меня ранее, была функция "#IfWinActive NAME | #IfWinActive", но в новой она видимо не работает. Какая здесь альтернатива?

12

Re: AHK: click при зажатии и перенос курсора

michael.gg, зачем вы опять цитируете предыдущий пост? Редактируйте снова.

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

13

Re: AHK: click при зажатии и перенос курсора

Интересует именно первый вариант, в котором если не нажимаешь в течении секунды - то серия сбрасывается (при нажатии перенос и двойной клик, просто Вы упомянули только двойной клик). Был бы очень благодарен, если бы Вы реализовали такой скрипт

14

Re: AHK: click при зажатии и перенос курсора

В версии, которая была у меня ранее, была функция "#IfWinActive NAME | #IfWinActive", но в новой она видимо не работает. Какая здесь альтернатива?

Hotkey, IfWinActive, ahk_class Notepad
for k, v in bind
    HotKey, %k%, Action 
Hotkey, IfWinActive
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

15

Re: AHK: click при зажатии и перенос курсора

Как это по скрипту выглядеть должно? Просто как только не пробовал - не получилось.

16

Re: AHK: click при зажатии и перенос курсора

Строки:

for k, v in bind
    HotKey, %k%, Action 

заменить на то что выше.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

17

Re: AHK: click при зажатии и перенос курсора

Теперь все просто идеально. Всем огромное спасибо за помощь.