Nije li iznimno neugodno kako se, barem na Windowsima, bilo koji prozor može pojaviti bilo gdje na zaslonu? Ide li vam ta svakodnevna nasumičnost na živce i radije biste imali veću kontrolu nad položajem prozora na zaslonu? Pa, sada možete, zahvaljujući AutoHotKey.

U ovom vodiču ćemo vidjeti kako možete riješiti ovaj problem pomoću skripte AutoHotKey. Izgradit ćemo ga tako da se kreće bilo koji prozor u središte zaslona pritiskom na tipku. Zvuči slatko? Da vidimo kako se to radi!

Kako postaviti prečac za centriranje prozora pomoću AutoHotKey-a

Pola bitke pri izradi skripte je smišljanje kako će ona funkcionirati prije nego upišete samo jedan znak. Dakle, napravimo takav akcijski plan na običnom engleskom koji ćemo onda "mutirati" u scenarij.

"Problem" Windows ima

Windows (kao u "pravokutnim stvarima na našim zaslonima", a ne OS) obično se pojavljuju bilo gdje na zaslonu. To ometa, a može biti i neugodno kada se ponavlja. Pogotovo kada imate posla s više podnositelja zahtjeva koji iskaču na različitim mjestima, očekujući korisnički unos.

instagram viewer

Rješenje problema

Osim slanja tipki i klikova mišem na bilo koji prozor, AutoHotKey također može njima manipulirati. U prošlosti smo vidjeli kako možete koristite AutoHotKey za prikvačivanje prozora "uvijek na vrhu" pomoću tipkovničkog prečaca. Međutim, ovaj put ćemo iskoristiti mogućnosti upravljanja prozorima AutoHotKey za:

  1. "Pročitajte" ID aktivnog prozora.
  2. Također "pročitajte" njegove dimenzije (širina i visina).
  3. "Pročitajte" dimenzije monitora.
  4. Kombinirajte dimenzije monitora i prozora kako biste izračunali optimalne koordinate za prikaz navedenog prozora u središtu zaslona.
  5. Pomaknite prozor na te koordinate.

Na kraju ćemo gore navedeno mapirati na prečac. Na ovaj način možete ga nazvati "na zahtjev" umjesto da ga primjenjujete svi Windows - što bi moglo ometati aplikacije i igre na cijelom zaslonu.

Imajte na umu da ćemo u ovom vodiču zaroniti odmah u AutoHotKey. Ako niste upoznati s tim i želite saznati više unaprijed, provjerite naš brzi vodič za AutoHotKey za početnike.

Prvo, postavljanje HotKey-a

Spomenuli smo kako ćemo funkciju koju ćemo izraditi mapirati u prečac. Međutim, vjerojatno je bolje da počnemo s tim dijelom kako bismo ga sklonili s puta.

Započnite preuzimanjem instalacijskog programa s Službena stranica AutoHotKeya. Idite na "trenutnu" verziju umjesto v2 beta ili zastarjele verzije 1.0. Zatim ga instalirajte na svoje računalo.

Pokrenite File Explorer (najbrži način je s kombinacijom tipki Windows + E) i prijeđite na put na kojem želite stvoriti svoju skriptu. S instaliranim AutoHotKey, imat ćete neke nove opcije koje se pojavljuju na izborniku desnim klikom. Dakle, desnom tipkom miša kliknite prazan prostor prozora File Explorera i odaberite Novo > AutoHotKey skripta.

Datoteci svoje skripte dajte naziv, a zatim je kliknite desnom tipkom miša i Uredi to. Ako ne koristite aplikaciju za uređivanje teksta prilagođenu kodu, kao što je Visual Studio Code ili Notepad++, upotrijebite Windows Notepad. Izbjegavajte uređivače kao što je Wordpad, koji bi vašem "kodu" mogli dodati beskorisnu (za tu svrhu) sintaksu.

Kada ste u uređivaču po izboru, vidjet ćete da vaša skripta AutoHotKey već ima neke redove unaprijed popunjene na vrhu. Oni su tu iz razloga stabilnosti i kompatibilnosti. Mogu se podesiti, ali ostavite ih onakvima kakvi jesu za ovaj vodič.

"Pomaknite" dva ili tri retka ispod njih i unesite prečac koji će pokrenuti vašu funkciju. Možete izraditi kombinaciju tipki koristeći "+" za Shift, "^" za CTRL, "!" za Alt i "#" za Windows tipku, kao i bilo koju "normalnu" tipku s tipkovnice (slova i brojke).

Na primjer, da bi kombinacija CTRL + Y pokrenula vašu skriptu, upotrijebite:

^y::

Dvostruko ":" je kao da kažete: "Hej, AutoHotKey, preslikaj niz ili kombinaciju tipki s lijeve strane na sve što je s desne strane".

"Premjestite" dva ili tri retka ispod toga pritiskom na Enter i upišite "return", što će označiti kraj određene funkcije. Potpuni rezultat trebao bi izgledati ovako:

^y::
; Ovaj je komentar.
povratak

The "; Ovo je komentar." redak je upravo to, komentar u "kodu" skripte koji AutoHotKey neće izvršiti. Tu je u svrhu dokumentacije da označi mjesto gdje ćemo unijeti "kod" skripte u sljedećim koracima.

Ako ste slijedili naš vodič dalje stvaranje prečaca specifičnih za aplikaciju pomoću AutoHotKey u prošlosti, u ovom slučaju... nemoj. Želite da vaša tipka za centriranje prozora bude "globalna" prema sredini bilo koji prozor iz bilo koji app. Ako je "vezete" za određenu aplikaciju, ona će djelovati samo na prozorima ove aplikacije.

Dobijte pojedinosti aktivnog prozora

Želimo da naš prečac djeluje na aktivni prozor, a potrebne su nam i njegove dimenzije za naše izračune. Te detalje možemo pronaći sa sljedećim:

WinGetTitle, ActiveWindowTitle, A
WinGetPos širina, visina, %ActiveWindowTitle%

Zamijenite redak komentara koji smo dodali skripti u prethodnom odjeljku s dva retka iznad. Rezultat?

  • Prvi red hvata naslov aktivnog prozora.
  • Drugi red čita njegovu širinu i visinu i preslikava ih na riječi/varijable "Širina" i "Visina", koje ćemo sljedeće koristiti za naše izračune.

Dobili smo pojedinosti aktivnog prozora, ali su nam potrebne i dimenzije vidljivog područja monitora da bismo postigli svoj cilj. Srećom, pronaći ih je još lakše.

Što je s područjem primarnog monitora?

Ne trebaju nam dodatne naredbe da pronađemo širinu i visinu našeg primarnog monitora. AutoHotKey dolazi s dvije unaprijed postavljene varijable koje već sadrže te informacije za nas: "A_ScreenWidth" i "A_ScreenHeight".

Dakle, kada ih vidite u sljedećem odjeljku, oni već "sadrže" širinu i visinu primarnog monitora. Nije potrebno ništa da im se dodijele ispravne vrijednosti. Stoga ih možemo izravno koristiti u našim izračunima.

Vrijeme je za izračunavanje ciljne pozicije

Izračune možemo uključiti izravno u točke skripte gdje su nam potrebni. Ipak, lakše je i bolje za čitljivost ako ih preslikamo na dvije varijable i zatim koristiti te varijable u našoj skripti.

Dakle, idemo na "TargetX" kao varijablu koja će sadržavati horizontalne koordinate i "TargetY" kao jedan s okomitim koordinatama gdje bismo trebali pomaknuti prozor da bi se pojavio u središtu zaslon.

TargetX := (A_ScreenWidth/2)-(Širina/2); Ovdje izračunavamo horizontalu prozor cilj...
TargetY := (A_Visina zaslona/2)-(Visina/2); ...a ovdje onaj okomiti.

Dešifrirajmo te retke na običnom engleskom:

  • "TargetX" i "TargetY" su dvije varijable.
  • ":=" obavještava AutoHotKey da varijable trebaju biti jednake rezultatima izračuna na desnoj strani i da se ti rezultati trebaju tretirati kao brojevi.
  • "(A_ScreenWidth/2)" dijeli punu širinu monitora s dva.
  • "(Width/2)" čini isto za širinu aktivnog prozora.

Uz gore navedeno, oduzimamo polovicu širine aktivnog prozora od polovice širine zaslona. Ono što je ostalo je prostor s lijeve strane prozora - od lijeve strane ekrana i do mjesta gdje bi se prozor trebao pojaviti. Drugi red čini isto, ali za visinu.

Sada promijenite položaj prozora

Opremljeni svemoćnim znanjem stečenim iz mističnih naredbi koje smo vidjeli gore, sada možemo izraditi našu magičnu inkantaciju koja će dovršiti ritual teleportacije prozora. Ili, na običnom engleskom, koristite naredbu AutoHotKey "WinMove" za pomicanje prozora po zaslonu.

WinMove od nas očekuje da ga "hranimo" s najmanje tri informacije kako bi izvršio svoje djelo: naslov ciljanog prozora i koordinate kamo ga premjestiti. Budući da smo te dijelove informacija već mapirali u varijable, naredba je jednostavna kao:

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

u gore navedenom:

  • "WinMove" je naredba AutoHotKey koja pomiče prozor.
  • "%ActiveWindowTitle%" je varijabla u koju je mapiran naslov aktivnog prozora.
  • "%TargetX%" i "%TargetY%" su horizontalne i okomite koordinate kamo treba premjestiti prozor.

Također možete promijeniti veličinu prozora pomoću WinMove, preskočiti one s određenim tekstualnim ubodima u naslovima ili sadržaju itd. Budući da su te značajke izvan dosega ovog članka, provjerite Službena dokumentacija AutoHotKeya o naredbi WinMove za više o njima.

Konačna skripta

Napokon stižemo do najzahtjevnijeg dijela našeg putovanja. Pripremite se za sljedeći korak, očekuje vas da spremite skriptu i, dobro... Pokreni ga.

Da, to je bilo to - skripta je gotova i nema ništa drugo nego isprobati. Upotrijebite prečac koji ste definirali i svaki aktivni prozor pomaknut će se u središte vašeg zaslona.

Konačna datoteka skripte, kako je otvorena u uređivaču teksta, trebala bi izgledati otprilike ovako:

#NoEnv; Preporuča se za performanse i kompatibilnost s budućim izdanjima AutoHotkey.
; #Upozoriti; Omogućite upozorenja za pomoć pri otkrivanju uobičajenih pogrešaka.
SendMode ulaz; Preporučeno zanovi skripte zbog svoje vrhunske brzine i pouzdanosti.
SetWorkingDir %A_ScriptDir%; Osigurava dosljedan početni direktorij.
^y::
WinGetTitle, ActiveWindowTitle, A; Nabavite aktivni prozor's naslov za "ciljanje" to/djelujući na njemu.
WinGetPos širina, visina, %ActiveWindowTitle%; Aktivirajte se prozor's položaj, korišten za našim izračunima.
TargetX := (A_ScreenWidth/2)-(Širina/2); Izračunajte horizontalnu metu kamo ćemo premjestiti prozor.
TargetY := (A_ScreenHeight/2)-(Visina/2); Izračunajte okomiti položaj od the prozor.

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Pomaknite prozor na izračunate koordinate.

povratak

Imajte na umu da možete kopirati gornju skriptu, zalijepiti je u Notepad ili sličan uređivač teksta i spremiti je s ekstenzijom AHK. Zatim ga "pokrenite" s instaliranim AutoHotKeyom da centrirate bilo koji prozor kad god pritisnete CTRL + Y. Ako vam se ne sviđa taj prečac, podesite redak "^y::" na drugu kombinaciju tipki. Na primjer, !+c:: mapirao bi funkciju u kombinaciju tipki Shift + Alt + C.

Bonus track

Radi vaše udobnosti, odlučili smo dočarati i uključiti sekundarnu skriptu koja će biti korisna onima koji imaju dva monitora.

Da bi ovaj članak bio pojednostavljen, umjesto toga smo uključili informacije o tome kako skripta radi unutar njega u obliku komentara. Možete ih ukloniti iz svoje iteracije.

Kratka priča o tome kako se razlikuje od gornje skripte je da također dodajemo varijablu PositionToggle i nešto "IF logike". Zatim ih koristimo za "prebacivanje" prozora između monitora. Treba napomenuti da je to neelegantno i "hack-y" rješenje problema. Međutim, preferirali smo ga nego pojednostavljeniji kod jer je ovaj pristup lakši za razumijevanje i podešavanje za sve koji nisu upoznati s AutoHotKeyom.

#NoEnv; Preporuča se za performanse i kompatibilnost s budućim izdanjima AutoHotkey.
; #Upozoriti; Omogućite upozorenja za pomoć pri otkrivanju uobičajenih pogrešaka.
SendMode ulaz; Preporučeno zanovi skripte zbog svoje vrhunske brzine i pouzdanosti.
SetWorkingDir %A_ScriptDir%; Osigurava dosljedan početni direktorij.
PositionToggle = 1; Koristiti a brojkao prekidač za obilježava na koji prate prozor trebao bi se pojaviti.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos širina, visina, %ActiveWindowTitle%

Ako je PositionToggle = 1; Ček stanje prekidača i "čini što je između vitičastih zagrada" ako jest skupado1za naš primarni monitor.
{
TargetX := (A_Širina zaslona/2)-(Širina/2)
TargetY := (A_Visina zaslona/2)-(Visina/2)
PositionToggle = 2; "Zvrčka" prekidač tako da ako ponovno upotrijebimo prečac, naš aktivni prozor će se premjestiti na drugi monitor.
}
Inače, ako je PositionToggle = 2; Jesmo li prije koristili prečac, "treperenje" prebaciti broj na drugi monitor? Onda bi skripta umjesto toga trebala učiniti što's između sljedećih vitičastih zagrada umjesto onih iznad.
{
SysGet, pon2, monitor, 2; Uzmi drugi monitor's detaljima
Mon2Width := pon2desno - pon2lijevo; Izračunajte drugi monitor's stvarna širina.
pon2visina := pon2dolje - pon2vrh; Izračunajte drugi monitor's stvarna visina.

TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Izračunajte kamo premjestiti prozor. Primijetite da dodajemo i primarni monitor's širina budući da AutoHotKey može't pomicati prozore na pojedinačnim monitorima, ali preko njihovih kombiniranih "površinski".
CiljY := (Mon2Height/2)-(Height/2)+Mon2Top; Izračunajte optimalni vertikalni cilj za pomicanje prozora na drugom monitoru. Kao gore, drugi monitor'okomiti detalji su otkriveni u odnosu na primarni monitor. Stoga moramo biti kreativni da bismo dobili optimalnu metu priznajući kako drugi monitor's vrh isn't jednako 0 (kao primarni's).

PositionToggle = 1; Povucite prekidač unatrag tako da ako ponovno koristimo prečac, the prozor vratit će se na primarni monitor.
}

WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Stvarna radnja, pomicanje aktivnog prozor na naše izračunate koordinate.

povratak

Centrirajte prozor ključem, jednostavan način

A sada ste gotovi! Ako sve radi dobro, sada možete koristiti novo postavljenu prečacu za centriranje prozora bilo kada.

Pronađite gdje gubite vrijeme na Windowsima uz AutoHotKey

Pročitajte dalje

UdioCvrkutUdioE-mail

Povezane teme

  • Windows
  • Windows 10
  • Windows 11
  • AutoHotkey
  • Prilagodba sustava Windows

O autoru

Odiseja Kourafalos (Objavljeno 31 članaka)

OKov pravi život počeo je oko 10 godina, kada je dobio svoje prvo računalo - Commodore 128. Od tada je topio tipke tipkajući 24 sata dnevno, 7 dana u tjednu, pokušavajući prenijeti The Word Of Tech svima koji su dovoljno zainteresirani da ih slušaju. Ili, bolje rečeno, čitajte.

Više od Odysseasa Kourafalosa

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu