Все для робіт з Windows - кращою операційною системою від Microsoft. Ми охоплюємо всі, від програми попередньої оцінки Windows 10 до Windows 11. Надає вам всі останні новини про Windows 10 і не тільки.

Як відцентрувати будь-яке вікно на екрані за допомогою AutoHotKey

37

Хіба це не надзвичайно дратує те, що, принаймні у Windows, будь-яке вікно може з’явитися будь-де на екрані? Ця щоденна випадковість діє вам на нерви, і ви бажаєте більше контролювати розташування вікон на екрані? Ну, тепер ви можете, завдяки AutoHotKey.

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

Як налаштувати гарячу клавішу центрування вікна за допомогою AutoHotKey

Половина справи під час створення сценарію полягає в тому, щоб придумати, як він працюватиме, ще до того, як ви введете один символ. Отже, давайте складемо такий план дій простою англійською мовою, який потім «перетворимо» на сценарій.

«Проблема» Windows

Windows (як у «прямокутних штучках на наших екранах», а не ОС) мають тенденцію вискакувати будь-де на екрані. Це відволікає, а також може дратувати, коли це повторюється повторно. Особливо коли маємо справу з кількома запитувачами, які з’являються в різних місцях, очікуючи введення користувача.

Рішення проблеми

Крім надсилання натискань клавіш і клацань миші в будь-яке вікно, AutoHotKey також може ними маніпулювати. Раніше ми бачили, як за допомогою AutoHotKey можна закріплювати вікна «завжди зверху» за допомогою комбінації клавіш. Проте цього разу ми скористаємося можливостями AutoHotKey маніпулювати вікнами, щоб:

  1. «Прочитати» ID активного вікна.
  2. Також «прочитайте» його розміри (ширина та висота).
  3. «Прочитайте» розміри монітора.
  4. Поєднайте розміри монітора та вікна, щоб обчислити оптимальні координати для представлення зазначеного вікна в центрі екрана.
  5. Перемістіть вікно до цих координат.

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

Зверніть увагу, що в цьому підручнику ми зануримося прямо в AutoHotKey. Якщо ви не знайомі з цим і хочете дізнатися більше заздалегідь, перегляньте наш короткий посібник AutoHotKey для початківців.

По-перше, налаштування гарячої клавіші

Ми згадали, як ми будемо відображати функцію, яку ми створимо, на ярлик. Проте, мабуть, краще почати з цієї частини, щоб усунути її з дороги.

Почніть із завантаження інсталятора з офіційного сайту AutoHotKey. Виберіть «поточну» версію замість бета-версії v2 або застарілої версії 1.0. Потім встановіть його на свій ПК.

Запустіть Провідник файлів (найшвидший спосіб — комбінація клавіш Windows + E) і перейдіть до шляху, де ви хочете створити свій сценарій. Після встановлення AutoHotKey у меню, яке відкривається правою кнопкою миші, з’являться нові параметри. Отже, клацніть правою кнопкою миші порожнє місце у вікні Провідника файлів і виберіть «Створити» > «Сценарій AutoHotKey».

Як відцентрувати будь-яке вікно на екрані за допомогою AutoHotKey

Дайте назву файлу сценарію, а потім клацніть його правою кнопкою миші та відредагуйте. Якщо ви не використовуєте програму для редагування тексту, дружню до коду, як-от Visual Studio Code або Notepad++, використовуйте Блокнот Windows. Уникайте таких редакторів, як Wordpad, які можуть додати непотрібний (для цієї мети) синтаксис до вашого «коду».

У вибраному вами редакторі ви побачите, що ваш сценарій AutoHotKey уже має кілька попередньо заповнених рядків у верхній частині. Вони існують з міркувань стабільності та сумісності. Їх можна налаштувати, але залиште їх такими, як вони є, для цього підручника.

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

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

^y::

Подвійне «:» нагадує «привіт, AutoHotKey, будь ласка, зіставте рядок або комбінацію клавіш ліворуч із усім праворуч».

«Перемістіть» два-три рядки нижче, натиснувши Enter, і введіть «return», що позначатиме кінець певної функції. Повний результат має виглядати так:

^y::; This is a comment.return

"; Це коментар." рядок — це саме те, коментар у «коді» сценарію, який AutoHotKey не виконує. Це для документації, щоб позначити місце, де ми будемо вводити «код» сценарію під час наступних кроків.

Як відцентрувати будь-яке вікно на екрані за допомогою AutoHotKey

Якщо ви раніше дотримувалися нашого посібника зі створення гарячих клавіш для певної програми за допомогою AutoHotKey, у цьому випадку… не робіть цього. Ви хочете, щоб гаряча клавіша центрування вікна була "глобальною", щоб центрувати будь-яке вікно будь-якої програми. Якщо «прив’язати» його до певної програми, вона діятиме лише у вікнах цієї програми.

Отримати відомості про активне вікно

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

WinGetTitle, ActiveWindowTitle, AWinGetPos,,, Width, Height, %ActiveWindowTitle%

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

Як відцентрувати будь-яке вікно на екрані за допомогою AutoHotKey

  • Перший рядок бере заголовок активного вікна.
  • Другий рядок зчитує його ширину та висоту та відображає їх у словах/змінних "Ширина" та "Висота", які ми будемо використовувати далі для наших розрахунків.

Ми отримали деталі активного вікна, але для досягнення нашої мети нам також потрібні розміри видимої області монітора. На щастя, знайти їх ще простіше.

Що щодо основної області монітора?

Нам не потрібні додаткові команди, щоб знайти ширину та висоту основного монітора. AutoHotKey поставляється з двома попередньо встановленими змінними, які вже містять цю інформацію для нас: "A_ScreenWidth" і "A_ScreenHeight".

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

Час для розрахунку цільової позиції

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

Отже, візьмемо «TargetX» як змінну, яка буде зберігати горизонтальні координати, і «TargetY» як змінну з вертикальними координатами, куди ми повинні перемістити вікно, щоб воно з’явилося в центрі екрана.

TargetX := (A_ScreenWidth/2)-(Width/2) ; Here we calculate the horizontal window target...TargetY := (A_ScreenHeight/2)-(Height/2) ; ...and here the vertical one.

Давайте розшифруємо ці рядки простою англійською мовою:

  • "TargetX" і "TargetY" – це дві змінні.
  • ":=" повідомляє AutoHotKey, що змінні мають дорівнювати результатам обчислень праворуч і що ці результати слід розглядати як числа.
  • "(A_ScreenWidth/2)" ділить повну ширину монітора на два.
  • "(Ширина/2)" робить те саме для ширини активного вікна.

Як відцентрувати будь-яке вікно на екрані за допомогою AutoHotKey

Зі сказаним вище ми віднімаємо половину ширини активного вікна від половини ширини екрана. Залишився простір ліворуч від вікна – від лівого краю екрана до місця, де має з’явитися вікно. Другий рядок робить те саме, але для висоти.

Тепер змініть положення вікна

Озброєні всемогутніми знаннями, отриманими завдяки містичним командам, які ми бачили вище, тепер ми можемо створити наше магічне заклинання, яке завершить ритуал телепортації вікна. Або простою англійською мовою скористайтеся командою AutoHotKey "WinMove", щоб переміщувати вікна по екрану.

WinMove очікує, що ми «нагодуємо» його принаймні трьома частинами інформації, щоб виконати свою роботу: заголовок цільового вікна та координати, куди його перемістити. Оскільки ми вже зіставили ці фрагменти інформації зі змінними, команда така проста:

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

У наведеному вище:

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

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

Остаточний сценарій

Нарешті ми досягли найскладнішої частини нашої подорожі. Будьте готові до наступного кроку, очікується, що ви збережете сценарій і, ну… запустіть його.

Так, це все – сценарій завершено, і нічого більше не потрібно робити, ніж випробувати його. Скористайтеся вказаним ярликом, і будь-яке активне вікно переміститься в центр екрана.

Як відцентрувати будь-яке вікно на екрані за допомогою AutoHotKey

Остаточний файл сценарію, відкритий у текстовому редакторі, має виглядати приблизно так:

; SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.^y::   WinGetTitle, ActiveWindowTitle, A ; Get the active window's title for "targetting" it/acting on it.  WinGetPos,,, Width, Height, %ActiveWindowTitle% ; Get the active window's position, used for our calculations. TargetX := (A_ScreenWidth/2)-(Width/2) ; Calculate the horizontal target where we'll move the window.  TargetY := (A_ScreenHeight/2)-(Height/2) ; Calculate the vertical placement of the window.      WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY% ; Move the window to the calculated coordinates.    return

Зауважте, що ви можете скопіювати наведений вище сценарій, вставити його в блокнот або подібний текстовий редактор і зберегти з розширенням AHK. Потім «запустіть» його, встановивши AutoHotKey, щоб центрувати будь-яке вікно щоразу, коли ви натискаєте CTRL + Y. Якщо вам не подобається цей ярлик, змініть рядок «^y::» на іншу комбінацію клавіш. Наприклад, !+c::можна зіставити функцію з комбінацією клавіш Shift + Alt + C.

Бонус-трек

Для вашої зручності ми вирішили створити додатковий сценарій, який стане в нагоді тим, хто використовує два монітори.

Щоб упорядкувати цю статтю, ми натомість включили інформацію про те, як у ній працює сценарій, у вигляді коментарів. Ви можете видалити їх зі своєї ітерації.

Коротко про те, чим він відрізняється від сценарію вище, ми також додаємо змінну PositionToggle і деяку «логіку IF». Потім ми використовуємо їх, щоб «перекидати» вікно між моніторами. Слід зазначити, що це неелегантне та «хакерське» вирішення проблеми. Однак ми віддали перевагу цьому, а не більш спрощеному коду, оскільки цей підхід легше зрозуміти та налаштувати для всіх, хто не знайомий з AutoHotKey.

; SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.PositionToggle = 1 ; Use a number as a toggle for marking on which monitor the window should appear.^y::   WinGetTitle, ActiveWindowTitle, A   WinGetPos,,, Width, Height, %ActiveWindowTitle%     If PositionToggle = 1 ; Check the toggle's state and "do what's between the curly brackets" if it's set to 1 for our primary monitor.  {       TargetX := (A_ScreenWidth/2)-(Width/2)      TargetY := (A_ScreenHeight/2)-(Height/2)        PositionToggle = 2 ; "Flick" the toggle so that if we reuse the hotkey, our active window will move to the second monitor.    }   Else If PositionToggle = 2 ; Have we used the hotkey before, "flicking" the toggle number to the second monitor? Then the script should instead do what's between the following curly brackets instead of the ones above.    {       SysGet, Mon2, Monitor, 2 ; Get the second monitor's details        Mon2Width := Mon2Right - Mon2Left ; Calculate the second monitor's actual width.       Mon2Height := Mon2Bottom - Mon2Top ; Calculate the second monitor's actual height.             TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth ; Calculate where to move the window. Notice that we also add the primary monitor's width since AutoHotKey can't move windows on individual monitors but across their combined "surface".      TargetY := (Mon2Height/2)-(Height/2)+Mon2Top ; Calculate the optimal vertical target for moving the window on the second monitor. Like above, the second monitor's vertical details are detected in relation to the primary monitor. Thus, we have to get creative to get an optimal target by acknowledging how the second monitor's top isn't equal to 0 (like the primary one's).                PositionToggle = 1 ; Flick the toggle back so that if we reuse the hotkey, the window will move back to the primary monitor.    }       WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY% ; The actual action, moving the active window to our calculated coordinates.    return

Відцентруйте вікно за допомогою ключа, простий спосіб

І все готово! Якщо все працює добре, тепер ви можете будь-коли використовувати свою нещодавно налаштовану гарячу клавішу для центрування вікна.

Джерело запису: makeuseof.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі