Управляем системой через 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)

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

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

Теперь одной кнопкой (у меня это 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


ссылка на оригинал статьи https://habr.com/ru/articles/829370/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *