Как сделать нажатие мыши в ahk

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

Мне нужен скрипт для AutoHotKey, который имитирует щелчок средней кнопкой мыши, когда я нажимаю ' + LButton .

2 ответа

Один из них сделает это

Первый останавливает работу вашей клавиши ' , а второй - нет, но со вторым вы всегда будете отправлять один ' при нажатии средней кнопки мыши.

Если вы используете вторую версию, обратите на это особое внимание (это не имеет значения для первой версии, потому что ваш ключ ' будет отключен).

Обязательно очень быстро отпустите ' при использовании этой горячей клавиши. Если вы удерживаете ее достаточно долго, чтобы сработала функция повторения клавиш Windows, вы выйдете из режима средней прокрутки мыши.
Итак, чтобы использовать его, нажмите (очень короткое удерживание) ' и одновременно (немного позже) нажмите (или удерживайте) LButton и отпустите ' .
Затем вы можете продолжать удерживать LButton , если удерживание - это то, что вы хотели сделать.

Вы можете легко использовать LButton с любой клавишей, но сначала нужно нажать LButton. Имейте в виду, что 'не является управляющей клавишей, поэтому, если вы поместите ее перед щелчком мыши, она будет работать, но может вызвать проблемы. Если вы решите использовать его таким образом, вы должны проверить, не мешает ли он вашей работе.

Итак, LButton + ' будет:

Так, как вы хотели, с помощью '+ LButton (используйте символ ~, чтобы предотвратить блокировку клавиши'):

Лучше / быстрее будет использовать левый клик , а затем правый клик (клавиатура не требуется):

Часто хочется автоматизировать что-то так, чтобы посылать нажатия и клики прямо в свёрнутое окно. Пришло время сделать это, на AutoHotkey.

Что тут происходит?

Основная логика на F4, то есть в clicker_heroes_background_spam() .

Чтобы это всё работало хорошо и никак не пересекалось с остальным взаимодействием с компьютером, используются некоторые техники.

Для примера, вот так я пользовался в World of Warcraft, чтобы просто держать кнопку скила (1, файрбол на маге) и чтобы он сам кастовался. Когда в нужный момент мне было необходимо моментально скастовать моментальный файрбласт (хоткей Alt+1), я просто не отпуская 1 до-зажимал Alt, режим не обращает внимания на модификаторы, поэтому теперь в игру начинал прилетать зажатый хардверно Alt и тот же самый спам 1, спел кастовался. Очень удобно. Топ дпс все дела, просто зажав и не отпуская одну кнопку ) Там ещё макросы внутри игры помогали, чтобы, если надо, в эту одну кнопку более-менее умную ротацию заклинаний встроить.

Сегодня я расскажу Вам об основах создания и использования скриптов, используя AutoHotKey! :)
В этой ветке много макросов на Bloody, однако лично мое мнение, что блуди не удобная штука. Ну тут каждому на свой вкус.

Далее по тексу саму программу и скриптовый язык AutoHotKey я буду называть AHK или АХК.

Итак, приступим!

Качаем >> autohotkey отсюда

Создаем пустой скрипт.


(также будет работать, если переименовать .txt в .ahk )

Что же нам делать дальше?
Давайте рассмотрим две ситуации! :) Мы можем создать скрипт, который будет одноразово при запуске выполнять какие-то действия. Например, при запуске .exe выполняется действие по копированию ярлыка из одного места в другое. В таком случае нам не нужно привязывать какую-либо кнопку к этому действию. Второй же вариант, когда мы запустили скрипт, затем нажали кнопку и у нас произошло то же самое действие.

После того как Вы внесли какой либо код в скрипт, сохраняем его и запускаем от имени администратора.

Давайте рассмотрим основные команды (те, которые я чаще всего использую).

В АХК конец предыдущей команды обозначается концом прошлой команды, переносом на следующую строку, либо завершением . Я представляю насколько непонятно это выглядит, однако я думаю чуть дальше вы поймете.

В первую очередь я Вам советую в скрипт вписывать несколько строк, которые в случае Вашей ошибки\недоработки позволят отключать скрипт. Например, если Вы поставили нажиматься Alt+F4 каждые 0.1 секунд. Короче если вы не можете остановить скрипт мышкой, чтоб мы могли это сделать кнопкой.

Что это такое? При нажатии на F11 у нас будет выполнена команда pause, которая запаузит скрипт. При повторном нажатии скрипт продолжит работу с того места, где закончил. При нажатии F12 соответственно скрипт будет перезагружен совсем. :) На заметку: если вы изменили код скрипта, сохранили, то при нажатии на f12 будет загружен уже измененный скрипт. Это удобно когда вы только создаете\отлаживаете скрипт.

Эту строку я советую тоже вставлять во все скрипты, где у Вас будут использоваться координаты. (ну например нажать мышкой на крестик в ворде :) ). Дело в том, что в этом случае координаты будут смотреться не относительно вашего разрешения(монитора), а относительно текущего окна. Т.е. если у вас игра\ворд запущены не в полное окно, то вы можете их двигать куда угодно, координаты будут одинаковы.

Далее. Привязка действий к клавишам. Существует список кучи модификаторов. Я приведу основные:

При нажатии сочетания ALT и цифры 1 у нас выведется пустое окошечко.
Таким же образом привязываются абсолютно все действия.
Если у Вас больше одной команды, то я советую заключать их в <>.
Как это будет выглядеть?

В данном случае у нас будут появляться два окошечка последовательно. Но это лишь пример.

Все знаки пунктуации нужно заключать в <>.
Теперь при нажатии Ctrl+1 у нас отправится объява в чат, причем скорее всего мы даже не успеем заметить как открылся чат.
При нажатии Ctrl+2 мы гарантированно изменим чат на Общий, после чего напишется строка и остановится на "Цена:" но не отправится, там мы сможем ввести цену. Ну я надеюсь суть вы поняли :)

Пример: Нам нужно зажать шифт на 2 секунды.
Здесь мы используем 2 новых штучки.
Sleep - данная команда является просто таймером-разделителем между командами.
Формат:
Sleep, 1000 - это будет задержка 1 секунда
Нажатие и "отпускание" клавиши.
- данная "клавиша-команда" зажмет клавишу W.
- соответственно отожмет клавишу S.

При нажатии на Пуск+1 у нас зажмется шифт на 2 секунды.

Теперь попробуем разобраться с мышкой.

При нажатии на Альт+NumPad0 у нас произойдет "клик" левой кнопкой по координатам 5 5.
При нажатии Альт+NumPad1 у нас произойдет клик правой кнопкой по 10 10, через секунду правая кнопка зажмется на полсекунды.


Как нам собирать эти координаты? Я пользуюсь двумя способами. Первый: запускаем любой скрипт, в трее нажимаем правой кнопкой, потом Window Spy. Откроется окошечко

Нас интересует строка In Active Window:

Второй: использовать код, который будет показывать нам координаты при нажатии на кнопочку.

Разберемся с циклами. То есть со случаями, когда нам нужно одно и то же действие повторить много раз.

Например, нам нужно кормить кота каждые пять минут.
после ; мы можем писать комментарии.

В случае, когда нам нужно повторить действие определенное количество раз, просто после Loop, ставим цифру сколько раз:

Ну вот наверное и всё, из основного :) Теперь перед Вами всё ограничено лишь воображением.
Я прошу Вас задавать вопросы, если появятся, а также сказать, надо ли что-то еще добавить в гайд? :)

Клик идет на текущую позицию мыши или в определенный пиксель?

Нажимаешь 4. Жмет F6 и кликает там где мышь.

Juice1992

Новичок

Juice1992

Новичок

Клик идет на текущую позицию мыши или в определенный пиксель?

Нажимаешь 4. Жмет F6 и кликает там где мышь.

zlo-kazan

Скриптер

Juice1992

Новичок

kaster

Мой Аватар, он лучший самый

CreatoR

Must AutoIt!

Ещё добавлю, что для autohotkey есть подсветка:

[box title=Пример кода на Autohotkey][code=autohotkey]Loop[/code][/box]

P.S
Juice1992
Ещё одно.
Предупреждение За нарушение правил форума (пункт Б.5):

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

"[Мышь, клавиатура] Скрипт с AHK в Autoit" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Администратор форума.

Новичок

$key="4" ; Клавиша для нажатия
hotkeyset($key, "click") ; Хоткей. При нажатии на 4 будет выполнятся функция Click

hotkeyset("^q", "_quit") ; Горячие клавиши для завершения скрипта. Ctrl+Q

; Бесконечный цикл, чтобы скрипт сразу не закрылся.
While 1
sleep(10)
WEnd


Func click()
Send("") ; Нажатие F1
MouseClick("left") ; Клик мыши в текущую позицию
EndFunc

; функция выхода из скрипта
Func _quit()
Exit
Endfunc

А как сделать,чтобы при нажатии F1 выполнялось множественное нажатие?
Скрипт выше был описан.
Но,если 4ку заменить на F1,то скрипт не выполняется.
Так же пробовал писать.
П.С. да я нуб и впервые с этой прогой столкнулся.=)

zlo-kazan

Скриптер


Подставил . в windows срабатывает нормально, в бокноте и т.д. работает. Возможно в игре на F1 уже есть своя горячая клавиша?

zlo-kazan

Скриптер


Чтобы заработало нужна библиотека IsPressedEx.au3. Качаем архив и распаковываем в C:/. /AutoItv3/include/

Новичок


Подставил . в windows срабатывает нормально, в бокноте и т.д. работает. Возможно в игре на F1 уже есть своя горячая клавиша?

На F1 там пустота,т.е. скил или предмет на F1 ты устанавливаешь сам.
Там есть батлмод,т.е. ты сам назначаешь 4 строки клавишь, которые будут у тебя работать.
С ахк проблем не было: ставишь клавишу для нажатия F1 и скрипт на повторение зажатия-отпускания F1 и клик левой кнопкой.
Самый прикол,что клик левой кнопкой работает,а вот нажатие кнопки игнорится,но множественное нажатие F1, при выходе из игры, производится в windowsе.

Читайте также: