Alt for å jobbe med Windows - det beste operativsystemet fra Microsoft. Vi dekker alt fra Windows 10 Insider -programmet til Windows 11. Gir deg alle de siste nyhetene om Windows 10 og mer.

Slik sentrerer du ethvert vindu på skjermen med AutoHotKey

3

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 på nervene, og du foretrekker å ha mer kontroll over plasseringen av vinduene 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 flytter et hvilket som helst vindu til midten av skjermen med et tastetrykk. Høres søtt ut? La oss se hvordan det gjøres!

Hvordan sette opp en vindussentrerende hurtigtast 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 en enkelt karakter. 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 opp 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 bruke AutoHotKey til å feste vinduer "alltid på toppen" ved hjelp av en hurtigtast. Denne gangen vil vi imidlertid dra nytte av AutoHotKeys vindusmanipulasjonsevner for å:

  1. "Les" det aktive vinduets ID.
  2. "Les" også dens dimensjoner (bredde og høyde).
  3. "Les" skjermens dimensjoner.
  4. Kombiner skjermens og vinduets dimensjoner for å beregne de optimale koordinatene for å presentere vinduet i midten av skjermen.
  5. 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 vinduer – noe 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 raske AutoHotKey-guide for nybegynnere.

Først må du sette opp 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 nettsted. 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 Script.

Slik sentrerer du ethvert vindu på skjermen med AutoHotKey

Gi skriptets fil et navn, og høyreklikk deretter på den og rediger 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 ditt, 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::; This is a comment.return

"; Dette er en kommentar." linje 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.

Slik sentrerer du ethvert vindu på skjermen med AutoHotKey

Hvis du har fulgt guiden vår for å lage appspesifikke hurtigtaster med AutoHotKey tidligere, i dette tilfellet … ikke gjør det. Du vil at din vindussentrerende hurtigtast skal være "global" for å sentrere et hvilket som helst vindu fra hvilken som helst app. Hvis du "knytter den" til en bestemt app, vil den kun virke på denne appens vinduer.

Få det aktive vinduets 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, AWinGetPos,,, Width, Height, %ActiveWindowTitle%

Erstatt kommentarlinjen vi har lagt til skriptet i forrige seksjon med de to linjene ovenfor. Resultatet?

Slik sentrerer du ethvert vindu på skjermen med AutoHotKey

  • 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 avsnitt, "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 skriptet der vi trenger dem. Likevel er det lettere og bedre for lesbarheten hvis vi kartlegger dem til to variabler og deretter bruker disse variablene i skriptet vårt.

Så la oss gå for "TargetX" som variabelen som vil holde de horisontale koordinatene og "TargetY" som den med de vertikale koordinatene der vi skal flytte vinduet for å få det til å vises i midten av skjermen.

TargetX := (A_ScreenWidth/2)-(Width/2) ; Here we calculate the horizontal window target...TargetY := (A_ScreenHeight/2)-(Height/2) ; ...and here the vertical one.

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.

Slik sentrerer du ethvert vindu på skjermen med AutoHotKey

Med 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 den allmektige kunnskapen 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 deler av informasjonen for å gjøre sin gjerning: det målrettede vinduets tittel 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ørrelse på vinduer med WinMove, hoppe over de med spesielle tekststing i titlene eller innholdet, osv. Siden disse funksjonene er utenfor rammen av denne artikkelen, sjekk AutoHotKeys offisielle dokumentasjon om 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 skriptet og, vel… Kjør det.

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.

Slik sentrerer du ethvert vindu på skjermen med AutoHotKey

Den endelige skriptfilen, som åpnet i et tekstredigeringsprogram, skal se omtrent slik ut:

; SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.^y::   WinGetTitle, ActiveWindowTitle, A ; Get the active window's title for "targetting" it/acting on it.  WinGetPos,,, Width, Height, %ActiveWindowTitle% ; Get the active window's position, used for our calculations. TargetX := (A_ScreenWidth/2)-(Width/2) ; Calculate the horizontal target where we'll move the window.  TargetY := (A_ScreenHeight/2)-(Height/2) ; Calculate the vertical placement of the window.      WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY% ; Move the window to the calculated coordinates.    return

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-tastkombinasjonen.

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". Vi bruker deretter disse 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.

; SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.PositionToggle = 1 ; Use a number as a toggle for marking on which monitor the window should appear.^y::   WinGetTitle, ActiveWindowTitle, A   WinGetPos,,, Width, Height, %ActiveWindowTitle%     If PositionToggle = 1 ; Check the toggle's state and "do what's between the curly brackets" if it's set to 1 for our primary monitor.  {       TargetX := (A_ScreenWidth/2)-(Width/2)      TargetY := (A_ScreenHeight/2)-(Height/2)        PositionToggle = 2 ; "Flick" the toggle so that if we reuse the hotkey, our active window will move to the second monitor.    }   Else If PositionToggle = 2 ; Have we used the hotkey before, "flicking" the toggle number to the second monitor? Then the script should instead do what's between the following curly brackets instead of the ones above.    {       SysGet, Mon2, Monitor, 2 ; Get the second monitor's details        Mon2Width := Mon2Right - Mon2Left ; Calculate the second monitor's actual width.       Mon2Height := Mon2Bottom - Mon2Top ; Calculate the second monitor's actual height.             TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth ; Calculate where to move the window. Notice that we also add the primary monitor's width since AutoHotKey can't move windows on individual monitors but across their combined "surface".      TargetY := (Mon2Height/2)-(Height/2)+Mon2Top ; Calculate the optimal vertical target for moving the window on the second monitor. Like above, the second monitor's vertical details are detected in relation to the primary monitor. Thus, we have to get creative to get an optimal target by acknowledging how the second monitor's top isn't equal to 0 (like the primary one's).                PositionToggle = 1 ; Flick the toggle back so that if we reuse the hotkey, the window will move back to the primary monitor.    }       WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY% ; The actual action, moving the active window to our calculated coordinates.    return

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.

Opptakskilde: www.makeuseof.com

Dette nettstedet bruker informasjonskapsler for å forbedre din opplevelse. Vi antar at du er ok med dette, men du kan velge bort det hvis du ønsker det. jeg aksepterer Mer informasjon