Nie je to ultraotravné, ako, aspoň v systéme Windows, môže kdekoľvek na obrazovke vyskočiť akékoľvek okno? Lezie vám táto každodenná náhodnosť na nervy a radšej by ste mali väčšiu kontrolu nad umiestnením vašich okien na obrazovke? Teraz môžete vďaka AutoHotKey.

V tomto návode uvidíme, ako môžete tento problém vyriešiť pomocou skriptu AutoHotKey. Postavíme ho tak, aby sa hýbal akýkoľvek okna do stredu obrazovky stlačením klávesu. Znie to sladko? Pozrime sa, ako sa to robí!

Ako nastaviť klávesovú skratku na centrovanie okna pomocou funkcie AutoHotKey

Polovica úspechu pri vytváraní skriptu je vymyslieť, ako bude fungovať ešte pred napísaním jediného znaku. Takže urobme taký akčný plán v obyčajnej angličtine, ktorý potom „zmutujeme“ do scenára.

"Problém" má systém Windows

Windows (ako v "obdĺžnikových veciach na našich obrazovkách", nie OS) majú tendenciu vyskakovať kdekoľvek na obrazovke. Je to rušivé a môže to byť aj nepríjemné, keď sa to deje opakovane. Najmä pri rokovaní s viacerými žiadateľmi, ktorí sa objavujú na rôznych miestach a očakávajú vstup od používateľov.

instagram viewer

Riešenie problému

Okrem odosielania stlačení klávesov a kliknutí myšou do akéhokoľvek okna s nimi môže AutoHotKey aj manipulovať. V minulosti sme videli, ako môžete použite AutoHotKey na pripnutie okien „vždy navrchu“ pomocou klávesovej skratky. Tentokrát však využijeme možnosti manipulácie s oknami AutoHotKey na:

  1. "Prečítajte" ID aktívneho okna.
  2. „Prečítajte si“ aj jeho rozmery (šírka & výška).
  3. "Prečítajte" rozmery monitora.
  4. Skombinujte rozmery monitora a okna a vypočítajte optimálne súradnice pre zobrazenie daného okna v strede obrazovky.
  5. Presuňte okno na tieto súradnice.

Nakoniec zmapujeme vyššie uvedené na skratku. Týmto spôsobom to môžete nazvať „na vyžiadanie“ namiesto toho, aby ste to použili všetky okná – čo by mohlo rušiť aplikácie a hry na celú obrazovku.

Všimnite si, že v tomto návode sa ponoríme priamo do AutoHotKey. Ak to nepoznáte a chcete sa vopred dozvedieť viac, pozrite si naše rýchly sprievodca AutoHotKey pre začiatočníkov.

Najprv nastavenie klávesovej skratky

Spomenuli sme, ako namapujeme funkciu, ktorú vytvoríme, na skratku. Pravdepodobne však bude lepšie, ak začneme s touto časťou, aby sme to dostali z cesty.

Začnite stiahnutím inštalačného programu z Oficiálna stránka AutoHotKey. Vyberte si „aktuálnu“ verziu namiesto beta verzie v2 alebo zastaranej verzie 1.0. Potom ho nainštalujte do počítača.

Spustite Prieskumníka súborov (najrýchlejší spôsob je kombináciou kláves Windows + E) a prejdite na cestu, kde chcete vytvoriť skript. Po nainštalovaní funkcie AutoHotKey sa v ponuke po kliknutí pravým tlačidlom myši zobrazia nové možnosti. Kliknite teda pravým tlačidlom myši na prázdne miesto v okne Prieskumníka a vyberte si Nové > AutoHotKey Script.

Pomenujte súbor skriptu a potom naň kliknite pravým tlačidlom myši a upraviť to. Ak nepoužívate aplikáciu na úpravu textu, ktorá je vhodná pre kód, ako je Visual Studio Code alebo Notepad++, použite Windows Poznámkový blok. Vyhnite sa editorom, ako je Wordpad, ktoré by mohli do vášho „kódu“ pridať zbytočnú (na tento účel) syntax.

Keď ste v editore podľa vlastného výberu, uvidíte, že váš skript AutoHotKey už má v hornej časti vopred vyplnené niektoré riadky. Sú tu kvôli stabilite a kompatibilite. Sú vyladiteľné, ale v tomto návode ich nechajte tak, ako sú.

"Presuňte" dva alebo tri riadky pod ne a zadajte skratku, ktorá spustí vašu funkciu. Kombináciu kláves môžete vytvoriť pomocou "+" pre Shift, "^" pre CTRL, "!" pre Alt a "#" pre kláves Windows, ako aj akýkoľvek "normálny" kláves na klávesnici (písmená a čísla).

Ak chcete napríklad spustiť skript kombináciou CTRL + Y, použite:

^y::

Dvojité ":" je ako povedať: "ahoj, AutoHotKey, prosím, priraďte reťazec alebo kombináciu kláves vľavo na všetko vpravo".

"Presunúť" o dva alebo tri riadky nižšie stlačením Enter a napísať "return", čo označí koniec konkrétnej funkcie. Úplný výsledok by mal vyzerať takto:

^y::
; Toto je komentár.
vrátiť

"; Toto je komentár." riadok je presne to, komentár v "kóde" skriptu, ktorý AutoHotKey nespustí. Slúži na dokumentačné účely na označenie miesta, kde v nasledujúcich krokoch zadáme „kód“ skriptu.

Ak ste postupovali podľa nášho sprievodcu ďalej vytváranie klávesových skratiek špecifických pre aplikáciu pomocou funkcie AutoHotKey v minulosti, v tomto prípade... nie. Chcete, aby klávesová skratka na centrovanie okien bola „globálna“ na stred akýkoľvek okno z akýkoľvek aplikácie. Ak ju „priviažete“ k určitej aplikácii, bude pôsobiť iba v oknách tejto aplikácie.

Získajte podrobnosti o aktívnom okne

Chceme, aby naša skratka pôsobila na aktívne okno a tiež potrebujeme jeho rozmery pre naše výpočty. Tieto podrobnosti môžeme nájsť pomocou nasledujúceho:

WinGetTitle, ActiveWindowTitle, A
WinGetPos šírka, výška, %ActiveWindowTitle%

Nahraďte riadok komentára, ktorý sme pridali do skriptu v predchádzajúcej časti, dvoma riadkami vyššie. Výsledok?

  • Prvý riadok obsahuje názov aktívneho okna.
  • Druhý riadok číta jeho šírku a výšku a mapuje ich na slová/premenné „Width“ a „Height“, ktoré použijeme ďalej pre naše výpočty.

Získali sme detaily aktívneho okna, ale na dosiahnutie nášho cieľa potrebujeme aj rozmery viditeľnej oblasti monitora. Našťastie ich zisťovanie je ešte jednoduchšie.

A čo oblasť primárneho monitora?

Na zistenie šírky a výšky primárneho monitora nepotrebujeme ďalšie príkazy. AutoHotKey prichádza s dvoma prednastavenými premennými, ktoré už obsahujú tieto informácie pre nás: "A_ScreenWidth" a "A_ScreenHeight".

Takže, keď ich uvidíte v ďalšej časti, už „obsahujú“ šírku a výšku primárneho monitora. Nie je potrebné nič na to, aby ste im priradili správne hodnoty. Môžeme ich teda použiť priamo v našich výpočtoch.

Čas na výpočet cieľovej pozície

Výpočty môžeme zahrnúť priamo do bodov skriptu tam, kde ich potrebujeme. Napriek tomu je pre čitateľnosť jednoduchšie a lepšie, ak ich namapujeme na dve premenné a potom použite tieto premenné v našom skripte.

Takže poďme na "TargetX" ako premennú, ktorá bude obsahovať horizontálne súradnice a "TargetY" ako premennú jeden s vertikálnymi súradnicami, kam by sme mali okno presunúť, aby sa zobrazilo v strede obrazovke.

TargetX := (A_ScreenWidth/2)-(Šírka/2); Tu vypočítame horizontálu okno cieľ...
TargetY := (A_ScreenHeight/2)-(Height/2); ...a tu tá vertikálna.

Poďme dešifrovať tieto riadky v jednoduchej angličtine:

  • "TargetX" a "TargetY" sú dve premenné.
  • ":=" informuje AutoHotKey, že premenné by sa mali rovnať výsledkom výpočtov na pravej strane a že tieto výsledky by sa mali považovať za čísla.
  • "(A_ScreenWidth/2)" delí celú šírku monitora dvomi.
  • "(Width/2)" robí to isté pre šírku aktívneho okna.

S vyššie uvedeným odpočítavame polovicu šírky aktívneho okna od polovice šírky obrazovky. Čo zostalo, je priestor naľavo od okna – od ľavej strany obrazovky až po miesto, kde by sa malo okno zobraziť. Druhý riadok robí to isté, ale pre výšku.

Teraz premiestnite okno

Vybavení všemocnými znalosťami získanými z mystických príkazov, ktoré sme videli vyššie, môžeme teraz vytvoriť naše magické zaklínadlo, ktoré dokončí rituál teleportácie cez okno. Alebo jednoduchou angličtinou použite príkaz „WinMove“ AutoHotKey na presúvanie okien po obrazovke.

WinMove od nás očakáva, že ho „nakŕmime“ aspoň tromi informáciami, aby vykonalo svoj čin: názov cieľového okna a súradnice, kam ho presunúť. Keďže sme už tieto informácie namapovali na premenné, príkaz je jednoduchý ako:

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

Vo vyššie uvedenom:

  • "WinMove" je príkaz AutoHotKey, ktorý presúva okno.
  • "%ActiveWindowTitle%" je premenná, kde je namapovaný nadpis aktívneho okna.
  • "%TargetX%" a "%TargetY%" sú horizontálne a vertikálne súradnice, kam sa má okno presunúť.

Môžete tiež zmeniť veľkosť okien pomocou WinMove, preskočiť tie s konkrétnymi textovými bodkami v názve alebo obsahu atď. Keďže tieto funkcie sú mimo rozsahu tohto článku, skontrolujte Oficiálna dokumentácia AutoHotKey k príkazu WinMove pre viac o nich.

Záverečný scenár

Konečne sa dostávame k najnáročnejšej časti našej cesty. Pripravte sa na ďalší krok, ktorý od vás očakáva, že uložíte skript a... Spustite ho.

Áno, to bolo ono – scenár je hotový a nezostáva nič iné, len ho vyskúšať. Použite skratku, ktorú ste definovali, a každé aktívne okno sa presunie do stredu vašej obrazovky.

Konečný súbor skriptu otvorený v textovom editore by mal vyzerať takto:

#NoEnv; Odporúča sa pre výkon a kompatibilitu s budúcimi vydaniami AutoHotkey.
; #Upozorniť; Povoľte upozornenia na pomoc pri zisťovaní bežných chýb.
SendMode Input; Odporúčané preNový skripty vďaka svojej vynikajúcej rýchlosti a spoľahlivosti.
SetWorkingDir %A_ScriptDir%; Zabezpečuje konzistentný štartovací adresár.
^y::
WinGetTitle, ActiveWindowTitle, A; Získajte aktívne okno's titul pre "zameranie" to/pôsobenie na to.
WinGetPos šírka, výška, %ActiveWindowTitle%; Buďte aktívni okno's pozícia, použitá pre naše výpočty.
TargetX := (A_ScreenWidth/2)-(Šírka/2); Vypočítajte vodorovný cieľ, kam sa posunieme okno.
TargetY := (A_ScreenHeight/2)-(Výška/2); Vypočítajte vertikálne umiestnenie z a okno.

WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Presuňte okno na vypočítané súradnice.

vrátiť

Upozorňujeme, že vyššie uvedený skript môžete skopírovať, vložiť do programu Poznámkový blok alebo podobného textového editora a uložiť ho s príponou AHK. Potom ho „spustite“ s nainštalovanou funkciou AutoHotKey, aby sa každé okno vycentrovalo vždy, keď stlačíte CTRL + Y. Ak sa vám táto skratka nepáči, upravte riadok „^y::“ na inú kombináciu klávesov. Napríklad, !+c:: by mapovala funkciu na kombináciu kláves Shift + Alt + C.

Bonusová stopa

Pre vaše pohodlie sme sa rozhodli vykúzliť a zahrnúť sekundárny skript, ktorý bude užitočný pre používateľov s nastaveniami dvoch monitorov.

Aby bol tento článok prehľadnejší, namiesto toho sme v ňom zahrnuli informácie o tom, ako skript funguje, vo forme komentárov. Môžete ich odstrániť zo svojej iterácie.

Krátky príbeh o tom, ako sa líši od vyššie uvedeného skriptu, je, že sme pridali aj premennú PositionToggle a nejakú „IF logiku“. Tie potom používame na „prehýbanie“ okna medzi monitormi. Mali by sme poznamenať, že je to neelegantné a „hack-y“ riešenie problému. Uprednostnili sme ho však pred efektívnejším kódom, pretože tento prístup je ľahšie pochopiteľný a vyladiteľný pre každého, kto nepozná AutoHotKey.

#NoEnv; Odporúča sa pre výkon a kompatibilitu s budúcimi vydaniami AutoHotkey.
; #Upozorniť; Povoľte upozornenia na pomoc pri zisťovaní bežných chýb.
SendMode Input; Odporúčané preNový skripty vďaka svojej vynikajúcej rýchlosti a spoľahlivosti.
SetWorkingDir %A_ScriptDir%; Zabezpečuje konzistentný štartovací adresár.
PositionToggle = 1; Použite a čísloako prepínač pre značenie na ktoré monitorujú okno by sa mal objaviť.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos šírka, výška, %ActiveWindowTitle%

Ak PositionToggle = 1; Skontrolujte stav prepínača a "robiť čo je medzi zloženými zátvorkami“ ak je nastaviťdo1pre náš primárny monitor.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_ScreenHeight/2)-(Height/2)
PositionToggle = 2; "Švihnúť" prepínač tak, že ak znova použijeme klávesovú skratku, naše aktívne okno sa presunie na druhý monitor.
}
Else If PositionToggle = 2; Použili sme klávesovú skratku predtým, "švihnutie" číslo prepínača na druhý monitor? Potom by mal skript namiesto toho urobiť čo's medzi nasledujúce zložené zátvorky namiesto vyššie uvedených.
{
SysGet, Mon2, Monitor, 2; Získajte druhý monitor's detaily
Mon2Width := Mon2Right - Mon2Left; Vypočítajte druhý monitor's skutočná šírka.
Mon2Height := Mon2Bottom - Mon2Top; Vypočítajte druhý monitor's skutočná výška.

TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Vypočítajte, kam sa má okno presunúť. Všimnite si, že pridávame aj primárny monitor's, pretože AutoHotKey môže't presúvať okná na jednotlivých monitoroch, ale cez ich kombináciu "povrch".
Cieľ Y := (Po2Výška/2)-(Výška/2)+Pon2Nahor; Vypočítajte optimálny vertikálny cieľ pre pohyb okna na druhom monitore. Rovnako ako vyššie, druhý monitor'Vertikálne detaily sa zisťujú vo vzťahu k primárnemu monitoru. Preto musíme byť kreatívni, aby sme dosiahli optimálny cieľ uznaním toho, ako druhý monitor's top je't sa rovná 0 (ako primárny's).

PositionToggle = 1; Rýchlym pohybom prepínača späť ak znovu používame klávesovú skratku, okno sa presunie späť na primárny monitor.
}

WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Aktuálna akcia, pohyb aktívneho okno na naše vypočítané súradnice.

vrátiť

Vycentrujte okno pomocou kľúča, jednoduchý spôsob

A teraz máte hotovo! Ak všetko funguje dobre, môžete teraz použiť svoju novo nastavenú klávesovú skratku na vycentrovanie okna kedykoľvek.

Zistite, kde v systéme Windows strácate čas pomocou funkcie AutoHotKey

Prečítajte si ďalej

zdieľamTweetujtezdieľamEmail

Súvisiace témy

  • Windows
  • Windows 10
  • Windows 11
  • AutoHotkey
  • Prispôsobenie systému Windows

O autorovi

Odysseas Kourafalos (31 publikovaných článkov)

OKov skutočný život začal okolo 10, keď dostal svoj prvý počítač – Commodore 128. Odvtedy rozpúšťal klávesové skratky písaním 24 hodín denne, 7 dní v týždni a snažil sa šíriť The Word Of Tech každému, koho to zaujalo natoľko, aby ho počúval. Alebo skôr čítať.

Viac od Odysseasa Kourafalosa

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber