Není to ultraotravné, jak, alespoň ve Windows, může kdekoli na obrazovce vyskočit jakékoli okno? Leze vám ta každodenní náhodnost na nervy a raději byste měli větší kontrolu nad umístěním oken na obrazovce? Nyní můžete, díky AutoHotKey.
V tomto tutoriálu uvidíme, jak můžete tento problém vyřešit pomocí skriptu AutoHotKey. Postavíme to tak, aby se to hýbalo žádný okna do středu obrazovky stisknutím klávesy. Zní to sladce? Pojďme se podívat, jak se to dělá!
Jak nastavit klávesovou zkratku pro centrování oken pomocí AutoHotKey
Polovinou bitvy při vytváření skriptu je vymyslet, jak bude fungovat, ještě než napíšete jediný znak. Udělejme tedy takový akční plán v jednoduché angličtině, který pak „zmutujeme“ do scénáře.
"Problém" má Windows
Windows (jako v „obdélnících na našich obrazovkách“, nikoli OS) mají tendenci vyskakovat kdekoli na obrazovce. Je to rušivé a může to být také nepříjemné, když se to děje opakovaně. Zejména při jednání s více žadateli, kteří se objevují na různých místech a očekávají vstup uživatelů.
Řešení problému
Kromě odesílání úhozů a kliknutí myší do libovolného okna s nimi může AutoHotKey také manipulovat. V minulosti jsme viděli, jak můžete použijte AutoHotKey k připnutí oken „vždy nahoře“ pomocí klávesové zkratky. Tentokrát však využijeme možnosti manipulace s okny AutoHotKey k:
- "Přečtěte" ID aktivního okna.
- Také "přečtěte" jeho rozměry (šířka & výška).
- "Přečtěte" rozměry monitoru.
- Zkombinujte rozměry monitoru a okna pro výpočet optimálních souřadnic pro zobrazení uvedeného okna ve středu obrazovky.
- Přesuňte okno na tyto souřadnice.
Nakonec si výše uvedené namapujeme na zkratku. Tímto způsobem to můžete nazvat „na vyžádání“ namísto použití Všechno okna – což by mohlo rušit aplikace a hry na celou obrazovku.
Všimněte si, že v tomto tutoriálu se ponoříme přímo do AutoHotKey. Pokud to neznáte a chcete se předem dozvědět více, podívejte se na naše rychlý průvodce AutoHotKey pro začátečníky.
Nejprve Nastavení HotKey
Zmínili jsme, jak namapujeme funkci, kterou vytvoříme, na zástupce. Pravděpodobně je však lepší, když začneme s touto částí, abychom ji dostali z cesty.
Začněte stažením instalačního programu z Oficiální stránky AutoHotKey. Přejděte na „aktuální“ verzi namísto beta verze v2 nebo zastaralé verze 1.0. Poté jej nainstalujte do počítače.
Spusťte Průzkumníka souborů (nejrychlejší způsob je pomocí kombinace kláves Windows + E) a přejděte na cestu, kde chcete vytvořit skript. S nainstalovanou funkcí AutoHotKey se v nabídce po kliknutí pravým tlačítkem zobrazí některé nové možnosti. Klikněte tedy pravým tlačítkem myši na prázdné místo v okně Průzkumníka souborů a vyberte Novinka > AutoHotKey Script.
Pojmenujte soubor skriptu a poté na něj klikněte pravým tlačítkem a Upravit to. Pokud nepoužíváte aplikaci pro úpravu textu vhodnou pro kód, jako je Visual Studio Code nebo Notepad++, použijte Poznámkový blok Windows. Vyhněte se editorům, jako je Wordpad, které by mohly do vašeho „kódu“ přidat zbytečnou (pro tento účel) syntaxi.
Když jste ve zvoleném editoru, uvidíte, že váš skript AutoHotKey již má některé řádky předvyplněné nahoře. Jsou tam kvůli stabilitě a kompatibilitě. Jsou upravitelné, ale pro tento tutoriál je ponechte tak, jak jsou.
"Přesuňte" dva nebo tři řádky pod ně a zadejte zkratku, která spustí vaši funkci. Kombinaci kláves můžete vytvořit pomocí "+" pro Shift, "^" pro CTRL, "!" pro Alt a "#" pro klávesu Windows, stejně jako jakákoli "normální" klávesa na klávesnici (písmena a čísla).
Chcete-li například spustit skript pomocí kombinace CTRL + Y, použijte:
^y::
Dvojité „:“ je jako říkat: „Hej, AutoHotKey, namapujte prosím řetězec nebo kombinaci kláves vlevo na vše vpravo“.
"Přesunout" o dva nebo tři řádky níže stisknutím klávesy Enter a napište "return", což označí konec konkrétní funkce. Kompletní výsledek by měl vypadat následovně:
^y::
; Tento je komentář.
vrátit se
"; Toto je komentář." řádek je přesně to, komentář v "kódu" skriptu, který AutoHotKey nespustí. Slouží pro účely dokumentace k označení místa, kam v následujících krocích zadáme „kód“ skriptu.
Pokud jste postupovali podle našeho průvodce vytváření klávesových zkratek pro konkrétní aplikace pomocí AutoHotKey v minulosti, v tomto případě... ne. Chcete, aby byla vaše klávesová zkratka pro centrování oken „globální“ na střed žádný okno z žádný aplikace. Pokud ji „spojíte“ s konkrétní aplikací, bude fungovat pouze v oknech této aplikace.
Získejte podrobnosti o aktivním okně
Chceme, aby naše zkratka působila na aktivní okno, a také potřebujeme jeho rozměry pro naše výpočty. Tyto podrobnosti můžeme najít pomocí následujícího:
WinGetTitle, ActiveWindowTitle, A
WinGetPos šířka, výška, %ActiveWindowTitle%
Nahraďte řádek komentáře, který jsme přidali do skriptu v předchozí části, dvěma řádky výše. Výsledek?
- První řádek obsahuje název aktivního okna.
- Druhý řádek čte jeho šířku a výšku a mapuje je na slova/proměnné „Width“ a „Height“, které dále použijeme pro naše výpočty.
Získali jsme detaily aktivního okna, ale k dosažení našeho cíle potřebujeme také rozměry viditelné oblasti monitoru. Naštěstí je najít ještě jednodušší.
A co oblast primárního monitoru?
K nalezení šířky a výšky našeho primárního monitoru nepotřebujeme další příkazy. AutoHotKey přichází se dvěma přednastavenými proměnnými, které již pro nás tyto informace obsahují: "A_ScreenWidth" a "A_ScreenHeight".
Když je tedy uvidíte v další části, již „obsahují“ šířku a výšku primárního monitoru. K tomu, abyste jim přiřadili správné hodnoty, není potřeba nic. Můžeme je tedy použít přímo v našich výpočtech.
Čas na výpočet cílové pozice
Výpočty můžeme zahrnout přímo do bodů skriptu tam, kde je potřebujeme. Přesto je snazší a lepší pro čitelnost, když je namapujeme na dvě proměnné a pak použijte tyto proměnné v našem skriptu.
Takže pojďme pro "TargetX" jako proměnnou, která bude obsahovat horizontální souřadnice a "TargetY" jako proměnnou jeden s vertikálními souřadnicemi, kam bychom měli okno přesunout, aby se zobrazilo ve středu obrazovka.
TargetX := (A_ScreenWidth/2)-(Šířka/2); Zde vypočítáme horizontálu okno cílová...
TargetY := (A_ScreenHeight/2)-(Height/2); ...a tady ta vertikální.
Pojďme dešifrovat tyto řádky v jednoduché angličtině:
- "TargetX" a "TargetY" jsou dvě proměnné.
- ":=" informuje AutoHotKey, že proměnné by se měly rovnat výsledkům výpočtů vpravo a že s těmito výsledky je třeba zacházet jako s čísly.
- "(A_ScreenWidth/2)" dělí celou šířku monitoru dvěma.
- "(Width/2)" dělá totéž pro šířku aktivního okna.
S výše uvedeným odečteme polovinu šířky aktivního okna od poloviny šířky obrazovky. Co zbylo, je prostor nalevo od okna – z levé strany obrazovky a nahoru tam, kde by se mělo okno objevit. Druhý řádek dělá totéž, ale pro výšku.
Nyní přemístěte okno
Vybaveni všemocnými znalostmi získanými z mystických příkazů, které jsme viděli výše, můžeme nyní vytvořit naše magické zaklínadlo, které dokončí rituál teleportace z okna. Nebo, v jednoduché angličtině, použijte příkaz "WinMove" AutoHotKey k pohybu oken po obrazovce.
WinMove od nás očekává, že jej „nakrmíme“ alespoň třemi informacemi, aby vykonalo svůj skutek: název cíleného okna a souřadnice, kam jej přesunout. Protože jsme již tyto informace namapovali na proměnné, je příkaz stejně jednoduchý jako:
WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%
Ve výše uvedeném:
- "WinMove" je příkaz AutoHotKey, který posouvá okno.
- "%ActiveWindowTitle%" je proměnná, kde je mapován nadpis aktivního okna.
- "%TargetX%" a "%TargetY%" jsou horizontální a vertikální souřadnice, kam přesunout okno.
Můžete také změnit velikost oken pomocí WinMove, přeskočit ta, která mají v názvech nebo obsahu konkrétní text atd. Protože tyto funkce jsou mimo rozsah tohoto článku, zkontrolujte Oficiální dokumentace AutoHotKey k příkazu WinMove pro více o nich.
Závěrečný scénář
Konečně se dostáváme k nejnáročnější části naší cesty. Připravte se na další krok, očekává se, že uložíte skript a dobře... Spusť to.
Ano, to bylo ono – scénář je hotový a nezbývá nic jiného, než ho vyzkoušet. Použijte zkratku, kterou jste definovali, a jakékoli aktivní okno se přesune do středu vaší obrazovky.
Konečný soubor skriptu otevřený v textovém editoru by měl vypadat nějak takto:
#NoEnv; Doporučeno pro výkon a kompatibilitu s budoucími verzemi AutoHotkey.
; #Varovat; Povolte varování, která vám pomohou s odhalováním běžných chyb.
Vstup SendMode; Doporučeno proNový skripty díky své vynikající rychlosti a spolehlivosti.
SetWorkingDir %A_ScriptDir%; Zajišťuje konzistentní počáteční adresář.
^y::
WinGetTitle, ActiveWindowTitle, A; Získejte aktivní okno's titul pro "cílení" to/jednání na to.
WinGetPos šířka, výška, %ActiveWindowTitle%; Získejte aktivní okno's pozice, použitý pro naše výpočty.
TargetX := (A_ScreenWidth/2)-(Šířka/2); Vypočítejte vodorovný cíl, kam posuneme okno.
TargetY := (A_ScreenHeight/2)-(Výška/2); Vypočítejte vertikální umístění z a okno.WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Přesuňte okno na vypočítané souřadnice.
vrátit se
Všimněte si, že výše uvedený skript můžete zkopírovat, vložit do Poznámkového bloku nebo podobného textového editoru a uložit s příponou AHK. Poté jej „spusťte“ s nainstalovanou funkcí AutoHotKey a vycentrujte libovolné okno, kdykoli stisknete CTRL + Y. Pokud se vám tato zkratka nelíbí, upravte řádek „^y::“ na jinou kombinaci kláves. Například, !+c::
by mapovala funkci na kombinaci kláves Shift + Alt + C.
Bonusová trať
Pro vaše pohodlí jsme se rozhodli vykouzlit a zahrnout sekundární skript, který bude užitečný pro uživatele s nastavením dvou monitorů.
Aby byl tento článek přehlednější, zahrnuli jsme do něj informace o tom, jak skript funguje, ve formě komentářů. Můžete je ze své iterace odstranit.
Krátký příběh o tom, jak se liší od výše uvedeného skriptu, je, že jsme také přidali proměnnou PositionToggle a nějakou "IF logiku". Ty pak použijeme k „přehrání“ okna mezi monitory. Měli bychom poznamenat, že je to neelegantní a "hack-y" řešení problému. Dali jsme mu však přednost před jednodušším kódem, protože tento přístup je snazší pochopit a vyladit pro každého, kdo není obeznámen s AutoHotKey.
#NoEnv; Doporučeno pro výkon a kompatibilitu s budoucími verzemi AutoHotkey.
; #Varovat; Povolte varování, která vám pomohou s odhalováním běžných chyb.
Vstup SendMode; Doporučeno proNový skripty díky své vynikající rychlosti a spolehlivosti.
SetWorkingDir %A_ScriptDir%; Zajišťuje konzistentní počáteční adresář.
PositionToggle = 1; Použití A číslotak jako přepínač pro označení na které sledují okno by se měl objevit.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos šířka, výška, %ActiveWindowTitle%Pokud PositionToggle = 1; Šek stav přepínače a "dělat co je mezi složenými závorkami" pokud ano souborna1pro náš primární monitor.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_ScreenHeight/2)-(Výška/2)
PositionToggle = 2; "Švihnutí" přepínač, takže pokud znovu použijeme klávesovou zkratku, naše aktivní okno se přesune na druhý monitor.
}
Else If PositionToggle = 2; Použili jsme klávesovou zkratku dříve, "švihání" číslo přepnutí na druhý monitor? Pak by měl skript místo toho dělat co's mezi následující složené závorky namísto výše uvedených.
{
SysGet, Mon2, Monitor, 2; Pořiďte si druhý monitor's detaily
Mon2Width := Mon2Right - Mon2Left; Vypočítejte druhý monitor's skutečnou šířkou.
Mon2Height := Mon2Bottom - Mon2Top; Vypočítejte druhý monitor's skutečnou výškou.TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Vypočítejte, kam přesunout okno. Všimněte si, že přidáváme také primární monitor's šířka, protože AutoHotKey umí't přesouvat okna na jednotlivých monitorech, ale přes jejich kombinaci "povrch".
TargetY := (Po2Výška/2)-(Výška/2)+Pon2Nahoře; Vypočítejte optimální vertikální cíl pro pohyb okna na druhém monitoru. Stejně jako výše, druhý monitor'Vertikální detaily jsou detekovány ve vztahu k primárnímu monitoru. Proto musíme být kreativní, abychom získali optimální cíl tím, že uznáváme, jak druhý monitor's top je't se rovná 0 (jako primární's).PositionToggle = 1; Přesuňte přepínač zpět tak, aby -li znovu použijeme klávesovou zkratku, okno se přesune zpět na primární monitor.
}WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Aktuální akce, pohyb aktivní okno na naše vypočítané souřadnice.
vrátit se
Vycentrujte okno pomocí klíče, snadný způsob
A teď máte hotovo! Pokud vše funguje dobře, můžete nyní pomocí nově nastavené klávesové zkratky okno kdykoli vycentrovat.
Najděte, kde ve Windows ztrácíte čas s AutoHotKey
Přečtěte si další
Související témata
- Okna
- Windows 10
- Windows 11
- AutoHotkey
- Přizpůsobení systému Windows
O autorovi
OKův skutečný život začal kolem 10, kdy dostal svůj první počítač – Commodore 128. Od té doby tavil klávesové zkratky psaním 24/7 a snažil se šířit The Word Of Tech každému, kdo má zájem naslouchat. Nebo spíš číst.
Přihlaste se k odběru našeho newsletteru
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!
Chcete-li se přihlásit k odběru, klikněte sem