Разве это не очень раздражает, как, по крайней мере, в Windows, любое окно может появиться в любом месте экрана? Эта ежедневная случайность действует вам на нервы, и вы бы предпочли иметь больший контроль над размещением окон на экране? Ну, теперь вы можете, благодаря AutoHotKey.

В этом уроке мы увидим, как вы можете решить эту проблему с помощью скрипта AutoHotKey. Мы построим его так, чтобы он двигался Любые окно в центр экрана при нажатии клавиши. Звучит мило? Давайте посмотрим, как это делается!

Как настроить горячую клавишу для центрирования окна с помощью AutoHotKey

Половина успеха при создании скрипта заключается в том, чтобы придумать, как он будет работать, даже не набрав ни одного символа. Итак, давайте составим на простом английском такой план действий, который потом «мутируем» в сценарий.

«Проблема» Windows

Windows (как в «прямоугольных штучках на наших экранах», а не в ОС) имеет тенденцию появляться в любом месте экрана. Это отвлекает, и это также может раздражать, когда это повторяется неоднократно. Особенно при работе с несколькими запросчиками, которые появляются в разных местах, ожидая ввода пользователя.

instagram viewer

Решение проблемы

Помимо отправки нажатий клавиш и щелчков мыши в любое окно, AutoHotKey также может манипулировать ими. Мы видели в прошлом, как вы можете используйте AutoHotKey, чтобы закрепить окна «всегда сверху» с помощью сочетания клавиш. На этот раз, однако, мы воспользуемся возможностями манипулирования окнами AutoHotKey, чтобы:

  1. "Прочитать" идентификатор активного окна.
  2. Также «прочитайте» его размеры (ширину и высоту).
  3. "Прочитайте" размеры монитора.
  4. Объедините размеры монитора и окна, чтобы вычислить оптимальные координаты для представления указанного окна в центре экрана.
  5. Переместите окно в эти координаты.

Наконец, мы сопоставим вышеуказанное с ярлыком. Таким образом, вы можете называть его «по запросу», а не применять его на все windows, что может мешать полноэкранным приложениям и играм.

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

Во-первых, настройка горячей клавиши

Мы упомянули, как мы сопоставим функцию, которую создадим, с ярлыком. Однако, вероятно, будет лучше, если мы начнем с этой части, чтобы убрать ее с дороги.

Начните с загрузки установщика с Официальный сайт AutoHotKey. Выберите «текущую» версию вместо бета-версии v2 или устаревшей версии 1.0. Затем установите его на свой ПК.

Запустите проводник (самый быстрый способ — с помощью комбинации клавиш Windows + E) и перейдите к пути, по которому вы хотите создать свой скрипт. После установки AutoHotKey в контекстном меню появятся новые параметры. Итак, щелкните правой кнопкой мыши пустое место окна проводника и выберите Создать > Скрипт AutoHotKey.

Дайте файлу сценария имя, а затем щелкните его правой кнопкой мыши и редактировать Это. Если вы не используете удобное для кода приложение для редактирования текста, например Visual Studio Code или Notepad++, используйте Блокнот Windows. Избегайте таких редакторов, как Wordpad, которые могут добавить бесполезный (для этой цели) синтаксис в ваш «код».

В выбранном вами редакторе вы увидите, что в вашем скрипте AutoHotKey уже есть несколько предварительно заполненных строк вверху. Они нужны для стабильности и совместимости. Их можно настроить, но оставьте их такими, какие они есть для этого урока.

«Переместите» их на две-три строки ниже и введите ярлык, который запустит вашу функцию. Вы можете создать комбинацию клавиш, используя «+» для Shift, «^» для CTRL, «!» для Alt и «#» для клавиши Windows, а также любой «обычной» клавиши на клавиатуре (буквы и цифры).

Например, чтобы комбинация CTRL + Y запускала ваш скрипт, используйте:

^у::

Двойное ":" похоже на "Эй, AutoHotKey, пожалуйста, сопоставьте строку или комбинацию клавиш слева со всем, что справа".

«Переместитесь» на две или три строки ниже, нажав Enter, и введите «return», что будет означать конец конкретной функции. Полный результат должен выглядеть следующим образом:

^у::
; Этот является комментарий.
возврат

"; Это комментарий.» именно это комментарий в «коде» скрипта, который AutoHotKey не будет выполнять. Он предназначен для документации, чтобы отметить место, где мы будем вводить «код» сценария в следующих шагах.

Если вы следовали нашему руководству по создание горячих клавиш для конкретных приложений с помощью AutoHotKey в прошлом, в этом случае... не. Вы хотите, чтобы ваша горячая клавиша для центрирования окна была «глобальной» по центру Любые окно из Любые приложение. Если вы «привяжете его» к определенному приложению, оно будет действовать только на окна этого приложения.

Получить сведения об активном окне

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

WinGetTitle, Активвиндовитле, A
WinGetPos Ширина, Высота, %ActiveWindowTitle%

Замените строку комментария, которую мы добавили в сценарий в предыдущем разделе, на две строки выше. Результат?

  • Первая строка захватывает заголовок активного окна.
  • Вторая строка считывает его ширину и высоту и сопоставляет их со словами/переменными «Ширина» и «Высота», которые мы будем использовать далее для наших вычислений.

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

Как насчет области основного монитора?

Нам не нужны дополнительные команды, чтобы найти ширину и высоту нашего основного монитора. AutoHotKey поставляется с двумя предустановленными переменными, которые уже содержат эту информацию для нас: «A_ScreenWidth» и «A_ScreenHeight».

Итак, когда вы видите их в следующем разделе, они уже «содержат» ширину и высоту основного монитора. Ничего не нужно, чтобы присвоить им правильные значения. Таким образом, мы можем использовать их непосредственно в наших расчетах.

Время для расчета целевой позиции

Мы можем включать расчеты прямо в те точки скрипта, где они нам нужны. Тем не менее, проще и лучше для удобочитаемости, если мы сопоставим их с двумя переменными и потом использовать эти переменные в нашем скрипте.

Итак, давайте выберем «TargetX» в качестве переменной, которая будет содержать горизонтальные координаты, и «TargetY» в качестве переменной. один с вертикальными координатами, куда мы должны переместить окно, чтобы оно появилось в центре экран.

TargetX := (A_ScreenWidth/2)-(Ширина/2); Здесь мы вычисляем горизонталь окно цель...
TargetY := (A_ScreenHeight/2)-(Высота/2); ...и здесь вертикальный.

Давайте расшифруем эти строки на простом английском языке:

  • «TargetX» и «TargetY» — это две переменные.
  • «:=» сообщает AutoHotKey, что переменные должны быть равны результатам вычислений справа и что эти результаты следует рассматривать как числа.
  • "(A_ScreenWidth/2)" делит полную ширину монитора на два.
  • "(Width/2)" делает то же самое для ширины активного окна.

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

Теперь переместите окно

Вооружившись всемогущими знаниями, полученными из мистических команд, которые мы видели выше, мы теперь можем создать наше магическое заклинание, которое завершит ритуал телепортации в окно. Или, говоря простым языком, используйте команду AutoHotKey «WinMove», чтобы перемещать окна по экрану.

WinMove ожидает, что мы "скормим" ему по крайней мере три части информации, чтобы сделать свое дело: заголовок целевого окна и координаты, куда его переместить. Поскольку мы уже сопоставили эти фрагменты информации с переменными, команда проста:

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%

В приведенном выше:

  • «WinMove» — это команда AutoHotKey, которая перемещает окно.
  • «%ActiveWindowTitle%» — это переменная, в которую отображается заголовок активного окна.
  • "%TargetX%" и "%TargetY%" - горизонтальные и вертикальные координаты, куда переместить окно.

Вы также можете изменять размер окон с помощью WinMove, пропускать окна с определенным текстом в заголовках или содержимом и т. д. Поскольку эти функции выходят за рамки этой статьи, проверьте Официальная документация AutoHotKey по команде WinMove подробнее о них.

Окончательный сценарий

Наконец, мы подошли к самой сложной части нашего путешествия. Приготовьтесь к следующему шагу, который ожидает, что вы сохраните сценарий и, ну... Запустить его.

Да, это было все - сценарий готов, и ничего больше не остается, как попробовать его. Используйте ярлык, который вы определили, и любое активное окно переместится в центр вашего экрана.

Окончательный файл сценария, открытый в текстовом редакторе, должен выглядеть примерно так:

#НетОкруж.; Рекомендуется для повышения производительности и совместимости с будущими выпусками AutoHotkey.
; #Предупреждать; Включите предупреждения, чтобы помочь в обнаружении распространенных ошибок.
Вход режима отправки; рекомендуемые зановый сценариев из-за его превосходной скорости и надежности.
SetWorkingDir %A_ScriptDir%; Обеспечивает согласованный начальный каталог.
^у::
WinGetTitle, Активвиндовитле, А; Получить активное окно'название для "таргетинг" это / воздействовать на него.
WinGetPos Ширина, Высота, %ActiveWindowTitle%; Получить активный окнопозиция, используется за наши расчеты.
TargetX := (A_ScreenWidth/2)-(Ширина/2); Рассчитайте горизонтальную цель, куда мы переместим окно.
TargetY := (A_ScreenHeight/2)-(Высота/2); Рассчитать вертикальное размещение из в окно.

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Переместите окно к рассчитанным координатам.

возврат

Обратите внимание, что вы можете скопировать приведенный выше сценарий, вставить его в Блокнот или аналогичный текстовый редактор и сохранить с расширением AHK. Затем «запустите» его с установленным AutoHotKey, чтобы центрировать любое окно всякий раз, когда вы нажимаете CTRL + Y. Если вам не нравится это сочетание клавиш, настройте строку «^y::» на другую комбинацию клавиш. Например, !+с:: сопоставит функцию с комбинацией клавиш Shift + Alt + C.

Бонус трек

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

Чтобы упростить эту статью, мы вместо этого включили информацию о том, как скрипт работает в ней, в виде комментариев. Вы можете удалить их из своей итерации.

Краткая история о том, чем он отличается от приведенного выше сценария, заключается в том, что мы также добавляем переменную PositionToggle и некоторую «логику ЕСЛИ». Затем мы используем их для «перелистывания» окна между мониторами. Следует отметить, что это неэлегантное и «хакерское» решение проблемы. Однако мы предпочли его более упрощенному коду, поскольку этот подход легче понять и настроить для всех, кто не знаком с AutoHotKey.

#НетОкруж.; Рекомендуется для повышения производительности и совместимости с будущими выпусками AutoHotkey.
; #Предупреждать; Включите предупреждения, чтобы помочь в обнаружении распространенных ошибок.
Вход режима отправки; рекомендуемые зановый сценариев из-за его превосходной скорости и надежности.
SetWorkingDir %A_ScriptDir%; Обеспечивает согласованный начальный каталог.
Позиционирование = 1; Использовать а количествов виде переключатель за маркировка на которые следят за окно должно появиться.
^у::
WinGetTitle, Активвиндовитле, A
WinGetPos Ширина, Высота, %ActiveWindowTitle%

Если PositionToggle = 1; Проверять состояние переключателя и "делать что находится между фигурными скобками", если это наборк1за наш основной монитор.
{
TargetX := (A_ScreenWidth/2)-(Ширина/2)
TargetY := (A_ScreenHeight/2)-(Высота/2)
Позиционирование = 2; "Флик" переключатель, так что если мы повторно используем горячую клавишу, наше активное окно переместится на второй монитор.
}
Иначе, если PositionToggle = 2; Использовали ли мы горячую клавишу раньше, "стряхивая" номер переключения на второй монитор? Тогда сценарий должен вместо этого делать то, что's между следующими фигурными скобками вместо приведенных выше.
{
SysGet, Mon2, монитор, 2; Получить второй монитор'детали
Mon2Width := Mon2Right - Mon2Left; Рассчитать второй монитор's фактическая ширина.
Mon2Height := Mon2Bottom - Mon2Top; Рассчитать второй монитор's фактическая высота.

TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Рассчитать, куда переместить окно. Обратите внимание, что мы также добавляем основной монитор's, так как AutoHotKey может't перемещать окна на отдельных мониторах, но на их объединенных "поверхность".
TargetY := (Mon2Height/2)-(Height/2)+Mon2Top; Рассчитайте оптимальную вертикальную цель для перемещения окна на втором мониторе. Как и выше, второй монитор's обнаруживаются детали по вертикали по отношению к основному монитору. Таким образом, мы должны проявить творческий подход, чтобы получить оптимальную цель, признавая, как второй монитор'топ не't равный 0 (как и первичный'с).

ПозицияToggle = 1; Переведите переключатель назад, чтобы если мы повторно используем горячую клавишу, окно вернется к основному монитору.
}

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Собственно действие, двигающее активное окно к нашим рассчитанным координатам.

возврат

Центрировать окно с помощью ключа, простой способ

И теперь вы сделали! Если все работает хорошо, теперь вы можете использовать недавно настроенную горячую клавишу для центрирования окна в любое время.

Найдите, где вы тратите свое время в Windows с помощью AutoHotKey

Читать далее

ДелитьсяТвитнутьДелитьсяЭл. адрес

Похожие темы

  • Окна
  • Windows 10
  • Windows 11
  • Автогорячая клавиша
  • Настройка Windows

Об авторе

Одиссей Коурафалос (опубликовано 31 статья)

Настоящая жизнь ОК началась примерно в 10 лет, когда у него появился первый компьютер — Commodore 128. С тех пор он тает колпачки клавиш, печатая 24 часа в сутки, 7 дней в неделю, пытаясь донести «Слово о технологиях» до всех, кто достаточно заинтересован, чтобы слушать. Вернее, читать.

Другие работы Одиссеаса Курафалоса

Подпишитесь на нашу рассылку

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

Нажмите здесь, чтобы подписаться