Как стать автором
Обновить

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

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров634

Пришло время рассмотреть, как можно ускорить работу с системой через 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 и не только.

Теги:
Хабы:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань