Не е ли изключително досадно как поне в Windows всеки прозорец може да се появи навсякъде на екрана? Изнервя ли ви тази ежедневна случайност и бихте предпочели да имате повече контрол върху разположението на вашите прозорци на екрана? Е, сега можете, благодарение на AutoHotKey.

В този урок ще видим как можете да разрешите този проблем със скрипт AutoHotKey. Ще го изградим така, че да се движи всякакви прозорец до центъра на екрана при натискане на клавиш. Звучи сладко? Да видим как се прави!

Как да настроите бърз клавиш за центриране на прозорец с AutoHotKey

Половината от битката при създаването на скрипт е да се измисли как ще работи, преди дори да напишете един символ. Така че, нека направим такъв план за действие на обикновен английски, който след това ще „мутираме“ в скрипт.

„Проблемът“ на Windows

Windows (както в "правоъгълните неща на нашите екрани", а не операционната система) има тенденция да се появяват навсякъде по екрана. Това е разсейващо и може да бъде досадно, когато се случва многократно. Особено когато се занимавате с множество заявители, изскачащи на различни места, очаквайки въвеждане на потребителя.

instagram viewer

Решението на проблема

Освен да изпраща натискания на клавиши и щраквания с мишката до всеки прозорец, AutoHotKey може също да ги манипулира. Видяхме в миналото как можете използвайте AutoHotKey, за да закачите прозорците "винаги отгоре" с помощта на клавишна комбинация. Този път обаче ще се възползваме от възможностите на AutoHotKey за манипулиране на прозореца, за да:

  1. „Прочетете“ идентификатора на активния прозорец.
  2. Също така "прочетете" неговите размери (ширина и височина).
  3. „Прочетете“ размерите на монитора.
  4. Комбинирайте размерите на монитора и прозореца, за да изчислите оптималните координати за представяне на този прозорец в центъра на екрана.
  5. Преместете прозореца на тези координати.

Накрая ще съпоставим горното с пряк път. По този начин можете да го наречете „при поискване“, вместо да го прилагате всичко windows - което може да попречи на приложенията и игрите на цял екран.

Имайте предвид, че в този урок ще се потопим направо в AutoHotKey. Ако не сте запознати с него и искате да научите повече предварително, проверете нашия бързо ръководство за AutoHotKey за начинаещи.

Първо, настройване на HotKey

Споменахме как ще съпоставим функцията, която ще създадем, към пряк път. Вероятно обаче е по-добре да започнем с тази част, за да я махнем от пътя.

Започнете с изтегляне на инсталатора от Официалният сайт на AutoHotKey. Изберете „текущата“ версия вместо v2 бета или остарялата версия 1.0. След това го инсталирайте на вашия компютър.

Стартирайте File Explorer (най-бързият начин е с клавишната комбинация Windows Key + E) и преминете към пътя, където искате да създадете своя скрипт. С инсталиран AutoHotKey ще имате някои нови опции, които се появяват в менюто с десния бутон. Така че, щракнете с десния бутон върху празното пространство на прозореца на File Explorer и изберете Ново > AutoHotKey Script.

Дайте име на файла на вашия скрипт и след това щракнете с десния бутон върху него и редактиране то. Ако не използвате удобно за код приложение за редактиране на текст, като Visual Studio Code или Notepad++, използвайте Windows Notepad. Избягвайте редактори като Wordpad, които биха могли да добавят безполезен (за целта) синтаксис към вашия "код".

Когато сте в избрания от вас редактор, ще видите, че вашият AutoHotKey скрипт вече има някои предварително попълнени редове в горната част. Те са там от съображения за стабилност и съвместимост. Те могат да се настройват, но ги оставете такива, каквито са за този урок.

„Преместете“ два или три реда под тях и въведете прекия път, който ще стартира вашата функция. Можете да създадете комбинация от клавиши, като използвате "+" за Shift, "^" за CTRL, "!" за Alt и "#" за клавиша на Windows, както и всеки "нормален" клавиш от клавиатурата (букви и цифри).

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

^y::

Двойното „:“ е като да кажете „хей, AutoHotKey, моля, съпоставете низа или клавишната комбинация отляво към всичко вдясно“.

„Преместете“ два или три реда под това, като натиснете Enter и въведете „return“, което ще маркира края на конкретната функция. Пълният резултат трябва да изглежда по следния начин:

^y::
; Това е коментар.
връщане

„; Това е коментар." Редът е точно това, коментар в "кода" на скрипта, който AutoHotKey няма да изпълни. Той е там за целите на документацията, за да маркираме мястото, където ще въведем "кода" на скрипта в следващите стъпки.

Ако сте следвали нашето ръководство за създаване на специфични за приложението бързи клавиши с AutoHotKey в миналото, в този случай... недей. Искате клавишната комбинация за центриране на прозореца да бъде "глобална" за центриране всякакви прозорец от всякакви ап. Ако го „свържете“ с конкретно приложение, то ще действа само на прозорците на това приложение.

Вземете подробности за активния прозорец

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

WinGetTitle, ActiveWindowTitle, A
WinGetPos ширина, височина, %ActiveWindowTitle%

Заменете реда за коментари, който добавихме към скрипта в предишния раздел, с двата реда по-горе. Резултатът?

  • Първият ред грабва заглавието на активния прозорец.
  • Вторият ред чете неговата ширина и височина и ги съпоставя с думите/променливите "Width" и "Height", които ще използваме по-нататък за нашите изчисления.

Получихме подробности за активния прозорец, но също така се нуждаем от размерите на видимата област на монитора, за да постигнем целта си. За щастие откриването им е още по-лесно.

Какво ще кажете за първичната мониторна област?

Не се нуждаем от допълнителни команди, за да намерим ширината и височината на нашия основен монитор. AutoHotKey идва с две предварително зададени променливи, които вече съдържат тази информация за нас: "A_ScreenWidth" и "A_ScreenHeight".

Така че, когато ги видите в следващия раздел, те вече "съдържат" ширината и височината на основния монитор. Не е необходимо нищо, за да им се присвоят правилните стойности. По този начин можем да ги използваме директно в нашите изчисления.

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

Можем да включим изчисленията директно в точките от скрипта, където са ни необходими. Все пак е по-лесно и по-добре за четливост, ако ги съпоставим с две променливи и тогава използвайте тези променливи в нашия скрипт.

И така, нека вземем "TargetX" като променлива, която ще държи хоризонталните координати и "TargetY" като един с вертикалните координати, където трябва да преместим прозореца, за да се появи в центъра на екран.

TargetX := (A_ScreenWidth/2)-(Ширина/2); Тук изчисляваме хоризонталата прозорец цел...
TargetY := (A_Височина на екрана/2)-(Височина/2); ...и тук вертикалната.

Нека дешифрираме тези редове на обикновен английски:

  • „TargetX“ и „TargetY“ са двете променливи.
  • ":=" информира AutoHotKey, че променливите трябва да са равни на резултатите от изчисленията вдясно и че тези резултати трябва да се третират като числа.
  • "(A_ScreenWidth/2)" разделя пълната ширина на монитора на две.
  • "(Width/2)" прави същото за ширината на активния прозорец.

С горното изваждаме половината ширина на активния прозорец от половината ширина на екрана. Това, което остава, е пространството отляво на прозореца - от лявата страна на екрана и нагоре до мястото, където трябва да се появи прозорецът. Вторият ред прави същото, но за височината.

Сега да препозиционирате прозореца

Снабдени с всемогъщото знание, придобито от мистичните команди, които видяхме по-горе, сега можем да изработим нашето магическо заклинание, което ще завърши ритуала за телепортация на прозореца. Или, на обикновен английски, използвайте командата "WinMove" на AutoHotKey, за да преместите прозорците по екрана.

WinMove очаква от нас да го „захраним“ с поне три части информация, за да извърши своето действие: заглавието на целевия прозорец и координатите, къде да го преместим. Тъй като вече сме съпоставили тези части от информация с променливи, командата е толкова проста като:

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

В горното:

  • "WinMove" е командата AutoHotKey, която премества прозорец наоколо.
  • "%ActiveWindowTitle%" е променливата, в която е съпоставено заглавието на активния прозорец.
  • „%TargetX%“ и „%TargetY%“ са хоризонталните и вертикалните координати, където да преместите прозореца.

Можете също да преоразмерите прозорците с WinMove, да пропуснете тези с конкретни текстови ужилвания в техните заглавия или съдържание и т.н. Тъй като тези функции са извън обхвата на тази статия, проверете Официалната документация на AutoHotKey за командата WinMove за повече за тях.

Окончателният скрипт

Най-накрая стигаме до най-предизвикателната част от нашето пътуване. Подгответе се за следващата стъпка, очаква да запазите скрипта и добре... Пусни го.

Да, това беше – скриптът е завършен и няма какво повече да се направи, освен да го изпробвате. Използвайте дефинирания от вас пряк път и всеки активен прозорец ще се премести в центъра на вашия екран.

Окончателният скриптов файл, отворен в текстов редактор, трябва да изглежда така:

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

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Преместете прозорец към изчислените координати.

връщане

Имайте предвид, че можете да копирате скрипта по-горе, да го поставите в Notepad или подобен текстов редактор и да го запишете с разширение AHK. След това го „изпълнете“ с инсталиран AutoHotKey, за да центрирате всеки прозорец, когато натиснете CTRL + Y. Ако не ви харесва този пряк път, настройте реда "^y::" до друга комбинация от клавиши. Например, !+c:: ще съпостави функцията с клавишната комбинация Shift + Alt + C.

Бонус песен

За ваше удобство решихме да създадем и включим вторичен скрипт, който ще бъде полезен за тези с настройки на двоен монитор.

За да поддържаме тази статия рационализирана, вместо това сме включили информация за това как работи скриптът в нея под формата на коментари. Можете да ги премахнете от вашата итерация.

Кратката история за това как се различава от скрипта по-горе е, че добавяме и променлива PositionToggle и някаква "IF логика". След това ги използваме, за да "превъртаме" прозореца между мониторите. Трябва да отбележим, че това е неелегантно и "хакерско" решение на проблема. Ние обаче го предпочетохме пред по-рационализирания код, тъй като този подход е по-лесен за разбиране и настройка за всеки, който не е запознат с AutoHotKey.

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

Ако PositionToggle = 1; Проверете състоянието на превключвателя и "направи какво има между къдравите скоби", ако е така комплектда се1за нашия основен монитор.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_ScreenHeight/2)-(Височина/2)
PositionToggle = 2; "Флик" превключвателя, така че ако използваме отново клавишната комбинация, нашият активен прозорец ще се премести на втория монитор.
}
Иначе, ако PositionToggle = 2; Използвали ли сме бързия клавиш преди, "щракане" номерът за превключване към втория монитор? Тогава скриптът трябва да направи какво's между следните къдрави скоби вместо горните.
{
SysGet, Пн2, Монитор, 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 отгоре isn't равно на 0 (като основния'с).

PositionToggle = 1; Завъртете превключвателя назад, така че ако ние използваме повторно клавишната комбинация, the прозорец ще се върне към основния монитор.
}

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Действителното действие, преместване на активното прозорец към нашите изчислени координати.

връщане

Центрирайте прозорец с ключ, лесният начин

И сега сте готови! Ако всичко работи добре, вече можете да използвате новонастроения си клавиш, за да центрирате прозорец по всяко време.

Намерете къде губите времето си в Windows с AutoHotKey

Прочетете Следващото

ДялтуитДялелектронна поща

Свързани теми

  • Windows
  • Windows 10
  • Windows 11
  • AutoHotkey
  • Персонализиране на Windows

За автора

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

Истинският живот на ОК започна на около 10, когато той получи първия си компютър - Commodore 128. Оттогава той топи клавишните капачки, като пише 24/7, опитвайки се да разпространи The Word Of Tech на всеки, който се интересува достатъчно, за да слуша. Или по-скоро четете.

Още от Odysseas Kourafalos

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!

Щракнете тук, за да се абонирате