1287

Автоматизация рутины с AutoHotKey

Здравствуйте! Сегодня я хочу познакомить вас с замечательным инструментом автоматизации под названием AutoHotKey!

С ним вы сможете:

1) Программировать действия мышкой, нажатия клавиш;

2) Быстро заполнять однотипные бланки, формы;

3) Ставить на горячие клавиши заклинания, кастовать их в течение миллисекунд после перезарядки (что бывает критично);

4) Автоматизировать какие-либо рутинные действия и идти пить кофе.


Сразу предупрежу - писать скрипты поначалу очень капризное занятие. Будут такие ситуации, что код почему-то не работает, и вам придется думать полдня где вы совершили ошибку. Листать документацию. Просить помощи в интернете. Проверять синтаксис.

Однако вложенное время окупается с лихвой. При достаточном освоении AutoHotKey сэкономит вам кучу времени и нервов.


В данном посте я дам лишь описание конкретных примеров применения скриптинга на практике и расскажу про те подводные камни, которые не описаны в документации.


Итак, начнем. Ссылка на программу:

https://autohotkey.com/download/ahk-install.exe (3 Мб)


Написание кода ведется в файлах *.ahk, которые редактируются обычным блокнотом.

Создайте текстовый файл и измените его расширение.

Затем откройте его с помощью блокнота. Теперь вы готовы к работе!

Перейдем к практике.

Напишите


F1:: Send Здравствуйте{!}


Сохраните изменения. Запустите скрипт двойным кликом. Встаньте на какое-нибудь текстовое поле и нажмите F1. Первый опыт скриптинга у вас уже есть.

!, #, ^, +  это служебные знаки. Для того, чтобы напечатать их, нужно оформить их скобками.

Для выключения скрипта нажмите на его иконке возле часов, затем Exit.


Краткое введение закончено, дальше пойдут лишь небольшие советы.


1) Добавьте к скрипту

F12:: Suspend, Toggle

, чтобы ставить/снимать его с паузы клавишей F12


2) Чтобы горячая клавиша не блокировалась скриптом и выполняла также свою обычную функцию, пишите ~.

~F3:: Send {Down}


3)

1::

Send {Tab 5}привет{Enter}  ;пять раз таб, привет, энтер

Click 100, 100  ;клик по заданным координатам, отсчитывается слева-сверху

Click, 2  ;клик два раза

Click right  ;клик правой кнопкой

Send {Down}{Left}{Up}

Send {PgUp}{PgDn}

Send {Space}{Del}

Send {b down}

Sleep, 1000  ;зажать b, ждать 1 секунду, отпустить

Send {b up}  

Return  ;конец списка команд, вызываемых кнопкой "1"


Полный список клавиш смотрите в документации. Пуск -> AutoHotKey -> AutoHotKey HelpFile -> Mouse and Keyboard -> Send


4)

^F1::  ;при нажатии на Ctrl+F1

MouseGetPos, X, Y  ;выдаст текущие координаты курсора

MsgBox, %X%, %Y%

Clipboard = %X%, %Y%  ;и скопирует их в буфер обмена

Return


Обратите внимание - по умолчанию координаты отсчитываются от левого верхнего угла активного окна.

Можно заставить скрипт отсчитывать координаты от левого верхнего угла экрана, предварительно прописав:


CoordMode, Mouse, Screen


Вернуться обратно:


CoordMode, Mouse, Window


5) Модификаторы: "^" = Ctrl, "+" = Shift, "!" = Alt.

Send !{Tab}  ;Alt+Tab

Send +{Home}

Send ^{vk56}  ;Ctrl+V


Почему именно {vk56}, а не {v}? Потому что ^{v} будет работать только при английской раскладке, при русской пришлось бы написать ^{м}.

Однако без всего это можно обойтись, обратившись к клавише через ее виртуальный код.


Список наиболее часто используемых виртуальных кодов:


Send ^{vk43} ;Ctrl+C

Send ^{vk56} ;ctrl+V

Send ^{vk58} ;ctrl+X

Send ^{vk41} ;ctrl+A

Send ^{vk5A} ;ctrl+Z

Send ^{vk53} ;ctrl+S

Send ^{vk51} ;ctrl+Q

Send ^{vk57} ;ctrl+W

Send ^{vk52} ;ctrl+R

Send ^{vk42} ;ctrl+B

Send ^{vk4E} ;ctrl+N

Send ^{vk4C} ;ctrl+L


Аналогично, если вы хотите сделать буквенную клавишу горячей, лучше обратиться к ней через ее виртуальный код:


vk56::Send {Click}  ;посылает клик при нажатии на "м" или "v".


Полный список виртуальных кодов клавиш: http://www.kbdedit.com/manual/low_level_vk_list.html


6) Быстро разворачиваем фотографии правильной стороной.

В стандартной утилите просмотра фотографий Windows есть опция "Развернуть картинку"

NumPad1:: Send ^{,}

NumPad2:: Send ^{.}


Обратите внимание, что эти клавиши работают только при английской раскладке.

Английские точка с запятой расположены справа от клавиши "m" и являются отдельными клавишами. Русская точка и запятая находятся слева от шифта и объединены в одну клавишу.

И еще: чтобы нажать Numpad1 и 2, должна гореть лампочка NumLock.


7)

~1::

Loop,

{

If A_Cursor=Unknown

Click

Sleep, 20

If GetKeyState("2","p")=1

Break

}

F12::Suspend, Toggle


При нажатии кнопку 1 скрипт будет посылать клики, если заметит, что курсор принял форму руки. Нажатие кнопки 2 (и непродолжительное ее удерживание) разрывает цикл.

Осторожно, если вы наведете мышь на ссылки браузера при активном цикле, он вам их откроет!


Таким образом я автоматизировал прохождение флеш игры Deanimator.

Достаточно навести мышкой на зомби, и профессор сам стреляет, да еще и со скоростью пулемета!

http://www.de-animator.com/deanimator.swf

8)

1::

MouseGetPos, xpos, ypos

MouseClick, left, 130, 70, , 0 ; [WhichButton , X, Y, ClickCount, Speed, D|U, R]

MouseMove, xpos, ypos, 0

Return


Скрипт кликает карточку горохострела вверху экрана и вовзвращает курсор на место.

Цифры 0 в обоих операторах отвечают за скорость перемещения курсора, то есть мгновенно.

Можно закрепить за клавишей 1 горохострел, за 2 - подсолнух и т.д., и быстро без напряга сажать растения.

(координаты 130, 70 вам, скорее всего, придется поменять. Воспользуйтесь пунктом 4)

9) Допустим, вам нужно поставить звездочку или другой символ в конце каждой строки.

NumPad1::

Send {*}{Up}{End}

Return


Ставим звездочку, переходим вверх, идем в конец строки. Готово!

Если нужно удалить символ в конце каждой строки, пишем:


NumPad1::

Send {Backspace}{Up}{End}

Return


Если нужно удалить два символа:


NumPad1::

Send {Backspace 2}{Up}{End}

Return


10) Нужно щелкать мышью как можно чаще? Не проблема!

~1::

While GetKeyState("1","p")=1

{

Click

Sleep 20

}

Return


Данный скрипт посылает клики каждые 20 мс при нажатой клавише "1".

Или можно так. Посылаем клики до тех пор, пока не будет нажата клавиша "2".


1::

While GetKeyState("2","p")=0

{

Click

Sleep 20

}

Return



Ладно, на этом пока все. Будут вопросы - обращайтесь!

Можно даже сделать так: пишите какие типичные рутинные операции нужно разобрать, и они появятся в следующем посте!


P.S.

/*

Многострочный комментарий.

Для выключения участков кода

*/

Лига образования

6.8K постов22.9K подписчика

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако мы хотим, чтобы соблюдались следующие условия:


ДЛЯ АВТОРОВ:


Приветствуются:

-уважение к читателю и открытость

-желание учиться

Не рекомендуются:

-публикация недостоверной информации


ДЛЯ ЧИТАТЕЛЕЙ:


Приветствуются:

-конструктивные дискуссии на тему постов

Не рекомендуются:

-личные оскорбления и провокации

-неподкрепленные фактами утверждения


В этом сообществе мы все союзники - мы все хотим учиться! :)

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

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

,

раскрыть ветку (13)
0
Автор поста оценил этот комментарий

^F2::          ;Ctrl+F2

Run, http://www.google.com

Run, http://www.pikabu.ru

Return

раскрыть ветку (12)
1
Автор поста оценил этот комментарий
спасиб!
0
Автор поста оценил этот комментарий

А как прописать одновременное нажатие клавиш win + (стрелочка вверх) (мне это нужно для открытия приложения на все окно экрана, спасибо.

раскрыть ветку (10)
0
Автор поста оценил этот комментарий
Send #e holds down the Win key and then presses the E key

https://autohotkey.com/docs/commands/Send.htm


Для вас будет

Send #{Up}


Есть еще модификаторы:

!{Up}  альт вверх

+{Up} шифт вверх

^{Up} ктрл вверх

раскрыть ветку (9)
1
Автор поста оценил этот комментарий

Спасибо! Вы меня выручили!)

0
Автор поста оценил этот комментарий

Ни как у меня не получается развернуть приложение на весь экран. Как я клавишу Win не прописывал. Не работает(

раскрыть ветку (7)
0
Автор поста оценил этот комментарий

1. Какая винда?

2. Если просто руками нажимаете Win+вверх, разворачивает?

3. Покажите свой код.

0
Автор поста оценил этот комментарий

WinMaximize "A" ; Развернуть активное окно

WinMaximize "Chrome" ; Развернуть хром

; Для AHK 1.1 кавычек не надо.

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

WinMaximize - команда не опознана. Пилот у меня  2.38 версии

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Пилот? У вас не Autohotkey стоит, а другое что-то?

И покажите свой код. Попробовал WinMaximize, прекрасно все разворачивает.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

wait 3s


move 70, 1299 abs // Активировать левое окно

wait 100

left 70, 1299 abs


wait 200


////// Проверка выбора папки ~~~ Для компресии //////


move 59, 88 abs // Переход на диск D

wait 100

left 59, 88 abs


move 261, 138 abs

if_not 261, 138 11763773 abs

wait 500


move 1244, 142 abs // Звездочка *

wait 100

left 1244, 142 abs

wait 1000

move 1335, 328 abs // ~~~ Для компресии

wait 100

double_kleft 1335, 328 abs

wait 500

move 70, 1299 abs // Активировать левое окно

wait 100

left 70, 1299 abs


End_if


wait 500


////// Проверка W в ПАПКЕ //////


move 22, 196 abs

if 22, 196 8992256 abs

wait 200


End_script //// ОСТАНОВКА СКРИПТА

End_if


wait 500


move 40, 197 abs // Войти в верхнюю папку

wait 100

double_kleft 40, 197 abs


wait 500


////// Первая переименовка файлов. Выбор верного шаблона TC //////


Sendex ^a // Ctrl + a

wait 200

Sendex ^m

wait 400

move 2482, 131 abs // Выбор скрипта TC

wait 100

left 2482, 131 abs

wait 1000

move 2447, 246 abs // Имя папки -имя файла

wait 100

left 2447, 246 abs

wait 100

Sendex {Enter}

wait 200

Sendex {Esc}


move 26, 182 abs // Выход из папки

wait 100

double_kleft 26, 182 abs


wait 500


Sendex {Down} // Переход на нижнюю папку

wait 500

Sendex {Enter}


wait 500


/////////////////////////////////////////////////////////////

////// Проверка W в ФАЙЛАХ ////// Переименовка файлов //////

/////////////////////////////////////////////////////////////


Repeat 3 ///// Повторить переименовку несколько раз


move 22, 197 abs

if_not 22, 197 6422582 abs


Sendex ^a // Ctrl + a

wait 200

Sendex ^m

wait 200

Sendex {Enter}

wait 200

Sendex {Esc}


wait 500


End_if


////// Проверка завершена


move 26, 182 abs // Выход из папки

wait 100

double_kleft 26, 182 abs


wait 200


Sendex {Down} // Переход на нижнюю папку

wait 500

Sendex {Enter}


wait 500


End_Repeat


/////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////


move 26, 182 abs // Выход из папки

wait 100

double_kleft 26, 182 abs


////// Проверка выбора папки ~~~ Для компресии //////


move 261, 138 abs

if_not 261, 138 11763773 abs

wait 500


move 1244, 142 abs // Звездочка *

wait 100

left 1244, 142 abs

wait 500

move 1335, 328 abs // ~~~ Для компресии

wait 100

double_kleft 1335, 328 abs

wait 500

move 70, 1299 abs // Активировать левое окно

wait 100

left 70, 1299 abs


End_if


////// Проверка W в названии ПАПКИ //////


move 22, 196 abs

if_not 22, 196 8992256 abs


Sendex ^a // Ctrl + a

wait 200

Sendex ^m

wait 200

move 2493, 132 abs // Выбор скрипта TC

wait 100

left 2493, 132 abs


wait 1000


move 2466, 231 abs // Выбор скрипта W

wait 100

left 2466, 231 abs


wait 500


Sendex {Enter}

wait 200

Sendex {Esc}


wait 500


End_if


End_script //// ОСТАНОВКА СКРИПТА

0
Автор поста оценил этот комментарий

WinMaximize - команда для языка AutoHotKey. Вы пользуетесь пилотом, я в нем не шарю.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Все равно спасибо)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества