Управляем системой через AHK | Создаем, открываем папки и двигаем окна одной кнопкой
Пришло время рассмотреть, как можно ускорить работу с системой через AHK. Для себя я выделил следующие действия:
изменение положения открытого окна (у меня 3 монитора, и каждый раз руками двигать какое-то окно в удобное место — боль невыносимая)
автоматическое создание нескольких папок с определенным названием
открытие определенных папок в определенной директории одной кнопкой
копирование имени файла
Приступим!
Изменение положения открытого окна
Двигать окна руками и выставлять положение каждый раз — выбор слабых. Сейчас сделаем так, чтобы при нажатии кнопки активное окно сразу вставало, куда надо. Я решил сделать три варианта положения окна: на весь экран, половинка слева, половинка справа (и так для трех мониторов). Собсна, пишем такую функцию:
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)
Подробное пояснение:
И так пишем для всех мониторов. Мой пример можно посмотреть тут. Добавлю лишь, что если у вас есть монитор, стоящий слева (или сверху) от основного, то положение окна будет отрицательным (т.к. отсчет у нас идет от левого верхнего угла основного монитора):
Теперь одной кнопкой (у меня это 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
Итог — три папки.
Открытие определенных папок в определенной директории одной кнопкой
Частенько во время работы надо открывать папку с исходниками, чтобы закинуть туда что-то новое и потом затянуть в проект. Или открыть папку с рендером, чтобы скинуть посмотреть кому-то. Но каждый раз открывать проводник и идти до нужной директории руками может быть утомительно, скучно, грустно и медленно. Исправим!
В самом начале скрипта объявим переменную для рабочей директории глобальной:
global dir_path
На отдельную кнопку f12 я забил код, который спрашивает вашу рабочую директорию:
f12::
InputBox, dir_path, dir path, Enter dir path,,,,,,,, %dir_path%
return
InputBox
— вызов окна
1 аргумент
— переменная, в которую запишется занчение
2 аргумент
— имя всплывающего окна
3 аргумент
— надпись внутри окна
Более подробное разъяснение:
При исполнении кода, появляется такое окно с полем для ввода:
Сюда вставляем прям из проводника путь до папки проекта. Ну и все, теперь можно сделать скрипт для открытия любой папки в этой директории:
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 папки, выглядит это все примерно так:
Копирование имени файла
Осталась мелочь. Периодически (часто, на самом деле) мне нужно копировать имя файла. Сначала, я делал так: ПКМ по файлу — переименовать, ctrl+c. Через какое-то время стал выделять файл, F2 (хоткей для переименования) и ctrl+c. Быстрее, но все равно неудобно. Как всегда, сделаем это нажатием кнопки:
f10::
Send, {f2}
Send, ^c
Send, {Enter}
return
Заключение
Себе я обклеил все используемые кнопки на клавиатуре, чтобы было более наглядно и не забывал, что где
На данный момент это все мои «лайфхаки» через AHK. Возможно, через какое-то время будут новые — обязательно приведу в человеческий вид и поделюсь. Так что, не прощаюсь!
P.s. мой полный скрипт для AHK можно скачать тут
Мой телеграмм канал с полезными инструментами для работы в Nuke и не только:
https://t.me/STD_VFX