Ahk как сделать окно активным

Добавил пользователь Владимир З.
Обновлено: 18.09.2024

В програмировании шарю очень мало, в туторах тоже, но нахлебником на брокенкоре не буду, поэтому я покажу на примере, как написать скрипт на ахк начиная с дефолт макросов и биндов - заканчивая аимботом по пикселю. Эти знания полезны для всех игр и не только.
В целом способности у 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

Сегодня я расскажу Вам об основах создания и использования скриптов, используя 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, ставим цифру сколько раз:

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

В этом примере все нажатия клавиш отправляются в активное окно в буквальном виде кроме набора символов поскольку такой синтаксис эмитирует нажатие клавиши 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.

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

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

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

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

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