Ali ni zelo nadležno, kako se lahko, vsaj v sistemu Windows, katero koli okno pojavi kjer koli na zaslonu? Vam gre ta vsakodnevna naključnost na živce in bi raje imeli več nadzora nad postavitvijo oken na zaslonu? No, zdaj lahko, zahvaljujoč AutoHotKey.
V tej vadnici bomo videli, kako lahko rešite to težavo s skriptom AutoHotKey. Zgradili ga bomo tako, da se bo premikal kaj okno na sredino zaslona s pritiskom na tipko. Se sliši sladko? Poglejmo, kako se to naredi!
Kako nastaviti bližnjico za središče okna z AutoHotKey
Polovica bitke pri ustvarjanju skripta je, da ugotovite, kako bo deloval, še preden vnesete en sam znak. Naredimo torej takšen akcijski načrt v preprosti angleščini, ki ga bomo nato »mutirali« v scenarij.
"Problem" v sistemu Windows
Windows (kot v "pravokotnikih na naših zaslonih", ne OS) se ponavadi pojavi kjerkoli na zaslonu. To je moteče in je lahko tudi nadležno, če se ponavlja. Še posebej, ko gre za več zahtevnikov, ki se pojavljajo na različnih mestih in pričakujejo vnos uporabnikov.
Rešitev problema
AutoHotKey lahko poleg pošiljanja pritiskov tipk in klikov miške v katero koli okno z njimi tudi manipulira. V preteklosti smo videli, kako lahko uporabite AutoHotKey za pripenjanje oken "vedno na vrhu" z bližnjico na tipkovnici. Tokrat pa bomo izkoristili zmožnosti manipulacije oken AutoHotKey za:
- "Preberi" ID aktivnega okna.
- "Preberi" tudi njegove dimenzije (širina in višina).
- "Preberite" dimenzije monitorja.
- Združite dimenzije monitorja in okna, da izračunate optimalne koordinate za predstavitev omenjenega okna v središču zaslona.
- Premaknite okno na te koordinate.
Na koncu bomo zgornje preslikali v bližnjico. Na ta način ga lahko imenujete "na zahtevo", namesto da bi ga uporabljali vse okna - kar bi lahko motilo celozaslonske aplikacije in igre.
Upoštevajte, da se bomo v tej vadnici poglobili neposredno v AutoHotKey. Če ga niste seznanjeni in želite izvedeti več vnaprej, preverite našo hitri vodnik AutoHotKey za začetnike.
Najprej nastavite HotKey
Omenili smo, kako bomo funkcijo, ki jo bomo ustvarili, preslikali v bližnjico. Vendar pa je verjetno bolje, če začnemo s tem delom, da ga odstranimo s poti.
Začnite s prenosom namestitvenega programa iz Uradna stran AutoHotKey. Namesto različice v2 beta ali zastarele različice 1.0 izberite »trenutno« različico. Nato ga namestite na svoj računalnik.
Zaženite File Explorer (najhitrejši način je s kombinacijo tipk Windows + E) in se pomaknite na pot, kjer želite ustvariti svoj skript. Z nameščenim AutoHotKey se boste v meniju z desnim klikom prikazali nekaj novih možnosti. Torej, z desno tipko miške kliknite prazen prostor okna File Explorer in izberite Novo > Skript AutoHotKey.
Datoteki skripta dajte ime in jo nato z desno tipko miške kliknite in Uredi to. Če ne uporabljate kodi prijazne aplikacije za urejanje besedila, kot je Visual Studio Code ali Notepad++, uporabite Windows Notepad. Izogibajte se urejevalnikom, kot je Wordpad, ki bi lahko vaši "kodi" dodali neuporabno (za ta namen) sintakso.
Ko ste v izbranem urejevalniku, boste videli, da ima vaš skript AutoHotKey že nekaj vrstic, ki so vnaprej izpolnjene na vrhu. Tam so zaradi stabilnosti in združljivosti. Lahko jih je mogoče prilagoditi, vendar jih za to vadnico pustite takšne, kot so.
"Premaknite" dve ali tri vrstice pod njimi in vnesite bližnjico, ki bo zagnala vašo funkcijo. Kombinacijo tipk lahko ustvarite tako, da uporabite "+" za Shift, "^" za CTRL, "!" za Alt in "#" za tipko Windows ter katero koli "običajno" tipko s tipkovnice (črke in številke).
Če želite na primer kombinacijo CTRL + Y zagnati vaš skript, uporabite:
^y::
Dvojni ":" je kot bi rekel: "hej, AutoHotKey, prosim preslikaj niz ali kombinacijo tipk na levi v vse na desni".
"Premaknite" dve ali tri vrstice pod to s pritiskom na Enter in vnesite "return", kar bo označilo konec določene funkcije. Celoten rezultat bi moral izgledati takole:
^y::
; tole je komentar.
vrnitev
"; To je komentar." vrstica je ravno to, komentar v "kodi" skripta, ki ga AutoHotKey ne bo izvedel. Tam je za namene dokumentacije, da označimo mesto, kamor bomo v naslednjih korakih vnesli "kodo" skripta.
Če ste sledili našemu vodniku naprej ustvarjanje bližnjic za posebne aplikacije z AutoHotKey v preteklosti, v tem primeru... ne Želite, da je bližnjica za središče okna "globalna" na sredino kaj okno iz kaj app. Če jo "privežete" na določeno aplikacijo, bo delovala samo v oknih te aplikacije.
Pridobite podrobnosti aktivnega okna
Želimo, da naša bližnjica deluje na aktivno okno, za naše izračune pa potrebujemo tudi njene dimenzije. Te podrobnosti lahko najdemo z naslednjim:
WinGetTitle, ActiveWindowTitle, A
WinGetPos širina, višina, %ActiveWindowTitle%
Zamenjajte vrstico za komentarje, ki smo jo dodali skriptu v prejšnjem razdelku, z zgornjima dvema vrsticama. Rezultat?
- Prva vrstica zajame naslov aktivnega okna.
- Druga vrstica prebere njeno širino in višino ter ju preslika v besedi/spremenljivki "Širina" in "Višina", ki ju bomo naslednjič uporabili za naše izračune.
Dobili smo podrobnosti aktivnega okna, vendar potrebujemo tudi dimenzije vidnega območja monitorja, da dosežemo naš cilj. K sreči je njihovo iskanje še lažje.
Kaj pa območje primarnega monitorja?
Za iskanje širine in višine primarnega monitorja ne potrebujemo dodatnih ukazov. AutoHotKey ima dve prednastavljeni spremenljivki, ki že vsebujeta te informacije za nas: "A_ScreenWidth" in "A_ScreenHeight".
Torej, ko jih vidite v naslednjem razdelku, že "vsebujejo" širino in višino primarnega monitorja. Nič ni potrebno, da bi jim dodelili pravilne vrednosti. Tako jih lahko uporabimo neposredno v naših izračunih.
Čas za izračun ciljnega položaja
Izračune lahko vključimo neposredno v točke skripte, kjer jih potrebujemo. Kljub temu je lažje in bolje za berljivost, če jih preslikamo v dve spremenljivki in potem uporabite te spremenljivke v našem skriptu.
Torej, pojdimo na "TargetX" kot spremenljivko, ki bo vsebovala vodoravne koordinate in "TargetY" kot ena z navpičnimi koordinatami, kamor bi morali premakniti okno, da se prikaže v središču zaslon.
TargetX := (A_ScreenWidth/2)-(Premer/2); Tukaj izračunamo horizontalo okno cilj...
TargetY := (A_Višina zaslona/2)-(Višina/2); ...in tukaj navpični.
Dešifrirajmo te vrstice v navadni angleščini:
- "TargetX" in "TargetY" sta dve spremenljivki.
- ":=" obvesti AutoHotKey, da morajo biti spremenljivke enake rezultatom izračunov na desni in da je treba te rezultate obravnavati kot številke.
- "(A_ScreenWidth/2)" deli celotno širino monitorja na dva.
- "(Width/2)" naredi enako za širino aktivnega okna.
Z zgoraj navedenim odštejemo polovico širine aktivnega okna od polovice širine zaslona. Preostanek je prostor na levi strani okna – od leve strani zaslona do mesta, kjer naj bi se okno prikazalo. Druga vrstica naredi enako, vendar za višino.
Zdaj, da prestavite okno
Opremljeni z vsemogočnim znanjem, pridobljenim z mističnimi ukazi, ki smo jih videli zgoraj, lahko zdaj izdelamo naše čarobno začaranje, ki bo zaključilo ritual teleportacije okna. Ali pa v preprosti angleščini uporabite ukaz AutoHotKey "WinMove" za premikanje oken po zaslonu.
WinMove pričakuje, da ga bomo "nahranili" z vsaj tremi informacijami, da bo opravil svoje delo: naslov ciljnega okna in koordinate, kam ga premakniti. Ker smo te dele informacij že preslikali v spremenljivke, je ukaz tako preprost kot:
WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%
V zgornjem:
- "WinMove" je ukaz AutoHotKey, ki premika okno.
- "%ActiveWindowTitle%" je spremenljivka, v katero je preslikan naslov aktivnega okna.
- "%TargetX%" in "%TargetY%" sta vodoravni in navpični koordinati, kamor je treba premakniti okno.
Z WinMove lahko tudi spremenite velikost oken, preskočite tista, ki imajo določeno besedilo v naslovih ali vsebini itd. Ker so te funkcije zunaj obsega tega članka, preverite Uradna dokumentacija AutoHotKey o ukazu WinMove za več o njih.
Končni scenarij
Končno pridemo do najzahtevnejšega dela naše poti. Pripravite se na naslednji korak, pričakuje, da boste shranili scenarij in, no... Zaženi.
Da, to je bilo to - scenarij je končan in ni drugega kot poskusiti. Uporabite bližnjico, ki ste jo določili, in vsako aktivno okno se bo premaknilo na sredino vašega zaslona.
Končna datoteka skripta, kot je odprta v urejevalniku besedil, bi morala izgledati nekako takole:
#NoEnv; Priporočeno za zmogljivost in združljivost s prihodnjimi izdajami AutoHotkey.
; #Opozori; Omogočite opozorila za pomoč pri odkrivanju pogostih napak.
SendMode vhod; Priporočeno zanovo skripte zaradi svoje vrhunske hitrosti in zanesljivosti.
SetWorkingDir %A_ScriptDir%; Zagotavlja konsistenten začetni imenik.
^y::
WinGetTitle, ActiveWindowTitle, A; Pridobite aktivno okno's naslov za "ciljanje" to/delovanje na to.
WinGetPos Width, Height, %ActiveWindowTitle%; Bodite aktivni okno's položaj, uporabljen za naši izračuni.
TargetX := (A_ScreenWidth/2)-(Premer/2); Izračunajte vodoravni cilj, kamor bomo premaknili okno.
TargetY := (A_ScreenHeight/2)-(Višina/2); Izračunajte navpično postavitev od the okno.WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Premaknite okno na izračunane koordinate.
vrnitev
Upoštevajte, da lahko kopirate zgornji skript, ga prilepite v beležnico ali podoben urejevalnik besedil in ga shranite z razširitvijo AHK. Nato ga "zaženite" z nameščenim AutoHotKey, da centrirate katero koli okno, ko pritisnete CTRL + Y. Če vam ta bližnjica ni všeč, prilagodite vrstico "^y::" na drugo kombinacijo tipk. na primer !+c::
bi preslikal funkcijo v kombinacijo tipk Shift + Alt + C.
Bonus Track
Za vaše udobje smo se odločili, da pričaramo in vključimo sekundarni skript, ki bo koristen za tiste z nastavitvami dvojnega monitorja.
Da bi bil ta članek poenostavljen, smo namesto tega vključili informacije o tem, kako skript deluje v njem v obliki komentarjev. Lahko jih odstranite iz svoje ponovitve.
Kratka zgodba o tem, kako se razlikuje od zgornjega skripta, je, da dodamo tudi spremenljivko PositionToggle in nekaj "IF logike". Nato jih uporabimo za "preklapljanje" okna med monitorji. Upoštevati je treba, da gre za neelegantno in "hack-y" rešitev problema. Vendar smo jo imeli raje kot bolj poenostavljeno kodo, saj je ta pristop lažje razumeti in prilagoditi vsem, ki ne poznajo AutoHotKey.
#NoEnv; Priporočeno za zmogljivost in združljivost s prihodnjimi izdajami AutoHotkey.
; #Opozori; Omogočite opozorila za pomoč pri odkrivanju pogostih napak.
SendMode vhod; Priporočeno zanovo skripte zaradi svoje vrhunske hitrosti in zanesljivosti.
SetWorkingDir %A_ScriptDir%; Zagotavlja konsistenten začetni imenik.
PositionToggle = 1; Uporaba a številkokot preklop za označevanje na ki spremljajo okno se mora pojaviti.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos širina, višina, %ActiveWindowTitle%Če je PositionToggle = 1; Preverite stanje preklopa in "narediti kaj je med zavitimi oklepaji", če je setdo1za naš primarni monitor.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_Višina zaslona/2)-(Višina/2)
PositionToggle = 2; "Flick" stikalo, tako da se, če ponovno uporabimo bližnjico, naše aktivno okno premakne na drugi monitor.
}
Sicer Če PositionToggle = 2; Ali smo prej uporabljali bližnjico, "brcanje" preklopna številka na drugi monitor? Potem bi moral skript namesto tega narediti kaj's med naslednjimi zavitimi oklepaji namesto zgornjih.
{
SysGet, pon2, Monitor, 2; Pridobite drugi monitor's podrobnostmi
Mon2Width := pon2desno - pon2levo; Izračunajte drugi monitor's dejanska širina.
pon2višina := pon2spodaj - pon2vrh; Izračunajte drugi monitor's dejanska višina.TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Izračunajte, kam premakniti okno. Upoštevajte, da dodamo tudi primarni monitor's širino, saj lahko AutoHotKey't premikanje oken na posameznih monitorjih, ampak čez njihove kombinirane "površino".
TargetY := (Mon2Height/2)-(Height/2)+Mon2Top; Izračunajte optimalni navpični cilj za premikanje okna na drugem monitorju. Kot zgoraj, drugi monitor'navpične podrobnosti se zaznajo glede na primarni monitor. Zato moramo biti kreativni, da dobimo optimalen cilj, tako da priznamo, kako drugi monitor's top isn't enako 0 (kot primarni's).PositionToggle = 1; Pomaknite stikalo nazaj, tako da če ponovno uporabimo bližnjico, okno se bo premaknil nazaj na primarni monitor.
}WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Dejansko dejanje, premikanje aktivnega okno na naše izračunane koordinate.
vrnitev
Centrirajte okno s ključem, preprost način
In zdaj ste končali! Če vse deluje dobro, lahko zdaj uporabite novo nastavljeno bližnjico za centriranje okna kadar koli.
Poiščite, kje zapravljate svoj čas v sistemu Windows z AutoHotKey
Preberite Naprej
Povezane teme
- Windows
- Windows 10
- Windows 11
- AutoHotkey
- Prilagajanje sistema Windows
O avtorju
Pravo življenje OK se je začelo pri okoli 10. letu, ko je dobil svoj prvi računalnik - Commodore 128. Od takrat topi tipke s tipkanjem 24 ur na dan, 7 dni v tednu in poskuša razširiti besedo tehnike vsem, ki jih zanima dovolj, da jih poslušajo. Ali bolje rečeno, preberite.
Naročite se na naše novice
Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!
Kliknite tukaj, da se naročite