Ist es nicht extrem ärgerlich, wie, zumindest unter Windows, jedes Fenster irgendwo auf dem Bildschirm erscheinen kann? Geht Ihnen diese tägliche Zufälligkeit auf die Nerven und Sie hätten lieber mehr Kontrolle über die Platzierung Ihrer Fenster auf dem Bildschirm? Dank AutoHotKey können Sie das jetzt.
In diesem Tutorial sehen wir, wie Sie dieses Problem mit einem AutoHotKey-Skript lösen können. Wir bauen es so, dass es sich bewegt irgendein Fenster auf Tastendruck in die Mitte Ihres Bildschirms. Klingt süß? Mal sehen, wie es gemacht wird!
So richten Sie einen fensterzentrierenden Hotkey mit AutoHotKey ein
Die halbe Miete beim Erstellen eines Skripts besteht darin, herauszufinden, wie es funktionieren wird, bevor Sie überhaupt ein einzelnes Zeichen eingeben. Machen wir also einen solchen Aktionsplan im Klartext, den wir dann zu einem Drehbuch „mutieren“.
Das "Problem" hat Windows
Windows (wie in "die rechteckigen Dinger auf unseren Bildschirmen", nicht das Betriebssystem) neigt dazu, irgendwo auf dem Bildschirm zu erscheinen. Es lenkt ab und kann auch ärgerlich sein, wenn es wiederholt vorkommt. Besonders wenn es um mehrere Anfragende geht, die an verschiedenen Stellen auftauchen und Benutzereingaben erwarten.
Die Lösung des Problems
Abgesehen davon, dass Tastenanschläge und Mausklicks an jedes Fenster gesendet werden, kann AutoHotKey diese auch manipulieren. Wir haben in der Vergangenheit gesehen, wie Sie können Verwenden Sie AutoHotKey, um Fenster mit einer Tastenkombination „immer im Vordergrund“ anzuheften. Dieses Mal nutzen wir jedoch die Fenstermanipulationsfähigkeiten von AutoHotKey, um:
- "Lesen" Sie die ID des aktiven Fensters.
- "Lesen" Sie auch seine Abmessungen (Breite und Höhe).
- "Lesen" Sie die Abmessungen des Monitors.
- Kombinieren Sie die Abmessungen des Monitors und des Fensters, um die optimalen Koordinaten für die Darstellung des Fensters in der Bildschirmmitte zu berechnen.
- Bewegen Sie das Fenster zu diesen Koordinaten.
Schließlich ordnen wir das Obige einer Verknüpfung zu. Auf diese Weise können Sie es "on-demand" nennen, anstatt es anzuwenden alles Windows - was Apps und Spiele im Vollbildmodus stören könnte.
Beachten Sie, dass wir in diesem Tutorial direkt in AutoHotKey eintauchen. Wenn Sie damit nicht vertraut sind und vorher mehr erfahren möchten, sehen Sie sich unsere an schnelle AutoHotKey-Anleitung für Anfänger.
Zuerst den HotKey einrichten
Wir haben erwähnt, wie wir die Funktion, die wir erstellen, einer Verknüpfung zuordnen. Es ist jedoch wahrscheinlich besser, wenn wir mit diesem Teil beginnen, um es aus dem Weg zu räumen.
Laden Sie zunächst das Installationsprogramm von herunter Offizielle Seite von AutoHotKey. Entscheiden Sie sich für die "aktuelle" Version anstelle der v2-Beta oder der veralteten Version 1.0. Installieren Sie es dann auf Ihrem PC.
Starten Sie den Datei-Explorer (der schnellste Weg ist die Tastenkombination Windows-Taste + E) und wechseln Sie zu dem Pfad, in dem Sie Ihr Skript erstellen möchten. Wenn AutoHotKey installiert ist, erscheinen einige neue Optionen im Rechtsklick-Menü. Klicken Sie also mit der rechten Maustaste auf den leeren Bereich des Fensters des Datei-Explorers und wählen Sie Neu > AutoHotKey-Skript.
Geben Sie der Datei Ihres Skripts einen Namen und klicken Sie dann mit der rechten Maustaste darauf und bearbeiten es. Wenn Sie keine codefreundliche Textbearbeitungs-App wie Visual Studio Code oder Notepad++ verwenden, verwenden Sie Windows Notepad. Vermeiden Sie Editoren wie Wordpad, die Ihrem "Code" nutzlose (für den Zweck) Syntax hinzufügen könnten.
Wenn Sie sich im Editor Ihrer Wahl befinden, sehen Sie, dass Ihr AutoHotKey-Skript bereits einige Zeilen oben vorbelegt hat. Sie sind aus Stabilitäts- und Kompatibilitätsgründen da. Sie können angepasst werden, aber lassen Sie sie für dieses Tutorial so, wie sie sind.
"Bewegen" Sie sich zwei oder drei Zeilen darunter und geben Sie die Verknüpfung ein, die Ihre Funktion startet. Sie können eine Tastenkombination erstellen, indem Sie "+" für Shift, "^" für CTRL, "!" für Alt und "#" für die Windows-Taste sowie jede "normale" Taste der Tastatur (Buchstaben und Zahlen).
Um beispielsweise Ihr Skript mit der Kombination STRG + Y zu starten, verwenden Sie:
^y::
Das doppelte ":" ist wie zu sagen: "Hey, AutoHotKey, bitte ordnen Sie die Zeichenfolge oder Tastenkombination auf der linken Seite allem auf der rechten Seite zu".
Bewegen Sie zwei oder drei Zeilen darunter, indem Sie die Eingabetaste drücken, und geben Sie "return" ein, was das Ende der jeweiligen Funktion markiert. Das vollständige Ergebnis sollte wie folgt aussehen:
^y::
; Das ist ein Kommentar.
Rückkehr
Das "; Dies ist ein Kommentar." Zeile ist genau das, ein Kommentar im "Code" des Skripts, den AutoHotKey nicht ausführt. Es ist zu Dokumentationszwecken da, um die Stelle zu markieren, an der wir in den folgenden Schritten den "Code" des Skripts eingeben.
Wenn Sie unseren Leitfaden befolgt haben App-spezifische Hotkeys mit AutoHotKey erstellen in der Vergangenheit, in diesem Fall... nicht. Sie möchten, dass Ihr Fenster-Zentrierungs-Hotkey "global" zum Zentrieren ist irgendein Fenster ab irgendein App. Wenn Sie es an eine bestimmte App "binden", wirkt es nur auf die Fenster dieser App.
Rufen Sie die Details des aktiven Fensters ab
Wir möchten, dass unsere Verknüpfung auf das aktive Fenster wirkt, und wir benötigen auch seine Abmessungen für unsere Berechnungen. Wir können diese Details wie folgt finden:
WinGetTitle, ActiveWindowTitle, A
WinGetPos Breite, Höhe, %ActiveWindowTitle%
Ersetzen Sie die Kommentarzeile, die wir dem Skript im vorherigen Abschnitt hinzugefügt haben, durch die beiden obigen Zeilen. Das Ergebnis?
- Die erste Zeile enthält den Titel des aktiven Fensters.
- Die zweite Zeile liest seine Breite und Höhe und ordnet sie den Wörtern/Variablen "Breite" und "Höhe" zu, die wir als nächstes für unsere Berechnungen verwenden werden.
Wir haben die Details des aktiven Fensters erhalten, aber wir benötigen auch die Abmessungen des sichtbaren Bereichs des Monitors, um unser Ziel zu erreichen. Zum Glück ist es noch einfacher, diese herauszufinden.
Was ist mit dem primären Monitorbereich?
Wir brauchen keine zusätzlichen Befehle, um die Breite und Höhe unseres primären Monitors zu finden. AutoHotKey kommt mit zwei voreingestellten Variablen, die diese Informationen bereits für uns enthalten: "A_ScreenWidth" und "A_ScreenHeight".
Wenn Sie sie also im nächsten Abschnitt sehen, „enthalten“ sie bereits die Breite und Höhe des primären Monitors. Es ist nichts nötig, um ihnen die richtigen Werte zuzuweisen. Somit können wir sie direkt in unseren Berechnungen verwenden.
Zeit zur Berechnung der Zielposition
Wir können die Berechnungen direkt an den Stellen des Skripts einfügen, an denen wir sie benötigen. Dennoch ist es einfacher und besser für die Lesbarkeit, wenn wir sie zwei Variablen und zuordnen dann Verwenden Sie diese Variablen in unserem Skript.
Nehmen wir also „TargetX“ als Variable, die die horizontalen Koordinaten enthält, und „TargetY“ als Variable eine mit den vertikalen Koordinaten, wohin wir das Fenster verschieben sollten, damit es in der Mitte des angezeigt wird Bildschirm.
TargetX := (A_ScreenWidth/2)-(Breite/2); Hier berechnen wir die Horizontale Fenster Ziel...
TargetY := (A_ScreenHeight/2)-(Höhe/2); ...und hier die Senkrechte.
Lassen Sie uns diese Zeilen im Klartext entziffern:
- "TargetX" und "TargetY" sind die beiden Variablen.
- ":=" informiert AutoHotKey, dass die Variablen gleich den Ergebnissen der Berechnungen auf der rechten Seite sein sollten und dass diese Ergebnisse als Zahlen behandelt werden sollten.
- "(A_ScreenWidth/2)" teilt die volle Monitorbreite durch zwei.
- "(Width/2)" macht dasselbe für die Breite des aktiven Fensters.
Damit subtrahieren wir die halbe Breite des aktiven Fensters von der halben Bildschirmbreite. Was übrig bleibt, ist der Platz links neben dem Fenster - von der linken Seite des Bildschirms bis zu der Stelle, an der das Fenster erscheinen soll. Die zweite Zeile macht dasselbe, aber für die Höhe.
Jetzt das Fenster neu positionieren
Ausgestattet mit dem allmächtigen Wissen, das wir durch die mystischen Befehle, die wir oben gesehen haben, erworben haben, können wir jetzt unsere magische Beschwörung herstellen, die das Ritual der Fensterteleportation vervollständigt. Oder verwenden Sie im Klartext den Befehl "WinMove" von AutoHotKey, um Fenster auf dem Bildschirm zu verschieben.
WinMove erwartet, dass wir es mit mindestens drei Informationen "füttern", um seine Tat zu erledigen: den Titel des Zielfensters und die Koordinaten, wohin es verschoben werden soll. Da wir diese Informationen bereits Variablen zugeordnet haben, ist der Befehl so einfach wie:
WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%
In obigem:
- "WinMove" ist der AutoHotKey-Befehl, der ein Fenster bewegt.
- "%ActiveWindowTitle%" ist die Variable, der der Titel des aktiven Fensters zugeordnet wird.
- "%TargetX%" und "%TargetY%" sind die horizontalen und vertikalen Koordinaten, wohin das Fenster verschoben werden soll.
Sie können mit WinMove auch die Größe von Fenstern ändern, Fenster mit bestimmten Textstellen in ihren Titeln oder Inhalten überspringen usw. Da diese Funktionen den Rahmen dieses Artikels sprengen, überprüfen Sie Die offizielle Dokumentation von AutoHotKey zum WinMove-Befehl für mehr über sie.
Das letzte Skript
Endlich erreichen wir den anspruchsvollsten Teil unserer Reise. Machen Sie sich bereit für den nächsten Schritt, der von Ihnen erwartet, dass Sie das Skript speichern und, na ja... Starte es.
Ja, das war es – das Drehbuch ist fertig, und es bleibt nichts weiter zu tun, als es auszuprobieren. Verwenden Sie die von Ihnen definierte Verknüpfung, und jedes aktive Fenster wird in die Mitte Ihres Bildschirms verschoben.
Die endgültige Skriptdatei sollte, wenn sie in einem Texteditor geöffnet wird, etwa so aussehen:
#NoEnv; Empfohlen für Leistung und Kompatibilität mit zukünftigen AutoHotkey-Versionen.
; #Warnen; Aktivieren Sie Warnungen, um bei der Erkennung häufiger Fehler zu helfen.
SendMode-Eingang; Empfohlen zumNeu Skripte aufgrund seiner überlegenen Geschwindigkeit und Zuverlässigkeit.
SetWorkingDir %A_ScriptDir%; Sorgt für ein konsistentes Startverzeichnis.
^y::
WinGetTitle, ActiveWindowTitle, A; Holen Sie sich das aktive Fenster's Titel für "Ausrichtung" es / danach handeln.
WinGetPos Breite, Höhe, %ActiveWindowTitle%; Holen Sie sich das Aktiv Fenster's Position, verwendet zum unsere Berechnungen.
TargetX := (A_ScreenWidth/2)-(Breite/2); Berechnen Sie das horizontale Ziel, wohin wir uns bewegen werden Fenster.
TargetY := (A_ScreenHeight/2)-(Höhe/2); Berechnen Sie die vertikale Platzierung von das Fenster.WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Beweg das Fenster zu den berechneten Koordinaten.
Rückkehr
Beachten Sie, dass Sie das obige Skript kopieren, in Notepad oder einen ähnlichen Texteditor einfügen und mit einer AHK-Erweiterung speichern können. Führen Sie es dann mit installiertem AutoHotKey aus, um jedes Fenster zu zentrieren, wenn Sie STRG + Y drücken. Wenn Ihnen diese Abkürzung nicht gefällt, passen Sie die Zeile „^y::“ an eine andere Tastenkombination an. Zum Beispiel, !+c::
würde die Funktion der Tastenkombination Umschalt + Alt + C zuordnen.
Bonuslied
Für Ihre Bequemlichkeit haben wir uns entschieden, ein sekundäres Skript zu beschwören und einzufügen, das für diejenigen mit Dual-Monitor-Setups nützlich sein wird.
Um diesen Artikel übersichtlich zu halten, haben wir stattdessen Informationen darüber, wie das Skript darin funktioniert, in Form von Kommentaren eingefügt. Sie können sie aus Ihrer Iteration entfernen.
Die kurze Geschichte, wie es sich vom obigen Skript unterscheidet, ist, dass wir auch eine PositionToggle-Variable und etwas "IF-Logik" hinzufügen. Wir verwenden diese dann, um das Fenster zwischen den Monitoren zu "flicken". Wir sollten beachten, dass es sich um eine unelegante und "hackige" Lösung für das Problem handelt. Wir haben es jedoch einem schlankeren Code vorgezogen, da dieser Ansatz für alle, die nicht mit AutoHotKey vertraut sind, einfacher zu verstehen und zu optimieren ist.
#NoEnv; Empfohlen für Leistung und Kompatibilität mit zukünftigen AutoHotkey-Versionen.
; #Warnen; Aktivieren Sie Warnungen, um bei der Erkennung häufiger Fehler zu helfen.
SendMode-Eingang; Empfohlen zumNeu Skripte aufgrund seiner überlegenen Geschwindigkeit und Zuverlässigkeit.
SetWorkingDir %A_ScriptDir%; Sorgt für ein konsistentes Startverzeichnis.
PositionToggle = 1; Benutzen a Anzahlals ein Umschalter zum Markierung An die die überwachen Fenster sollte erscheinen.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos Breite, Höhe, %ActiveWindowTitle%Wenn PositionToggle = 1; Überprüfen den Zustand des Umschalters und "tun was steht zwischen den geschweiften Klammern" wenn ja einstellenzu1zum unser Hauptmonitor.
{
TargetX := (A_ScreenWidth/2)-(Breite/2)
TargetY := (A_ScreenHeight/2)-(Höhe/2)
PositionToggle = 2; "Schnippen" den Umschalter, sodass unser aktives Fenster bei erneuter Verwendung des Hotkeys auf den zweiten Monitor verschoben wird.
}
Else If PositionToggle = 2; Haben wir den Hotkey schon einmal benutzt, "schnippen" die Toggle-Nummer auf den zweiten Monitor? Dann sollte das Script stattdessen was machen's zwischen den folgenden geschweiften Klammern anstelle der obigen.
{
SysGet, Mon2, Monitor, 2; Holen Sie sich den zweiten Monitor's-Details
Mon2Breite := Mon2Rechts - Mon2Links; Berechnen Sie den zweiten Monitor's tatsächliche Breite.
Mon2Height := Mon2Bottom - Mon2Top; Berechnen Sie den zweiten Monitor's tatsächliche Höhe.TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Berechnen Sie, wohin das Fenster verschoben werden soll. Beachten Sie, dass wir auch den primären Monitor hinzufügen's Breite seit AutoHotKey kann'Verschieben Sie keine Fenster auf einzelnen Monitoren, sondern über ihre kombinierten "Fläche".
TargetY := (Mon2Height/2)-(Höhe/2)+Mon2Top; Berechnen Sie das optimale vertikale Ziel zum Verschieben des Fensters auf dem zweiten Monitor. Wie oben, der zweite Monitor's vertikale Details werden in Relation zum primären Monitor erkannt. Daher müssen wir kreativ werden, um ein optimales Ziel zu erhalten, indem wir erkennen, wie der zweite Monitor funktioniert's top isn't gleich 0 (wie die primäre's).PositionToggle = 1; Schieben Sie den Schalter zurück, damit Wenn Wir verwenden den Hotkey wieder, die Fenster wechselt zurück zum primären Monitor.
}WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Die eigentliche Aktion, das Bewegen des Aktiven Fenster zu unseren berechneten Koordinaten.
Rückkehr
Zentrieren Sie ein Fenster mit einem Schlüssel, der einfache Weg
Und jetzt sind Sie fertig! Wenn alles gut funktioniert, können Sie jetzt jederzeit Ihren neu eingerichteten Hotkey verwenden, um ein Fenster zu zentrieren.
Finden Sie mit AutoHotKey heraus, wo Sie Ihre Zeit unter Windows verschwenden
Lesen Sie weiter
Verwandte Themen
- Windows
- Windows 10
- Windows11
- AutoHotkey
- Windows-Anpassung
Über den Autor
OKs wirkliches Leben begann um 10, als er seinen ersten Computer bekam - einen Commodore 128. Seitdem schmelzt er Tastenkappen, indem er rund um die Uhr tippt, und versucht, The Word Of Tech an alle zu verbreiten, die interessiert genug sind, um zuzuhören. Oder besser gesagt lesen.
Abonnieren Sie unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Klicken Sie hier, um sich anzumelden