Er det ikke ekstremt irriterende hvordan, i det minste på Windows, et hvilket som helst vindu kan dukke opp hvor som helst på skjermen? Går den daglige tilfeldigheten deg på nervene, og du foretrekker å ha mer kontroll over vinduenes plassering på skjermen? Vel, nå kan du det, takket være AutoHotKey.
I denne opplæringen skal vi se hvordan du kan løse dette problemet med et AutoHotKey-skript. Vi bygger den slik at den beveger seg noen vinduet til midten av skjermen ved et tastetrykk. Høres søtt ut? La oss se hvordan det gjøres!
Slik setter du opp en hurtigtast for sentrering av vinduer med AutoHotKey
Halve kampen når du lager et manus er å finne ut hvordan det vil fungere før du i det hele tatt skriver inn et enkelt tegn. Så, la oss lage en slik handlingsplan på vanlig engelsk at vi deretter "muterer" til et manus.
"Problemet" Windows har
Windows (som i "rektangel-tingene på skjermene våre", ikke OS) har en tendens til å dukke opp hvor som helst på skjermen. Det er distraherende, og det kan også være irriterende når det skjer gjentatte ganger. Spesielt når du har å gjøre med flere forespørsler som dukker på forskjellige steder, og forventer brukerinnspill.
Løsningen på problemet
Bortsett fra å sende tastetrykk og museklikk til et hvilket som helst vindu, kan AutoHotKey også manipulere dem. Vi så tidligere hvordan du kan bruk AutoHotKey til å feste vinduer "alltid på toppen" ved hjelp av en hurtigtast. Denne gangen vil vi imidlertid dra nytte av AutoHotKeys vindusmanipulasjonsevner for å:
- "Les" det aktive vinduets ID.
- "Les" også dens dimensjoner (bredde og høyde).
- "Les" skjermens dimensjoner.
- Kombiner skjermens og vinduets dimensjoner for å beregne de optimale koordinatene for å presentere vinduet i midten av skjermen.
- Flytt vinduet til disse koordinatene.
Til slutt vil vi kartlegge ovenstående til en snarvei. På denne måten kan du kalle det "on-demand" i stedet for å bruke det på alle windows - som kan forstyrre apper og spill på fullskjerm.
Legg merke til at i denne opplæringen vil vi dykke rett inn i AutoHotKey. Hvis du ikke er kjent med det og ønsker å lære mer på forhånd, sjekk vår rask AutoHotKey-guide for nybegynnere.
Først, konfigurere hurtigtasten
Vi nevnte hvordan vi skal kartlegge funksjonen vi skal lage til en snarvei. Imidlertid er det sannsynligvis bedre om vi begynner med den delen for å få det ut av veien.
Start med å laste ned installasjonsprogrammet fra AutoHotKeys offisielle side. Gå for den "gjeldende" versjonen i stedet for v2 beta eller den utdaterte 1.0-versjonen. Installer den deretter på PC-en din.
Start File Explorer (den raskeste måten er med Windows-tasten + E-tastkombinasjonen) og gå til banen der du vil lage skriptet. Med AutoHotKey installert vil du få noen nye alternativer på høyreklikkmenyen. Så høyreklikk på den tomme plassen i filutforskerens vindu og velg Ny > AutoHotKey-skript.
Gi skriptfilen et navn, og høyreklikk deretter på den og redigere den. Hvis du ikke bruker en kodevennlig tekstredigeringsapp, som Visual Studio Code eller Notepad++, bruk Windows Notisblokk. Unngå redaktører som Wordpad, som kan legge til ubrukelig (for formålet) syntaks til "koden".
Når du er i redigeringsprogrammet du velger, vil du se at AutoHotKey-skriptet allerede har noen linjer forhåndsutfylt øverst. De er der av stabilitets- og kompatibilitetsgrunner. De er tweakable, men la dem være som de er for denne opplæringen.
"Flytt" to eller tre linjer under dem og skriv inn snarveien som vil starte funksjonen din. Du kan lage en tastekombinasjon ved å bruke "+" for Shift, "^" for CTRL, "!" for Alt, og "#" for Windows-tasten, samt en hvilken som helst "normal" tast fra tastaturet (bokstaver og tall).
For å få CTRL + Y-kombinasjonen til å starte skriptet, bruk for eksempel:
^y::
Den doble ":" er som å si, "hei, AutoHotKey, vennligst tilordne strengen eller tastekombinasjonen til venstre til alt til høyre".
"Flytt" to eller tre linjer under det ved å trykke Enter, og skriv "retur", som vil markere slutten på den aktuelle funksjonen. Det komplette resultatet skal se slik ut:
^y::
; Dette er en kommentar.
komme tilbake
Den "; Dette er en kommentar."-linjen er nettopp det, en kommentar i skriptets "kode" som AutoHotKey ikke vil kjøre. Det er der for dokumentasjonsformål for å markere stedet der vi skal skrive inn skriptets "kode" i de følgende trinnene.
Hvis du har fulgt vår guide på lage appspesifikke hurtigtaster med AutoHotKey tidligere, i dette tilfellet... ikke gjør det. Du vil at din vindussentrerende hurtigtast skal være "global" til å sentrere noen vindu fra noen app. Hvis du "knytter den" til en bestemt app, vil den kun virke på denne appens vinduer.
Få Active Windows detaljer
Vi vil at snarveien vår skal virke på det aktive vinduet, og vi trenger også dens dimensjoner for våre beregninger. Vi kan finne disse detaljene med følgende:
WinGetTitle, ActiveWindowTitle, A
WinGetPos Bredde, Høyde, %ActiveWindowTitle%
Erstatt kommentarlinjen vi har lagt til skriptet i forrige seksjon med de to linjene ovenfor. Resultatet?
- Den første linjen tar tak i det aktive vinduets tittel.
- Den andre linjen leser bredden og høyden og tilordner dem til ordene/variablene "Bredde" og "Høyde", som vi skal bruke neste gang for våre beregninger.
Vi har det aktive vinduets detaljer, men vi trenger også skjermens synlige områdes dimensjoner for å nå målet vårt. Heldigvis er det enda enklere å finne ut av dem.
Hva med det primære monitorområdet?
Vi trenger ikke ekstra kommandoer for å finne bredden og høyden til hovedskjermen vår. AutoHotKey kommer med to forhåndsinnstilte variabler som allerede inneholder den informasjonen for oss: "A_ScreenWidth" og "A_ScreenHeight".
Så når du ser dem i neste seksjon, "inneholder" de allerede den primære skjermens bredde og høyde. Det er ingenting som trengs for å tildele de riktige verdiene. Dermed kan vi bruke dem direkte i våre beregninger.
Tid for å beregne målposisjonen
Vi kan inkludere beregningene direkte i punktene i manuset der vi trenger dem. Likevel er det lettere og bedre for lesbarheten hvis vi kartlegger dem til to variabler og deretter bruk disse variablene i skriptet vårt.
Så la oss gå for "TargetX" som variabelen som vil holde de horisontale koordinatene og "TargetY" som en med de vertikale koordinatene der vi skal flytte vinduet for å få det til å vises i midten av skjerm.
TargetX := (A_ScreenWidth/2)-(Bredde/2); Her regner vi ut horisontalen vindu mål...
TargetY := (A_ScreenHeight/2)-(Height/2); ...og her den vertikale.
La oss dechiffrere disse linjene på vanlig engelsk:
- "TargetX" og "TargetY" er de to variablene.
- ":=" informerer AutoHotKey om at variablene skal være lik resultatene av beregningene til høyre, og at disse resultatene skal behandles som tall.
- "(A_ScreenWidth/2)" deler hele skjermens bredde med to.
- "(Width/2)" gjør det samme for det aktive vinduets bredde.
Med det ovenstående trekker vi halvparten av det aktive vinduets bredde fra halve skjermens bredde. Det som gjenstår er plassen til venstre for vinduet – fra venstre side av skjermen og opp til der vinduet skal vises. Den andre linjen gjør det samme, men for høyden.
Nå skal du flytte vinduet
Utstyrt med allmektig kunnskap som er tilegnet fra de mystiske kommandoene vi så ovenfor, kan vi nå lage vår magiske besværgelse som vil fullføre vindusteleporteringsritualet. Eller, på vanlig engelsk, bruk AutoHotKeys "WinMove"-kommando for å flytte vinduer rundt på skjermen.
WinMove forventer at vi "mater" den med minst tre opplysninger for å gjøre handlingen sin: tittelen til det målrettede vinduet og koordinatene hvor det skal flyttes. Siden vi allerede har kartlagt disse informasjonsbitene til variabler, er kommandoen så enkel som:
WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%
I ovenstående:
- "WinMove" er AutoHotKey-kommandoen som flytter et vindu rundt.
- "%ActiveWindowTitle%" er variabelen der det aktive vinduets tittel er kartlagt.
- "%TargetX%" og "%TargetY%" er de horisontale og vertikale koordinatene hvor du skal flytte vinduet.
Du kan også endre størrelsen på vinduer med WinMove, hoppe over de med spesielle tekststikk i titlene eller innholdet, etc. Siden disse funksjonene er utenfor rammen av denne artikkelen, sjekk AutoHotKeys offisielle dokumentasjon på WinMove-kommandoen for mer om dem.
Det endelige manuset
Til slutt når vi den mest utfordrende delen av reisen vår. Forbered deg på neste trinn forventer at du lagrer manuset og vel... Kjør den.
Ja, det var det - manuset er komplett, og det er ikke noe mer å gjøre enn å prøve det ut. Bruk snarveien du definerte, og ethvert aktivt vindu vil flytte til midten av skjermen.
Den endelige skriptfilen, som åpnet i et tekstredigeringsprogram, skal se omtrent slik ut:
#NoEnv; Anbefalt for ytelse og kompatibilitet med fremtidige AutoHotkey-utgivelser.
; #Varsle; Aktiver advarsler for å hjelpe med å oppdage vanlige feil.
SendMode Input; Anbefalt tilny skript på grunn av sin overlegne hastighet og pålitelighet.
SetWorkingDir %A_ScriptDir%; Sikrer en konsistent startkatalog.
^y::
WinGetTitle, ActiveWindowTitle, A; Få det aktive vinduet's tittel for "målretting" det / handler på det.
WinGetPos Bredde, Høyde, %ActiveWindowTitle%; Få den aktive vindusin posisjon, brukt til våre beregninger.
TargetX := (A_ScreenWidth/2)-(Bredde/2); Beregn det horisontale målet hvor vi skal flytte vindu.
TargetY := (A_ScreenHeight/2)-(Høyde/2); Beregn den vertikale plasseringen av de vindu.WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Flytt vindu til de beregnede koordinatene.
komme tilbake
Merk at du kan kopiere skriptet ovenfor, lime det inn i Notisblokk eller et lignende tekstredigeringsprogram, og lagre det med en AHK-utvidelse. Deretter "kjør" den, med AutoHotKey installert, for å sentrere et hvilket som helst vindu når du trykker CTRL + Y. Hvis du ikke liker den snarveien, kan du justere "^y::"-linjen til en annen tastekombinasjon. For eksempel, !+c::
vil tilordne funksjonen til Shift + Alt + C tastekombinasjonen.
Bonusspor
For enkelhets skyld har vi bestemt oss for å trylle frem og inkludere et sekundært skript som vil være nyttig for de med to skjermoppsett.
For å holde denne artikkelen strømlinjeformet, har vi i stedet inkludert informasjon om hvordan skriptet fungerer i den i form av kommentarer. Du kan fjerne dem fra iterasjonen.
Den korte historien om hvordan det skiller seg fra skriptet ovenfor er at vi også legger til en PositionToggle-variabel og litt "IF-logikk". Deretter bruker vi dem til å "sveipe" vinduet mellom skjermer. Vi bør merke oss at det er en elegant og "hack-y" løsning på problemet. Imidlertid foretrakk vi det fremfor mer strømlinjeformet kode siden denne tilnærmingen er lettere å forstå og tilpasse for alle som ikke er kjent med AutoHotKey.
#NoEnv; Anbefalt for ytelse og kompatibilitet med fremtidige AutoHotkey-utgivelser.
; #Varsle; Aktiver advarsler for å hjelpe med å oppdage vanlige feil.
SendMode Input; Anbefalt tilny skript på grunn av sin overlegne hastighet og pålitelighet.
SetWorkingDir %A_ScriptDir%; Sikrer en konsistent startkatalog.
PositionToggle = 1; Bruk en Nummersom en bryter til merking på som overvåker vindu skal vises.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos Bredde, Høyde, %ActiveWindowTitle%Hvis PositionToggle = 1; Sjekk bryterens tilstand og "gjøre hva er mellom de krøllede parentesene" hvis det er det setttil1til vår primære monitor.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_ScreenHeight/2)-(Height/2)
PositionToggle = 2; "Sveip" bryteren slik at hvis vi gjenbruker hurtigtasten, vil det aktive vinduet vårt flytte til den andre skjermen.
}
Else If PositionToggle = 2; Har vi brukt hurtigtasten før, "knipset" vekslenummeret til den andre skjermen? Da skal manuset i stedet gjøre hva's mellom de følgende krøllete parentesene i stedet for de ovenfor.
{
SysGet, Mon2, Monitor, 2; Få den andre skjermen's detaljer
Man2Width := Man2Høyre - Man2Venstre; Beregn den andre skjermen's faktiske bredde.
Mon2Høyde := Mon2Bund - Mon2Topp; Beregn den andre skjermen's faktiske høyde.TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Beregn hvor du skal flytte vinduet. Legg merke til at vi også legger til den primære skjermen's bredde siden AutoHotKey kan't flytte vinduer på individuelle skjermer, men på tvers av deres kombinert "flate".
TargetY := (Man2Høyde/2)-(Høyde/2)+Man2Topp; Beregn det optimale vertikale målet for å flytte vinduet på den andre skjermen. Som ovenfor, den andre skjermen's vertikale detaljer oppdages i forhold til primærmonitoren. Derfor må vi være kreative for å få et optimalt mål ved å anerkjenne hvordan den andre skjermen's topp ern't lik 0 (som den primære's).PositionToggle = 1; Sveip bryteren tilbake slik at hvis vi gjenbruker hurtigtasten vindu vil gå tilbake til hovedskjermen.
}WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Selve handlingen, flytte den aktive vindu til våre beregnede koordinater.
komme tilbake
Sentrer et vindu med en nøkkel, den enkle måten
Og nå er du ferdig! Hvis alt fungerer bra, kan du nå bruke den nylig konfigurerte hurtigtasten til å sentrere et vindu når som helst.
Finn hvor du kaster bort tiden din på Windows med AutoHotKey
Les Neste
Relaterte temaer
- Windows
- Windows 10
- Windows 11
- Autohurtigtast
- Windows-tilpasning
Om forfatteren
OKs virkelige liv startet rundt klokken 10, da han fikk sin første datamaskin - en Commodore 128. Siden den gang har han smeltet nøkkelhetter ved å skrive 24/7, og forsøkt å spre The Word Of Tech til alle som er interessert nok til å lytte. Eller rettere sagt, les.
Abonner på vårt nyhetsbrev
Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Klikk her for å abonnere