Non è estremamente fastidioso come, almeno su Windows, qualsiasi finestra possa apparire in qualsiasi punto dello schermo? Quella casualità quotidiana ti dà sui nervi e preferiresti avere un maggiore controllo sul posizionamento sullo schermo delle tue finestre? Bene, ora puoi, grazie ad AutoHotKey.
In questo tutorial vedremo come risolvere questo problema con uno script AutoHotKey. Lo costruiremo in modo che si muova qualunque finestra al centro dello schermo premendo un tasto. Suona dolce? Vediamo come si fa!
Come impostare un tasto di scelta rapida per centrare le finestre con AutoHotKey
Metà della battaglia durante la creazione di una sceneggiatura sta nel capire come funzionerà prima ancora di digitare un singolo personaggio. Quindi, creiamo un tale piano d'azione in un inglese semplice che poi "muteremo" in un copione.
Il "problema" di Windows
Windows (come in "le cose rettangolari sui nostri schermi", non il sistema operativo) tendono a comparire in qualsiasi punto dello schermo. È fonte di distrazione e può anche essere fastidioso quando accade ripetutamente. Soprattutto quando si ha a che fare con più richiedenti che spuntano in punti diversi, aspettandosi l'input dell'utente.
La soluzione al problema
Oltre a inviare sequenze di tasti e clic del mouse a qualsiasi finestra, AutoHotKey può anche manipolarli. Abbiamo visto in passato come puoi usa AutoHotKey per bloccare Windows "sempre in primo piano" usando una scorciatoia da tastiera. Questa volta, tuttavia, sfrutteremo le capacità di manipolazione della finestra di AutoHotKey per:
- "Leggi" l'ID della finestra attiva.
- Anche "leggere" le sue dimensioni (larghezza e altezza).
- "Leggi" le dimensioni del monitor.
- Combina le dimensioni del monitor e della finestra per calcolare le coordinate ottimali per presentare detta finestra al centro dello schermo.
- Sposta la finestra su quelle coordinate.
Infine, mapperemo quanto sopra a una scorciatoia. In questo modo, puoi chiamarlo "on-demand" invece di applicarlo Tutto windows - che potrebbe interferire con app e giochi a schermo intero.
Nota che in questo tutorial ci tufferemo direttamente in AutoHotKey. Se non lo conosci e vuoi saperne di più in anticipo, controlla il nostro guida rapida AutoHotKey per principianti.
Innanzitutto, configurare il tasto di scelta rapida
Abbiamo menzionato come mapperemo la funzione che creeremo su una scorciatoia. Tuttavia, probabilmente è meglio se iniziamo con quella parte per toglierlo di mezzo.
Inizia scaricando il programma di installazione da Sito ufficiale di AutoHotKey. Scegli la versione "corrente" anziché la versione beta v2 o la versione 1.0 deprecata. Quindi, installalo sul tuo PC.
Avvia Esplora file (il modo più rapido è con la combinazione di tasti Windows + E) e spostati nel percorso in cui desideri creare lo script. Con AutoHotKey installato, vedrai alcune nuove opzioni visualizzate nel menu di scelta rapida. Quindi, fai clic con il pulsante destro del mouse sullo spazio vuoto della finestra di Esplora file e scegli Nuovo > Script AutoHotKey.
Assegna un nome al file dello script, quindi fai clic con il pulsante destro del mouse su di esso e modificare esso. Se non usi un'app di modifica del testo compatibile con il codice, come Visual Studio Code o Notepad++, usa Blocco note di Windows. Evita editor come Wordpad, che potrebbero aggiungere una sintassi inutile (per lo scopo) al tuo "codice".
Quando sei nel tuo editor di scelta, vedrai che il tuo script AutoHotKey ha già alcune righe precompilate nella parte superiore. Sono lì per motivi di stabilità e compatibilità. Sono modificabili, ma lasciali come sono per questo tutorial.
"Sposta" due o tre righe sotto di esse e inserisci la scorciatoia che avvierà la tua funzione. Puoi creare una combinazione di tasti usando "+" per Maiusc, "^" per CTRL, "!" per Alt e "#" per il tasto Windows, nonché qualsiasi tasto "normale" della tastiera (lettere e numeri).
Ad esempio, per fare in modo che la combinazione CTRL + Y avvii il tuo script, usa:
^y::
Il doppio ":" è come dire "ehi, AutoHotKey, per favore mappa la stringa o la combinazione di tasti a sinistra su tutto a destra".
"Sposta" due o tre righe sotto premendo Invio e digita "ritorno", che segnerà la fine della particolare funzione. Il risultato completo dovrebbe essere simile al seguente:
^y::
; Questo è un commento.
Restituzione
Il "; Questo è un commento." riga è esattamente quello, un commento nel "codice" dello script che AutoHotKey non eseguirà. È lì per scopi di documentazione per contrassegnare il punto in cui inseriremo il "codice" dello script nei passaggi seguenti.
Se hai seguito la nostra guida su creazione di tasti di scelta rapida specifici dell'app con AutoHotKey in passato, in questo caso... non. Vuoi che il tuo tasto di scelta rapida per centrare la finestra sia "globale" per centrare qualunque finestra da qualunque app. Se lo "leghi" a un'app particolare, agirà solo sulle finestre di questa app.
Ottieni i dettagli della finestra attiva
Vogliamo che la nostra scorciatoia agisca sulla finestra attiva e abbiamo anche bisogno delle sue dimensioni per i nostri calcoli. Possiamo trovare quei dettagli con quanto segue:
WinGetTitle, ActiveWindowTitle, A
WinGetPos Larghezza, Altezza, %ActiveWindowTitle%
Sostituisci la riga di commento che abbiamo aggiunto allo script nella sezione precedente con le due righe sopra. Il risultato?
- La prima riga prende il titolo della finestra attiva.
- La seconda riga ne legge la larghezza e l'altezza e le mappa alle parole/variabili "Larghezza" e "Altezza", che useremo in seguito per i nostri calcoli.
Abbiamo i dettagli della finestra attiva, ma abbiamo anche bisogno delle dimensioni dell'area visibile del monitor per raggiungere il nostro obiettivo. Per fortuna, scoprirli è ancora più facile.
Che dire dell'area monitor principale?
Non abbiamo bisogno di comandi aggiuntivi per trovare la larghezza e l'altezza del nostro monitor principale. AutoHotKey viene fornito con due variabili preimpostate che contengono già tali informazioni per noi: "A_ScreenWidth" e "A_ScreenHeight".
Quindi, quando li vedi nella sezione successiva, "contengono" già la larghezza e l'altezza del monitor principale. Non è necessario assegnare loro i valori corretti. Pertanto, possiamo usarli direttamente nei nostri calcoli.
Tempo per calcolare la posizione target
Possiamo includere i calcoli direttamente nei punti dello script dove ne abbiamo bisogno. Tuttavia, è più facile e migliore per la leggibilità se li mappiamo su due variabili e poi usa quelle variabili nel nostro script.
Quindi, andiamo per "TargetX" come variabile che conterrà le coordinate orizzontali e "TargetY" come uno con le coordinate verticali dove dovremmo spostare la finestra per farla apparire al centro del schermo.
TargetX := (A_ScreenWidth/2)-(Larghezza/2); Qui calcoliamo l'orizzontale finestra bersaglio...
TargetY := (A_ScreenHeight/2)-(Height/2); ...e qui quello verticale.
Decifriamo quelle righe in un inglese semplice:
- "TargetX" e "TargetY" sono le due variabili.
- ":=" informa AutoHotKey che le variabili devono essere uguali ai risultati dei calcoli a destra e che tali risultati devono essere trattati come numeri.
- "(A_ScreenWidth/2)" divide l'intera larghezza del monitor per due.
- "(Width/2)" fa lo stesso per la larghezza della finestra attiva.
Con quanto sopra, sottraiamo metà della larghezza della finestra attiva dalla metà della larghezza dello schermo. Quello che resta è lo spazio a sinistra della finestra, dal lato sinistro dello schermo fino al punto in cui dovrebbe apparire la finestra. La seconda riga fa lo stesso ma per l'altezza.
Ora per riposizionare la finestra
Dotati dell'onnipotente conoscenza acquisita dai comandi mistici che abbiamo visto sopra, ora possiamo creare il nostro incantesimo magico che completerà il rituale di teletrasporto della finestra. Oppure, in parole povere, usa il comando "WinMove" di AutoHotKey per spostare le finestre sullo schermo.
WinMove si aspetta che lo "alimentiamo" con almeno tre informazioni per compiere il suo compito: il titolo della finestra mirata e le coordinate su cui spostarla. Dal momento che abbiamo già mappato quelle informazioni sulle variabili, il comando è semplice come:
WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%
In quanto sopra:
- "WinMove" è il comando AutoHotKey che sposta una finestra in giro.
- "%ActiveWindowTitle%" è la variabile in cui è mappato il titolo della finestra attiva.
- "%TargetX%" e "%TargetY%" sono le coordinate orizzontali e verticali dove spostare la finestra.
Puoi anche ridimensionare le finestre con WinMove, saltare quelle con particolari punti di testo nei loro titoli o contenuti, ecc. Poiché queste funzionalità non rientrano nell'ambito di questo articolo, controlla La documentazione ufficiale di AutoHotKey sul comando WinMove per saperne di più su di loro.
La sceneggiatura finale
Infine, raggiungiamo la parte più impegnativa del nostro viaggio. Preparati per il passaggio successivo, in attesa che tu salvi lo script e, beh... Eseguirlo.
Sì, è così: lo script è completo e non c'è altro da fare che provarlo. Usa il collegamento che hai definito e qualsiasi finestra attiva si sposterà al centro dello schermo.
Il file di script finale, come aperto in un editor di testo, dovrebbe assomigliare a questo:
#Nessuna busta; Consigliato per prestazioni e compatibilità con le future versioni di AutoHotkey.
; #Avvisare; Abilita gli avvisi per facilitare il rilevamento degli errori comuni.
Input modalità di invio; Consigliato pernuovo script grazie alla sua velocità e affidabilità superiori.
SetWorkingDir %A_ScriptDir%; Garantisce una directory di partenza coerente.
^y::
WinGetTitle, ActiveWindowTitle, A; Ottieni la finestra attiva's titolo per "mirare" esso/agire su di esso.
WinGetPos Larghezza, Altezza, %ActiveWindowTitle%; Ottieni l'attivo finestraposizione, usata per i nostri calcoli
TargetX := (A_ScreenWidth/2)-(Larghezza/2); Calcola il target orizzontale dove sposteremo il finestra.
TargetY := (A_ScreenHeight/2)-(Altezza/2); Calcola il posizionamento verticale di il finestra.WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Muovi il finestra alle coordinate calcolate.
Restituzione
Nota che puoi copiare lo script sopra, incollarlo nel Blocco note o in un editor di testo simile e salvarlo con un'estensione AHK. Quindi, "eseguilo", con AutoHotKey installato, per centrare qualsiasi finestra ogni volta che premi CTRL + Y. Se non ti piace quella scorciatoia, modifica la riga "^y::" con una combinazione di tasti diversa. Per esempio, !+c::
mapperebbe la funzione sulla combinazione di tasti Maiusc + Alt + C.
Traccia bonus
Per tua comodità, abbiamo deciso di evocare e includere uno script secondario che sarà utile a chi ha configurazioni a doppio monitor.
Per mantenere questo articolo snello, abbiamo invece incluso informazioni su come funziona lo script al suo interno sotto forma di commenti. Puoi rimuoverli dalla tua iterazione.
La breve storia di come differisce dallo script sopra è che aggiungiamo anche una variabile PositionToggle e un po' di "logica IF". Quindi li usiamo per "scorrere" la finestra tra i monitor. Dovremmo notare che è una soluzione inelegante e "hack-y" al problema. Tuttavia, l'abbiamo preferito a un codice più snello poiché questo approccio è più facile da comprendere e modificare per tutti coloro che non hanno familiarità con AutoHotKey.
#Nessuna busta; Consigliato per prestazioni e compatibilità con le future versioni di AutoHotkey.
; #Avvisare; Abilita gli avvisi per facilitare il rilevamento degli errori comuni.
Input modalità di invio; Consigliato pernuovo script grazie alla sua velocità e affidabilità superiori.
SetWorkingDir %A_ScriptDir%; Garantisce una directory di partenza coerente.
PositionToggle = 1; Utilizzo un numerocome un interruttore per marcatura su che controllano il finestra dovrebbe apparire.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos Larghezza, Altezza, %ActiveWindowTitle%Se PositionToggle = 1; Controllo lo stato dell'interruttore e "fare cosa c'è tra parentesi graffe" se lo è impostarea1per il nostro monitor principale.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
TargetY := (A_ScreenHeight/2)-(Height/2)
PositionToggle = 2; "Scorri" l'interruttore in modo che se riutilizziamo il tasto di scelta rapida, la nostra finestra attiva si sposterà sul secondo monitor.
}
Altrimenti se PositionToggle = 2; Abbiamo già usato il tasto di scelta rapida? "sfarfallio" il numero di commutazione al secondo monitor? Quindi lo script dovrebbe invece fare cosa's tra le parentesi graffe seguenti invece di quelle sopra.
{
SysGet, Mon2, Monitor, 2; Prendi il secondo monitor'i dettagli
Lun2Larghezza := Lun2Destra - Lun2Sinistra; Calcola il secondo monitor's larghezza effettiva.
Mon2Altezza := Mon2Bottom - Mon2Alto; Calcola il secondo monitor's altezza effettiva.TargetX := (Lun2Larghezza/2)-(Larghezza/2)+A_Larghezza schermo; Calcola dove spostare la finestra. Si noti che aggiungiamo anche il monitor principale's larghezza poiché AutoHotKey può't spostare le finestre sui singoli monitor ma attraverso i loro combinati "superficie".
TargetY := (Lun2Altezza/2)-(Altezza/2)+Lun2Alto; Calcola il target verticale ottimale per spostare la finestra sul secondo monitor. Come sopra, il secondo monitor's i dettagli verticali vengono rilevati rispetto al monitor principale. Pertanto, dobbiamo essere creativi per ottenere un obiettivo ottimale riconoscendo come funziona il secondo monitor'Il top è't uguale a 0 (come quello primario'S).PositionToggle = 1; Sposta indietro l'interruttore in modo che Se riutilizziamo il tasto di scelta rapida, il finestra tornerà al monitor principale.
}WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; L'azione reale, muovere l'attivo finestra alle nostre coordinate calcolate.
Restituzione
Centrare una finestra con una chiave, il modo più semplice
E ora hai finito! Se tutto funziona bene, ora puoi utilizzare il tasto di scelta rapida appena impostato per centrare una finestra in qualsiasi momento.
Trova dove perdi tempo su Windows con AutoHotKey
Leggi Avanti
Argomenti correlati
- finestre
- Windows 10
- Windows 11
- Tasto di scelta rapida automatico
- Personalizzazione di Windows
Circa l'autore
La vita reale di OK è iniziata intorno alle 10, quando ha ottenuto il suo primo computer: un Commodore 128. Da allora, ha sciolto i tasti digitando 24 ore su 24, 7 giorni su 7, cercando di diffondere The Word Of Tech a chiunque fosse abbastanza interessato da ascoltare. O meglio, leggi.
Iscriviti alla nostra Newsletter
Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!
Clicca qui per iscriverti