Управляем системой через AHK | Создаем, открываем папки и двигаем окна одной кнопкой

Пришло время рассмотреть, как можно ускорить работу с системой через AHK. Для себя я выделил следующие действия:

  1. изменение положения открытого окна (у меня 3 монитора, и каждый раз руками двигать какое-то окно в удобное место — боль невыносимая)

  2. автоматическое создание нескольких папок с определенным названием

  3. открытие определенных папок в определенной директории одной кнопкой

  4. копирование имени файла

Приступим!

Изменение положения открытого окна

Двигать окна руками и выставлять положение каждый раз — выбор слабых. Сейчас сделаем так, чтобы при нажатии кнопки активное окно сразу вставало, куда надо. Я решил сделать три варианта положения окна: на весь экран, половинка слева, половинка справа (и так для трех мониторов). Собсна, пишем такую функцию:

MoveWindow_Main_Left(width, height) {
 WinMove, A, , 0, 0, width, height
 ToolTip, %width%x%height%
 Sleep, 500
 ToolTip,
 Return
}

А затем вызов функции:

Numpad4::
MoveWindow_Main_Left(1280, 1400)
return

Что к чему? Функция:

WinMove, A, , 0, 0, width, height — тут на месте 4 и 5 аргумента (в данном примере 0 и 0) пишем смещение (положение) окна. Отсчет ведется от левого верхнего угла основного монитора. Тут у нас функция для «половинки слева», поэтому смещение по X и Y равны нулю

Вызов функции:

MoveWindow_Main_Left(1280, 1400) — тут прописываем аргументы, а именно — размер окна. Тут, скорее всего, придется подгонять ручками. У меня монитор 2560×1440, поэтому для «половинки» делим ширину на 2, а высоту оставляем исходной (хотя опытным высоту поставил не 1440, а 1400)

Подробное пояснение:

c9d357611ada2faed12580e878790b39.png

И так пишем для всех мониторов. Мой пример можно посмотреть тут. Добавлю лишь, что если у вас есть монитор, стоящий слева (или сверху) от основного, то положение окна будет отрицательным (т.к. отсчет у нас идет от левого верхнего угла основного монитора):

055029d7915a4284d161a25c5f94291a.png

Теперь одной кнопкой (у меня это 9 кнопок нумпада) можно двигать окна по всем мониторам — ну не красота ли?

Автоматическое создание папок

У меня структура проекта выглядит примерно так:

[ИМЯ_ПРОЕКТА]

[IN]

[OUT]

[NUKE]

В папке IN хранятся все исходники, в OUT все рендера, а в NUKE все файлы проектов по шотам. Годы идут, новые проекты начинаются, старые сдаются, но неизменно одно — иерархия проекта. А значит, это можно автоматизировать :). На этот раз не будет чего-то интересного, просто последовательно вызываем функцию для создания папок:

f11::
CreateFolder("IN")
CreateFolder("NUKE")
CreateFolder("OUT")
CreateFolder(Folder_Name)
{
 Send, ^+n
 Send, %Folder_Name%
 Send, {Enter}
 Sleep, 200
}
return

96a42b52c9cf73278c923dc4bf60633e.png

Итог — три папки.

Открытие определенных папок в определенной директории одной кнопкой

Частенько во время работы надо открывать папку с исходниками, чтобы закинуть туда что-то новое и потом затянуть в проект. Или открыть папку с рендером, чтобы скинуть посмотреть кому-то. Но каждый раз открывать проводник и идти до нужной директории руками может быть утомительно, скучно, грустно и медленно. Исправим!

В самом начале скрипта объявим переменную для рабочей директории глобальной:

global dir_path

c259c252db5f61058440914c2cf3b13b.png

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

f12::
InputBox, dir_path, dir path, Enter dir path,,,,,,,, %dir_path%
return

InputBox — вызов окна

1 аргумент — переменная, в которую запишется занчение

2 аргумент — имя всплывающего окна

3 аргумент — надпись внутри окна

Более подробное разъяснение:

b75b978ba7f4e1fc06eaad58da437f3f.png

При исполнении кода, появляется такое окно с полем для ввода:

eae4eb429d8fc7bc04587ae0a2cdc94c.png

Сюда вставляем прям из проводника путь до папки проекта. Ну и все, теперь можно сделать скрипт для открытия любой папки в этой директории:

f1::
global dir_path
open = \IN
dir_path_open = %dir_path%%open%
Run, %dir_path_open%
return

open = \IN — сюда пишем папку, которую надо открыть

global dir_path — это нужно, чтобы переменной можно было воспользоваться внутри скрипта

dir_path_open = %dir_path%%open% — объединяем рабочую директорию и папку, которую надо открыть, в один путь

Run, %dir_path_open% — открываем итоговый путь

Так как у меня в основном 3 папки, выглядит это все примерно так:

7d3eed53d3764ec6c22cb4ae9c641254.png

Копирование имени файла

Осталась мелочь. Периодически (часто, на самом деле) мне нужно копировать имя файла. Сначала, я делал так: ПКМ по файлу — переименовать, ctrl+c. Через какое-то время стал выделять файл, F2 (хоткей для переименования) и ctrl+c. Быстрее, но все равно неудобно. Как всегда, сделаем это нажатием кнопки:

f10::
Send, {f2}
Send, ^c
Send, {Enter}
return

Заключение

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

1fbf88d813874bd583f6fc061d943785.png

На данный момент это все мои «лайфхаки» через AHK. Возможно, через какое-то время будут новые — обязательно приведу в человеческий вид и поделюсь. Так что, не прощаюсь!

P.s. мой полный скрипт для AHK можно скачать тут

Мой телеграмм канал с полезными инструментами для работы в Nuke и не только:

https://t.me/STD_VFX

© Habrahabr.ru