Как сделать чтобы ахк нажимал на кнопку
Я хочу скрипт, где нажатие F1 делает AutoHotkey удерживайте левую кнопку мыши. Затем я хочу, чтобы скрипт отпустил мышь, как только я снова нажму клавишу.
Как я могу это сделать?
Я бы использовал Click down и Click up
клик обычно предпочитается кости потому что она автоматически компенсирует, если пользователь поменял местами левую и правую кнопки мыши через Панель управления системы.
вот однострочный в случае, если кто-то заинтересован:
ммм, я немного заржавел в программировании AHK, но вот что я пробовал, кажется, работает:
Сегодня я расскажу Вам об основах создания и использования скриптов, используя 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, ставим цифру сколько раз:
Ну вот наверное и всё, из основного :) Теперь перед Вами всё ограничено лишь воображением.
Я прошу Вас задавать вопросы, если появятся, а также сказать, надо ли что-то еще добавить в гайд? :)
В програмировании шарю очень мало, в туторах тоже, но нахлебником на брокенкоре не буду, поэтому я покажу на примере, как написать скрипт на ахк начиная с дефолт макросов и биндов - заканчивая аимботом по пикселю. Эти знания полезны для всех игр и не только.
В целом способности у AHK огромные, но никак не нашлось еще подобного задрота что б произвел хороший аимбот также голосовое есп согласно считыванию сведений с звуковой карты.
Insert:: PoshelNaXY() //Биндим функцию на клавишу Insert
PoshelNaXY() // Задаем функцию
SendInput t//Посылаем нажатие клавиш t
Sleep, 250 //Ожидаем 250 миллисикунд пока откроется окно с чатом
SendInput Poshel //посылаем набор букв и клавишу Enter
>
Зачастую, что бы что-то было понятно и для общего комфорта иногда надо добавлять звуковые уведомления в скрипт.
Сделать это можно 2 способами:
SoundPlay, Media\shutdown.wav // проигрывает звук shutdown.waw из папки Media
Send, //посылаем пробел
Sleep,17 //ждем перед повторением цикла
>
ScriptActive = 0
F5::
If ScriptActive = 1 //переменная
ScriptActive = 0
SoundPlay, Media\deactivated.wav
>
else if ScriptActive = 0
ScriptActive = 1
SoundPlay, Media\activated.wav
>
return
далее в функцию суем
If ScriptActive = 1
Работает только в оконном режиме
Loop
PixelGetColor, Color, 18, 729 // cчитывает цвет пикселя по координатам 18,729 и записывает его в переменную Color
if Color = %Color1%
MouseClick, left, 100, 300 //посылаем клик левой кнопкой мыши по координатам 100, 300
>
Важно: координаты пикселей можно узнать с помощью AU3_Spy.exe в папке с AHK
Неплохо работает в кс 1.6, если использовать кастомные модели игроков, то будет работать и в csgo
TColor:=0xFFCC99 //цвета смотрим в AU3_spy.exe
HeadColor:=0x00ED00
CTcolor:=00009E
RButton:: //Если зажата правая кнопка мыши
Sleep 100
Loop
PixelGetColor, Color, 18, 729
if Color = %Color1%
Send
Send
>
GetKeyState,state,RButton,P
if state = U
break
MouseGetPos, mX, mY //записывает координаты мыши в переменные
PixelSearch, nX, nY, mX - 5, mY - 5, mX + 5, mY + 5, 0x00ED00, 100, Fast //nY, nX, mY, mX – углы квадрата на котором считываеются пиксели: 100 – возможное различие цвета, Fast — метод поиска (быстрый)
If ((nX != "") && (nY != ""))
Send,
>
>
Снова, только оконный режим. Рисует маленький квадратик по центру. Можно заменить картинкой используя SplashImage, pic.jpg
Gui Destroy
Gui, +AlwaysOnTop
Gui, Color, fffffa
Winset, TransColor, ff0000
gui, -caption
gui, +border
gui, show, w2 h2, crosshair
С интерфейсом можно и не заморачиваться, на сайте ahk есть AutoGUI, который является визуальным редактором.
LButton - левая кнопка
RButton - правая кнопка
MButton - средняя кнопка
WheelDown - колесико вниз
WheelUp - колесико вверх
XButton1 - боковая четвертая кнопка мышки
XButton2 - боковая пятая кнопка мышки
Space - пробел
Tab - таб
Enter/return - энтер
Escape/Esc - ескейп
Backspace/bs - та штука чтобы стирать символы
Delete/del - Delete
Insert/ins - Insert
Home
End
PgUp - Думаю понятно
PgDn
Up - Стрелочка вверх
Down -Стрелочка вниз
Left - Стрелочка влево
Right - Стрелочка вправо
ScrollLock
CapsLock - также думаю понятно
NumLock
NumpadDiv - "/"
NumpadMult - "*"
NumpadAdd - "+"
NumpadSub - "-"
NumpadEnter - энтер на нампаде
Клавиши когда Numlock выключен:
NumpadDel
NumpadIns
NumpadClear - как Numpad5
NumpadUp
NumpadDown
NumpadLeft
NumpadRight
NumpadHome
NumpadEnd
NumpadPgUp
NumpadPgDn
Клавиши когда NumLock включен:
Numpad0
Numpad1
Numpad2
Numpad3
Numpad4
Numpad5
Numpad6
Numpad7
Numpad8
Numpad9
NumpadDot - "Numpad . "
С F1 по F24
AppsKey - клавиша, вызывающая контекстное меню
LWin - левая клавиша "Windows"
RWin - правая клавиша "Windows"
Control/ctrl
Alt
Shift
Спойлер: Макрос на редакт построек в фортнайт, полезно и для других проектов (Вариант с выключенным автоподтверждением)
g:: // Клавиша на которую работает скрипт
loop, 1 // Повторение цикла
send // Нажатие клавиши на которую редактируется постройка
sleep 10
send
sleep 10
send
>
return
Спойлер: Макрос на редакт построек в фортнайт, полезно и для других проектов (Вариант с включенным автоподтверждением)
g:: // Клавиша на которую работает скрипт
loop, 1 // Повторение цикла
send // Нажатие клавиши на которую редактируется постройка
sleep 10
send
>
return
В этом примере все нажатия клавиш отправляются в активное окно в буквальном виде кроме набора символов поскольку такой синтаксис эмитирует нажатие клавиши Enter благодаря фигурным скобкам, обрамляющим слово Enter.
В следующем примере показан другой пример часто используемых символов. Чтоб он сработал, откройте сразу два Блокнота.
Строка выше посылает Ctrl+C вместе Alt+Tab сопровожденное строчкой "Вставить" и комбинацией Ctrl+V. Символ "^" обозначает клавишу Ctrl, символ "!" обозначает клавишу ALT , это кнопка tab. Дальше за место английской "c" используется наша "с" и вместе латинской "v" мы использовали кириллическую "м" поскольку эти клавиши совпадают расположением и не вызывают глюков в автохоткее. Смотри полный список специальных символов и клавиш для команды Send.
1. Для начала запустите саму AutoIt3 Window Spy из трэя на запущенном скрипте или из меню Пуск -> все программы -> AutoHotkey -> AutoIt3 Window Spy. Окно Window Spy всегда будет находиться поверх остальных запущенных окон эту нужно для удобства работы, что весьма полезно, например, в играх которые, запускаясь разворачиваются на весь экран поверх всех программ.
2. Активизируйте подопытное окошко программы, щелкнув для этого по его заголовку, или используя комбинацию клавиш alt+tab или другим способом.
3. Переместите курсор мыши в ту часть окна, где должно произойти интересующее вас событие с мышью и посмотрите в окно AutoIt3 Window Spy. Запишите координаты показанные в нем ,их видно в строчке On Screen:(на ней отображаются координаты на рабочем столе) и\или из строчки In Active Window: (где отображаются координаты активного окна) в зависимости от того какая область вас интересует на данный момент. На Windows XP можно воспользоваться комбинацией Shift-Alt-Tab чтобы заморозить Window Spy и перейти в него для копирования цифр.
4. Подставите ваши координаты в скрипте после команды MouseClick(команда переводится как МышьЩелчек) через запятую и после обозначения кнопки мыши. Например, как в следующем примере мышка щелкает левой кнопкой в указанные координаты:
Пример:
MouseClick, Left, 30, 20
второй пример записи той же команды с сокращённой командой
MouseClick, L, 30, 20
Разбор полета. MouseClick это команда, используемая для задания щелчков мыши имеющей три параметра прописываемые через запятую. Первый параметр обозначает кнопку мыши(L и Left обозначают левую кнопку, для правой кнопки служит параметр Right или R, Middle или M для средней кнопки с колёсиком, X2 пятая, X1 четвёртая). Второй и третий параметр являются координатами места, где производится щелчок мышки.
Для перетаскивания мышью любых объектов, используется команда MouseClickDrag(переводится МышьЩелчекТащить), эта команда имеет пять полезных параметров разделяемых запятой. Первый это кнопка мыши второй и третий начальные координаты, четвертый и пятый конечные координаты или координаты где мышка отпускается.
Этот скрипт перетаскивает верхнюю левую иконку на рабочем столе в указанные координаты, так что смотрите, чтоб это место (см. координаты) было пусто иначе . надеюсь, у вас есть на шее нечто собственное, я не виноват.
Скрипт снизу запустит рисовалку Майкрософт и нарисует в нем домик. В нем присутствует важная команда WinWaitActive, которая говорит автохоткею дождаться активации указанного вами окна, чтобы продолжить действия скрипта, это очень часто используемая команда обычно прописывается после команды Run. Теперь вам надо узнать, как определять название той программы, которую нужно дождаться. Для этого применяют программу AutoIt3 Window Spy. Научимся искать в ней название требуемой программы, для этого запустите и активизируйте требуемую программу-пациента и посмотрите в окне AutoIt3 Window Spy строку ahk_class. После ahk_class идет название активной программы. Пропишите эту строку через запятую после команды WinWaitActive и затем добавьте ,, 2 и с новой строки if ErrorLevel затем с новой строки return. Дальше уже можете писать то, что требуется выполнить в этой программе.
AutoHotKey представляет собой один из наиболее полезных и простых скриптеров для пользователей, при помощи которого можно реализовать достаточно большое количество функций. Однако многие пользователи не знают о том, как писать скрипты с помощью этой программы, чтобы она действительно была полезной.
Работа с клавиатурой
Специальные клавиши
::бгф::берегись, кинул гранату, это флешка
Имитируем клики мышкой
С кликами мышкой работать несколько сложнее, чем с использованием клавиатуры, так как здесь помимо кнопок есть еще и определенное месторасположение курсора, которое нужно указывать. В связи с этим пользователь сначала должен определить координаты X и Y того места на экране, куда должно отправляться созданное событие. Делается это при помощи встроенной в программу утилиты под названием Active Window Info.
Выглядеть все это может примерно так:
Команда может выглядеть примерно следующим образом:
Таким образом, вы можете экспериментировать с самыми разнообразными командами, и доводить автоматизм различных процедур до самых невероятных вершин.
Читайте также: