Nu este foarte enervant cum, cel puțin pe Windows, orice fereastră poate apărea oriunde pe ecran? Acea întâmplare zilnică îți pune nervii pe nervi și ai prefera să ai mai mult control asupra plasării ferestrelor pe ecran? Ei bine, acum poți, datorită AutoHotKey.
În acest tutorial, vom vedea cum puteți rezolva această problemă cu un script AutoHotKey. Îl vom construi astfel încât să se miște orice fereastră în centrul ecranului la apăsarea unei taste. Sună dulce? Să vedem cum se face!
Cum să configurați o tastă rapidă pentru centrarea ferestrei cu AutoHotKey
Jumătate din luptă la crearea unui script vine cu modul în care acesta va funcționa înainte chiar de a introduce un singur caracter. Deci, haideți să facem un astfel de plan de acțiune în limba engleză simplă, pe care apoi să îl „mutăm” într-un scenariu.
„Problema” Windows are
Ferestrele (ca în „lucrurile dreptunghiulare de pe ecranele noastre”, nu sistemul de operare) tind să apară oriunde pe ecran. Distrag atenția și poate fi, de asemenea, enervant când se întâmplă în mod repetat. Mai ales atunci când aveți de-a face cu mai mulți solicitanți care apar în locuri diferite, așteptând intrarea utilizatorului.
Soluția la problema
În afară de trimiterea tastelor și clicurilor mouse-ului către orice fereastră, AutoHotKey le poate, de asemenea, manipula. Am văzut în trecut cum poți utilizați AutoHotKey pentru a fixa ferestrele „întotdeauna în partea de sus” folosind o comandă rapidă de la tastatură. De data aceasta, însă, vom profita de abilitățile de manipulare a ferestrelor AutoHotKey pentru a:
- „Citiți” ID-ul ferestrei active.
- „Citește” și dimensiunile acestuia (lățime și înălțime).
- „Citiți” dimensiunile monitorului.
- Combinați dimensiunile monitorului și ale ferestrei pentru a calcula coordonatele optime pentru prezentarea ferestrei respective în centrul ecranului.
- Mutați fereastra la acele coordonate.
În cele din urmă, vom mapa cele de mai sus la o comandă rapidă. În acest fel, îl puteți numi „la cerere” în loc să îl aplicați toate Windows - care ar putea interfera cu aplicațiile și jocurile pe ecran complet.
Rețineți că în acest tutorial, ne vom scufunda direct în AutoHotKey. Dacă nu sunteți familiarizat cu acesta și doriți să aflați mai multe în prealabil, verificați-ne ghid rapid AutoHotKey pentru începători.
În primul rând, configurarea tastei rapide
Am menționat cum vom mapa funcția pe care o vom crea la o comandă rapidă. Cu toate acestea, probabil că este mai bine dacă începem cu acea parte pentru a o scoate din drum.
Începeți prin a descărca programul de instalare de la Site-ul oficial al AutoHotKey. Alegeți versiunea „actuală” în loc de versiunea beta v2 sau versiunea depreciată 1.0. Apoi, instalați-l pe computer.
Lansați File Explorer (cel mai rapid mod este cu combinația de taste Windows + E) și treceți la calea în care doriți să vă creați scriptul. Cu AutoHotKey instalat, veți avea câteva opțiuni noi care apar în meniul cu clic dreapta. Deci, faceți clic dreapta pe spațiul gol al ferestrei File Explorer și alegeți Nou > Script AutoHotKey.
Dați un nume fișierului scriptului, apoi faceți clic dreapta pe el și Editați | × aceasta. Dacă nu utilizați o aplicație de editare a textului prietenoasă cu codul, cum ar fi Visual Studio Code sau Notepad++, utilizați Windows Notepad. Evitați editorii precum Wordpad, care ar putea adăuga o sintaxă inutilă (în acest scop) „codului”.
Când vă aflați în editorul ales, veți vedea că scriptul AutoHotKey are deja câteva linii pre-populate în partea de sus. Sunt acolo din motive de stabilitate și compatibilitate. Sunt modificabile, dar lăsați-le așa cum sunt pentru acest tutorial.
„Mutați” două sau trei linii sub ele și introduceți comanda rapidă care vă va lansa funcția. Puteți crea o combinație de taste folosind „+” pentru Shift, „^” pentru CTRL, „!” pentru Alt și „#” pentru tasta Windows, precum și orice tastă „normală” de la tastatură (litere și cifre).
De exemplu, pentru ca combinația CTRL + Y să lanseze scriptul, utilizați:
^y::
Dublu „:” este ca și cum ați spune „hei, AutoHotKey, vă rugăm să mapați șirul sau combinația de taste din stânga la tot ce este din dreapta”.
„Mutați” două sau trei linii mai jos apăsând Enter și tastați „return”, care va marca sfârșitul funcției specifice. Rezultatul complet ar trebui să arate astfel:
^y::
; Acest este un comentariu.
întoarcere
"; Acesta este un comentariu." rândul este tocmai asta, un comentariu din "codul" scriptului pe care AutoHotKey nu îl va executa. Este acolo în scopuri de documentare pentru a marca locul în care vom introduce „codul” scriptului în următorii pași.
Dacă ați urmat ghidul nostru pe crearea tastelor rapide specifice aplicației cu AutoHotKey in trecut, in acest caz... nu. Doriți ca tasta rapidă de centrare a ferestrei să fie „globală” spre centrare orice fereastra din orice aplicația. Dacă o „legați” la o anumită aplicație, aceasta va acționa numai pe ferestrele acestei aplicații.
Obțineți detaliile ferestrei active
Dorim ca scurtătura noastră să acționeze asupra ferestrei active și avem nevoie și de dimensiunile acesteia pentru calculele noastre. Putem găsi aceste detalii cu următoarele:
WinGetTitle, ActiveWindowTitle, A
WinGetPos Lățimea, Înălțimea, %ActiveWindowTitle%
Înlocuiți linia de comentarii pe care am adăugat-o la script în secțiunea anterioară cu cele două rânduri de mai sus. Rezultatul?
- Prima linie preia titlul ferestrei active.
- A doua linie citește lățimea și înălțimea și le mapează la cuvintele/variabilele „Lățime” și „Înălțime”, pe care le vom folosi în continuare pentru calculele noastre.
Avem detaliile ferestrei active, dar avem nevoie și de dimensiunile zonei vizibile ale monitorului pentru a ne atinge scopul. Din fericire, este și mai ușor să le afli.
Dar zona de monitorizare primară?
Nu avem nevoie de comenzi suplimentare pentru a găsi lățimea și înălțimea monitorului principal. AutoHotKey vine cu două variabile prestabilite care conțin deja acele informații pentru noi: „A_ScreenWidth” și „A_ScreenHeight”.
Deci, când le vedeți în secțiunea următoare, ele „conțin” deja lățimea și înălțimea monitorului principal. Nu este nevoie de nimic pentru a le atribui valorile corecte. Astfel, le putem folosi direct în calculele noastre.
Timpul pentru a calcula poziția țintă
Putem include calculele direct în punctele din script unde avem nevoie de ele. Totuși, este mai ușor și mai bine pentru lizibilitate dacă le mapam la două variabile și apoi utilizați acele variabile în scriptul nostru.
Deci, să mergem la „TargetX” ca variabilă care va deține coordonatele orizontale și „TargetY” ca unul cu coordonatele verticale în care ar trebui să mutăm fereastra pentru ca aceasta să apară în centrul ecran.
TargetX := (A_ScreenWidth/2)-(Lăţime/2); Aici calculăm orizontala fereastră ţintă...
TargetY := (A_ScreenHeight/2)-(Height/2); ...si aici pe verticala.
Să descifrăm acele rânduri într-o engleză simplă:
- „TargetX” și „TargetY” sunt cele două variabile.
- „:=" informează AutoHotKey că variabilele ar trebui să fie egale cu rezultatele calculelor din dreapta și că acele rezultate ar trebui tratate ca numere.
- „(A_ScreenWidth/2)” împarte lățimea completă a monitorului la două.
- „(Width/2)” face același lucru pentru lățimea ferestrei active.
Cu cele de mai sus, scădem jumătate din lățimea ferestrei active din jumătate din lățimea ecranului. Ceea ce a mai rămas este spațiul din stânga ferestrei - din partea stângă a ecranului și până unde ar trebui să apară fereastra. A doua linie face același lucru, dar pentru înălțime.
Acum să repoziționăm fereastra
Echipați cu cunoștințele atotputernice dobândite din comenzile mistice pe care le-am văzut mai sus, acum putem crea incantația noastră magică care va finaliza ritualul de teleportare a ferestrei. Sau, în limba engleză simplă, utilizați comanda „WinMove” a lui AutoHotKey pentru a muta ferestrele pe ecran.
WinMove se așteaptă să-l „alimentăm” cu cel puțin trei informații pentru a-și face fapta: titlul ferestrei vizate și coordonatele unde să o mutăm. Deoarece am mapat deja acele informații la variabile, comanda este la fel de simplă ca:
WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%
În cele de mai sus:
- „WinMove” este comanda AutoHotKey care mută o fereastră.
- „%ActiveWindowTitle%” este variabila în care este mapat titlul ferestrei active.
- „%TargetX%” și „%TargetY%” sunt coordonatele orizontale și verticale în care să mutați fereastra.
De asemenea, puteți redimensiona ferestrele cu WinMove, le puteți sări peste cele cu anumite usturimi de text în titluri sau conținut etc. Deoarece aceste caracteristici nu intră în domeniul de aplicare al acestui articol, verificați Documentația oficială a AutoHotKey privind comanda WinMove pentru mai multe despre ele.
Scenariul final
În cele din urmă, ajungem la cea mai dificilă parte a călătoriei noastre. Pregătește-te pentru următorul pas se așteaptă să salvezi scenariul și, ei bine... Rulați-l.
Da, asta a fost - scenariul este complet și nu e nimic altceva de făcut decât să îl încerci. Utilizați comanda rapidă pe care ați definit-o și orice fereastră activă se va muta în centrul ecranului.
Fișierul script final, așa cum este deschis într-un editor de text, ar trebui să arate cam așa:
#NoEnv; Recomandat pentru performanță și compatibilitate cu viitoarele versiuni AutoHotkey.
; #A avertiza; Activați avertismentele pentru a ajuta la detectarea erorilor comune.
Intrare SendMode; Recomandat pentrunou scripturi datorită vitezei și fiabilității sale superioare.
SetWorkingDir %A_ScriptDir%; Asigură un director de pornire consistent.
^y::
WinGetTitle, ActiveWindowTitle, A; Obțineți fereastra activă'titlul lui pentru "țintirea" ea/acționând asupra ei.
WinGetPos Lățimea, Înălțimea, %ActiveWindowTitle%; Ia activ fereastrăpoziția lui, folosită pentru calculele noastre.
TargetX := (A_ScreenWidth/2)-(Lăţime/2); Calculați ținta orizontală în care vom muta fereastră.
TargetY := (A_ScreenHeight/2)-(Înălţime/2); Calculați poziția verticală de cel fereastră.WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Mută fereastră la coordonatele calculate.
întoarcere
Rețineți că puteți copia scriptul de mai sus, îl puteți lipi în Notepad sau într-un editor de text similar și îl puteți salva cu o extensie AHK. Apoi, „rulați”-l, cu AutoHotKey instalat, pentru a centra orice fereastră ori de câte ori apăsați CTRL + Y. Dacă nu vă place această comandă rapidă, modificați linia „^y::” la o altă combinație de taste. De exemplu, !+c::
ar mapa funcția la combinația de taste Shift + Alt + C.
Bonus Track
Pentru confortul dumneavoastră, am decis să evocăm și să includem un script secundar care va fi util celor cu setări de monitor dual.
Pentru a menține acest articol eficient, am inclus în schimb informații despre cum funcționează scriptul în el sub formă de comentarii. Le puteți elimina din iterație.
Povestea scurtă a modului în care diferă de scriptul de mai sus este că adăugăm, de asemenea, o variabilă PositionToggle și ceva „logica IF”. Apoi le folosim pentru a „smulge” fereastra între monitoare. Ar trebui să remarcăm că este o soluție inelegantă și „hack-y” la problemă. Cu toate acestea, l-am preferat codului mai simplificat, deoarece această abordare este mai ușor de înțeles și de ajustat pentru toți cei care nu sunt familiarizați cu AutoHotKey.
#NoEnv; Recomandat pentru performanță și compatibilitate cu viitoarele versiuni AutoHotkey.
; #A avertiza; Activați avertismentele pentru a ajuta la detectarea erorilor comune.
Intrare SendMode; Recomandat pentrunou scripturi datorită vitezei și fiabilității sale superioare.
SetWorkingDir %A_ScriptDir%; Asigură un director de pornire consistent.
PositionToggle = 1; Utilizare A numărla fel de un comutator pentru marcare pe care monitorizează fereastră ar trebui să apară.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos Lățimea, Înălțimea, %ActiveWindowTitle%Dacă PositionToggle = 1; Verifica starea comutatorului și „do ce este între paranteze” dacă este a stabilitla1pentru monitorul nostru principal.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_ScreenHeight/2)-(Height/2)
PositionToggle = 2; "Scutura" comutatorul, astfel încât, dacă reutilizam tasta rapidă, fereastra noastră activă se va muta pe al doilea monitor.
}
Altfel, dacă PositionToggle = 2; Am folosit tasta rapidă înainte, "sclipind" numărul de comutare la al doilea monitor? Apoi, scriptul ar trebui să facă ce's între următoarele paranteze în loc de cele de mai sus.
{
SysGet, Mon2, Monitor, 2; Ia al doilea monitor'detaliile lui
Mon2Width := Mon2Right - Mon2Left; Calculați al doilea monitor'lățimea reală a lui.
Mon2Height := Mon2Bottom - Mon2Top; Calculați al doilea monitor'înălțimea reală a lui.TargetX := (Lun2Width/2)-(Width/2)+A_ScreenWidth; Calculați unde să mutați fereastra. Observați că adăugăm și monitorul principal's, deoarece AutoHotKey poate'nu mișcați ferestrele pe monitoare individuale, dar peste combinarea lor "suprafaţă".
TargetY := (Lun2Height/2)-(Height/2)+Lun2Top; Calculați ținta verticală optimă pentru deplasarea ferestrei pe al doilea monitor. Ca mai sus, al doilea monitor'Detaliile verticale sunt detectate în raport cu monitorul principal. Astfel, trebuie să fim creativi pentru a obține o țintă optimă, recunoscând modul în care al doilea monitor's top isn't egal cu 0 (ca și cel primar's).PositionToggle = 1; Deplasați comutatorul înapoi, astfel încât dacă reutilizam tasta rapidă, fereastră va reveni la monitorul principal.
}WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Acțiunea reală, mutarea activului fereastră la coordonatele noastre calculate.
întoarcere
Centrați o fereastră cu o cheie, pe calea ușoară
Și acum ai terminat! Dacă totul funcționează bine, acum puteți utiliza tasta rapidă nou configurată pentru a centra o fereastră oricând.
Găsiți unde vă pierdeți timpul pe Windows cu AutoHotKey
Citiți în continuare
Subiecte asemănătoare
- Windows
- Windows 10
- Windows 11
- AutoHotkey
- Personalizare Windows
Despre autor
Viața adevărată a lui OK a început pe la 10 ani, când și-a luat primul computer - un Commodore 128. De atunci, el a topit tastele tastând 24/7, încercând să răspândească The Word Of Tech oricui este suficient de interesat să asculte. Sau, mai degrabă, citește.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Click aici pentru a te abona