Er det ikke ultra-irriterende, hvordan ethvert vindue, i det mindste på Windows, kan dukke op hvor som helst på skærmen? Går den daglige tilfældighed dig på nerverne, og du foretrækker at have mere kontrol over dine vinduers placering på skærmen? Nå, nu kan du det takket være AutoHotKey.
I denne vejledning vil vi se, hvordan du kan løse dette problem med et AutoHotKey-script. Vi bygger det, så det bevæger sig nogen vindue til midten af din skærm ved et tastetryk. Lyder det sødt? Lad os se, hvordan det gøres!
Sådan opsætter du en vinduescentrerende genvejstast med AutoHotKey
Halvdelen af kampen, når du opretter et script, er at finde på, hvordan det vil fungere, før du overhovedet skriver en enkelt karakter. Så lad os lave sådan en handlingsplan på almindeligt engelsk, at vi så "muterer" til et script.
"Problemet" Windows har
Windows (som i "rektanglettingene på vores skærme", ikke OS) har en tendens til at poppe hvor som helst på skærmen. Det er distraherende, og det kan også være irriterende, når det sker gentagne gange. Især når man har at gøre med flere forespørgere, der popper forskellige steder og forventer brugerinput.
Løsningen på problemet
Udover at sende tastetryk og museklik til ethvert vindue, kan AutoHotKey også manipulere dem. Vi så tidligere, hvordan du kan brug AutoHotKey til at fastgøre vinduer "altid øverst" ved hjælp af en tastaturgenvej. Denne gang vil vi dog drage fordel af AutoHotKeys vinduesmanipulationsevner til at:
- "Læs" det aktive vindues ID.
- "Læs" også dens dimensioner (bredde & højde).
- "Læs" skærmens dimensioner.
- Kombiner skærmens og vinduets dimensioner for at beregne de optimale koordinater til at præsentere vinduet i skærmens centrum.
- Flyt vinduet til disse koordinater.
Til sidst vil vi kortlægge ovenstående til en genvej. På denne måde kan du kalde det "on-demand" i stedet for at anvende det på alle vinduer - som kan forstyrre fuldskærms-apps og -spil.
Bemærk, at vi i denne tutorial dykker direkte ind i AutoHotKey. Hvis du ikke er bekendt med det og ønsker at lære mere på forhånd, så tjek vores hurtig AutoHotKey guide til begyndere.
Først opsætning af genvejstasten
Vi nævnte, hvordan vi kortlægger den funktion, vi vil oprette, til en genvej. Det er dog nok bedre, hvis vi begynder med den del for at få det af vejen.
Start med at downloade installationsprogrammet fra AutoHotKeys officielle side. Gå efter den "aktuelle" version i stedet for v2 beta eller den forældede 1.0 version. Installer det derefter på din pc.
Start File Explorer (den hurtigste måde er med Windows-tasten + E-tastkombinationen) og flyt til stien, hvor du vil oprette dit script. Med AutoHotKey installeret vil du få nogle nye muligheder vist på højrekliksmenuen. Så højreklik på den tomme plads i File Explorer's vindue og vælg Nyt > AutoHotKey-script.
Giv dit scripts fil et navn, og højreklik derefter på den og redigere det. Hvis du ikke bruger en kodevenlig tekstredigeringsapp, som Visual Studio Code eller Notepad++, skal du bruge Windows Notesblok. Undgå editorer som Wordpad, som kan tilføje ubrugelig (til formålet) syntaks til din "kode".
Når du er i din valgte editor, vil du se, at dit AutoHotKey-script allerede har nogle linjer forududfyldt øverst. De er der af stabilitets- og kompatibilitetsårsager. De er tweakable, men lad dem være som de er til denne tutorial.
"Flyt" to eller tre linjer under dem og indtast genvejen, der vil starte din funktion. Du kan lave en tastekombination ved at bruge "+" for Shift, "^" for CTRL, "!" for Alt, og "#" for Windows-tasten, såvel som enhver "normal" tast fra tastaturet (bogstaver og tal).
For at få CTRL + Y-kombinationen til at starte dit script, skal du f.eks. bruge:
^y::
Det dobbelte ":" er som at sige, "hey, AutoHotKey, tilknyt strengen eller tastekombinationen til venstre til alt til højre".
"Flyt" to eller tre linjer under det ved at trykke på Enter, og skriv "retur", som markerer slutningen af den pågældende funktion. Det komplette resultat skulle se ud som følgende:
^y::
; Dette er en kommentar.
Vend tilbage
Det "; Dette er en kommentar." linjen er netop det, en kommentar i scriptets "kode", som AutoHotKey ikke vil udføre. Det er der til dokumentationsformål for at markere det sted, hvor vi indtaster scriptets "kode" i de følgende trin.
Hvis du har fulgt vores guide på oprettelse af app-specifikke genvejstaster med AutoHotKey i fortiden, i dette tilfælde... ikke. Du vil have din vinduescentrerende genvejstast til at være "global" til at centrere nogen vindue fra nogen app. Hvis du "binder den" til en bestemt app, vil den kun virke på denne apps vinduer.
Få det aktive vindues detaljer
Vi vil have vores genvej til at virke på det aktive vindue, og vi har også brug for dens dimensioner til vores beregninger. Vi kan finde disse detaljer med følgende:
WinGetTitle, ActiveWindowTitle, A
WinGetPos Bredde, Højde, %ActiveWindowTitle%
Erstat den kommentarlinje, vi har tilføjet til scriptet i det foregående afsnit, med de to linjer ovenfor. Resultatet?
- Den første linje griber det aktive vindues titel.
- Den anden linje aflæser dens bredde og højde og tilknytter dem til ordene/variablerne "Bredde" og "Højde", som vi derefter skal bruge til vores beregninger.
Vi har det aktive vindues detaljer, men vi har også brug for monitorens synlige områdes dimensioner for at nå vores mål. Heldigvis er det endnu nemmere at finde ud af dem.
Hvad med det primære overvågningsområde?
Vi behøver ikke ekstra kommandoer for at finde vores primære skærms bredde og højde. AutoHotKey kommer med to forudindstillede variabler, der allerede indeholder denne information for os: "A_ScreenWidth" og "A_ScreenHeight".
Så når du ser dem i næste afsnit, "indeholder" de allerede den primære skærms bredde og højde. Der er intet nødvendigt for at tildele de korrekte værdier til dem. Vi kan således bruge dem direkte i vores beregninger.
Tid til at beregne målpositionen
Vi kan inkludere beregningerne direkte i de punkter i scriptet, hvor vi har brug for dem. Alligevel er det nemmere og bedre for læsbarheden, hvis vi kortlægger dem til to variable og derefter bruge disse variabler i vores script.
Så lad os gå efter "TargetX" som den variabel, der holder de vandrette koordinater og "TargetY" som en med de lodrette koordinater, hvor vi skal flytte vinduet for at få det vist i midten af skærmen.
TargetX := (A_ScreenWidth/2)-(Bredde/2); Her beregner vi vandret vindue mål...
TargetY := (A_ScreenHeight/2)-(Height/2); ...og her den lodrette.
Lad os dechifrere disse linjer på almindeligt engelsk:
- "TargetX" og "TargetY" er de to variable.
- ":=" informerer AutoHotKey om, at variablerne skal være lig med resultaterne af beregningerne til højre, og at disse resultater skal behandles som tal.
- "(A_ScreenWidth/2)" deler hele skærmens bredde med to.
- "(Width/2)" gør det samme for det aktive vindues bredde.
Med ovenstående trækker vi halvdelen af det aktive vindues bredde fra halvdelen af skærmens bredde. Tilbage er pladsen til venstre for vinduet – fra venstre side af skærmen og op til hvor vinduet skal vises. Den anden linje gør det samme, men for højden.
Nu skal du flytte vinduet
Udstyret med den almægtige viden, der er erhvervet fra de mystiske kommandoer, vi så ovenfor, kan vi nu lave vores magiske besværgelse, der vil fuldende vinduesteleporteringsritualet. Eller på almindeligt engelsk, brug AutoHotKeys "WinMove"-kommando til at flytte vinduer rundt på skærmen.
WinMove forventer, at vi "føder" det med mindst tre stykker information for at gøre dets handling: det målrettede vindues titel og koordinaterne, hvor det skal flyttes. Da vi allerede har kortlagt disse oplysninger til variabler, er kommandoen så enkel som:
WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%
I ovenstående:
- "WinMove" er AutoHotKey-kommandoen, der flytter et vindue rundt.
- "%ActiveWindowTitle%" er den variabel, hvor det aktive vindues titel er kortlagt.
- "%TargetX%" og "%TargetY%" er de vandrette og lodrette koordinater, hvor vinduet skal flyttes.
Du kan også ændre størrelse på vinduer med WinMove, springe over dem med særlige tekststing i deres titler eller indhold osv. Da disse funktioner er uden for rammerne af denne artikel, tjek AutoHotKeys officielle dokumentation om WinMove-kommandoen for mere om dem.
Det endelige manuskript
Endelig når vi den mest udfordrende del af vores rejse. Gør dig klar til det næste trin forventer, at du gemmer scriptet, og tja... Kør det.
Ja, det var det - manuskriptet er færdigt, og der er ikke andet at gøre end at prøve det. Brug den genvej, du har defineret, og ethvert aktivt vindue vil flytte til midten af din skærm.
Den endelige scriptfil, som åbnet i en teksteditor, skulle se sådan ud:
#IngenEnv; Anbefales for ydeevne og kompatibilitet med fremtidige AutoHotkey-udgivelser.
; #Advare; Aktiver advarsler for at hjælpe med at opdage almindelige fejl.
SendMode Input; Anbefalede tilny scripts på grund af dets overlegne hastighed og pålidelighed.
SetWorkingDir %A_ScriptDir%; Sikrer en ensartet startmappe.
^y::
WinGetTitle, ActiveWindowTitle, A; Hent det aktive vindue's titel for "målretning" det/agerer på det.
WinGetPos Bredde, Højde, %ActiveWindowTitle%; Få den aktive vindue's stilling, brugt til vores beregninger.
TargetX := (A_ScreenWidth/2)-(Bredde/2); Beregn det vandrette mål, hvor vi flytter vindue.
TargetY := (A_ScreenHeight/2)-(Højde/2); Beregn den lodrette placering af det vindue.WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Flyt vindue til de beregnede koordinater.
Vend tilbage
Bemærk, at du kan kopiere scriptet ovenfor, indsætte det i Notesblok eller en lignende teksteditor og gemme det med en AHK-udvidelse. Derefter "kør" det, med AutoHotKey installeret, for at centrere ethvert vindue, når du trykker på CTRL + Y. Hvis du ikke kan lide den genvej, skal du justere "^y::"-linjen til en anden tastekombination. For eksempel, !+c::
vil kortlægge funktionen til Shift + Alt + C-tastkombinationen.
Bonus spor
For nemheds skyld har vi besluttet at fremtrylle og inkludere et sekundært script, der vil være nyttigt for dem med opsætninger med to skærme.
For at holde denne artikel strømlinet har vi i stedet inkluderet oplysninger om, hvordan scriptet fungerer i det i form af kommentarer. Du kan fjerne dem fra din iteration.
Den korte historie om, hvordan det adskiller sig fra scriptet ovenfor, er, at vi også tilføjer en PositionToggle-variabel og noget "IF-logik". Vi bruger derefter dem til at "svirpe" vinduet mellem skærme. Vi bør bemærke, at det er en uelegant og "hack-y" løsning på problemet. Vi foretrak det dog frem for mere strømlinet kode, da denne tilgang er lettere at forstå og justere for alle, der ikke er bekendt med AutoHotKey.
#IngenEnv; Anbefales for ydeevne og kompatibilitet med fremtidige AutoHotkey-udgivelser.
; #Advare; Aktiver advarsler for at hjælpe med at opdage almindelige fejl.
SendMode Input; Anbefalede tilny scripts på grund af dets overlegne hastighed og pålidelighed.
SetWorkingDir %A_ScriptDir%; Sikrer en ensartet startmappe.
PositionToggle = 1; Brug -en nummersom et skifte til mærkning på som overvåger vindue skulle dukke op.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos Bredde, Højde, %ActiveWindowTitle%Hvis PositionToggle = 1; Kontrollere kontaktens tilstand og "gør hvad er der mellem de krøllede parenteser", hvis det er det sættil1til vores primære skærm.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_ScreenHeight/2)-(Height/2)
PositionToggle = 2; "Svirp" skiften, så hvis vi genbruger genvejstasten, vil vores aktive vindue flytte til den anden skærm.
}
Else If PositionToggle = 2; Har vi brugt genvejstasten før, "svirpende" skiftenummeret til den anden skærm? Så skal scriptet i stedet gøre hvad's mellem følgende krøllede parenteser i stedet for ovenstående.
{
SysGet, Mon2, Monitor, 2; Få den anden skærm's detaljer
Mon2Width := Man2Højre - Man2Venstre; Beregn den anden skærm's faktiske bredde.
Mon2Højde := Mon2Bund - Mon2Top; Beregn den anden skærm's faktiske højde.TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Beregn, hvor vinduet skal flyttes. Bemærk, at vi også tilføjer den primære skærm's bredde, da AutoHotKey kan't flytte vinduer på individuelle skærme, men på tværs af deres kombinerede "overflade".
TargetY := (Mon2Height/2)-(Højde/2)+Mon2Top; Beregn det optimale lodrette mål for at flytte vinduet på den anden skærm. Ligesom ovenfor, den anden skærm's lodrette detaljer registreres i forhold til den primære monitor. Derfor er vi nødt til at være kreative for at få et optimalt mål ved at anerkende, hvordan den anden monitor's top ern't lig med 0 (som den primære's).PositionToggle = 1; Svirp kontakten tilbage, så den hvis vi genbruger genvejstasten, den vindue vil flytte tilbage til den primære skærm.
}WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Selve handlingen, flytte den aktive vindue til vores beregnede koordinater.
Vend tilbage
Centrer et vindue med en nøgle, den nemme måde
Og nu er du færdig! Hvis alt fungerer godt, kan du nu bruge din nyligt opsatte genvejstast til at centrere et vindue når som helst.
Find, hvor du spilder din tid på Windows med AutoHotKey
Læs Næste
Relaterede emner
- Windows
- Windows 10
- Windows 11
- AutoHotkey
- Windows-tilpasning
Om forfatteren

OKs virkelige liv startede omkring klokken 10, da han fik sin første computer - en Commodore 128. Siden da har han smeltet tastaturet ved at skrive 24/7 og forsøgt at sprede The Word Of Tech til alle, der er interesserede nok til at lytte. Eller rettere sagt læs.
Abonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere