¿No es muy molesto cómo, al menos en Windows, cualquier ventana puede aparecer en cualquier parte de la pantalla? ¿Esa aleatoriedad diaria lo pone nervioso y prefiere tener más control sobre la ubicación de sus ventanas en la pantalla? Bueno, ahora puedes, gracias a AutoHotKey.
En este tutorial, veremos cómo puede resolver este problema con un script AutoHotKey. Lo construiremos para que se mueva ninguna ventana al centro de la pantalla con solo presionar una tecla. ¿Suena dulce? ¡Veamos cómo se hace!
Cómo configurar una tecla de acceso rápido para centrar ventanas con AutoHotKey
La mitad de la batalla al crear un guión es determinar cómo funcionará incluso antes de escribir un solo carácter. Entonces, hagamos un plan de acción de este tipo en un lenguaje sencillo que luego "mutaremos" en un guión.
El "problema" que tiene Windows
Windows (como en "las cositas rectangulares en nuestras pantallas", no el sistema operativo) tiende a aparecer en cualquier parte de la pantalla. Es una distracción y también puede ser molesto cuando sucede repetidamente. Especialmente cuando se trata de múltiples solicitantes que aparecen en diferentes lugares, esperando la entrada del usuario.
La solución al problema
Además de enviar pulsaciones de teclas y clics del mouse a cualquier ventana, AutoHotKey también puede manipularlos. Vimos en el pasado cómo se puede use AutoHotKey para anclar ventanas "siempre en la parte superior" usando un atajo de teclado. Esta vez, sin embargo, aprovecharemos las capacidades de manipulación de ventanas de AutoHotKey para:
- "Leer" el ID de la ventana activa.
- También "lea" sus dimensiones (ancho y alto).
- "Lea" las dimensiones del monitor.
- Combine las dimensiones del monitor y de la ventana para calcular las coordenadas óptimas para presentar dicha ventana en el centro de la pantalla.
- Mueva la ventana a esas coordenadas.
Finalmente, asignaremos lo anterior a un atajo. De esta manera, puede llamarlo "bajo demanda" en lugar de aplicarlo en todos Windows, que podría interferir con aplicaciones y juegos de pantalla completa.
Tenga en cuenta que en este tutorial, nos sumergiremos directamente en AutoHotKey. Si no está familiarizado con él y desea obtener más información de antemano, consulte nuestro guía rápida de AutoHotKey para principiantes.
Primero, configurar la tecla de acceso directo
Mencionamos cómo asignaremos la función que crearemos a un atajo. Sin embargo, probablemente sea mejor si comenzamos con esa parte para sacarla del camino.
Comience descargando el instalador de Sitio oficial de AutoHotKey. Elija la versión "actual" en lugar de la v2 beta o la versión obsoleta 1.0. Luego, instálalo en tu PC.
Inicie el Explorador de archivos (la forma más rápida es con la combinación de teclas Windows + E) y muévase a la ruta donde desea crear su secuencia de comandos. Con AutoHotKey instalado, aparecerán algunas opciones nuevas en el menú contextual. Entonces, haga clic derecho en el espacio vacío de la ventana del Explorador de archivos y elija Nuevo > Script AutoHotKey.
Asigne un nombre al archivo de su secuencia de comandos y luego haga clic con el botón derecho en él y editar eso. Si no utiliza una aplicación de edición de texto compatible con el código, como Visual Studio Code o Notepad++, utilice el Bloc de notas de Windows. Evite editores como Wordpad, que podría agregar sintaxis inútil (para el propósito) a su "código".
Cuando esté en el editor de su elección, verá que su secuencia de comandos AutoHotKey ya tiene algunas líneas rellenadas previamente en la parte superior. Están ahí por razones de estabilidad y compatibilidad. Son modificables, pero déjelos como están para este tutorial.
"Mover" dos o tres líneas debajo de ellos e ingrese el acceso directo que iniciará su función. Puede crear una combinación de teclas usando "+" para Shift, "^" para CTRL, "!" para Alt y "#" para la tecla de Windows, así como cualquier tecla "normal" del teclado (letras y números).
Por ejemplo, para que la combinación CTRL + Y inicie su secuencia de comandos, use:
^y::
El doble ":" es como decir, "oye, AutoHotKey, asigna la cadena o combinación de teclas de la izquierda a todo lo que está a la derecha".
"Mover" dos o tres líneas debajo de eso presionando Enter, y escriba "return", que marcará el final de la función en particular. El resultado completo debería ser similar al siguiente:
^y::
; Este es un comentario.
devolver
Él "; Esto es un comentario." La línea es precisamente eso, un comentario en el "código" del script que AutoHotKey no ejecutará. Está allí con fines de documentación para marcar el lugar donde ingresaremos el "código" del script en los siguientes pasos.
Si ha seguido nuestra guía sobre crear teclas de acceso directo específicas de la aplicación con AutoHotKey en el pasado, en este caso... no. Desea que su tecla de acceso directo de centrado de ventana sea "global" para centrar ninguna ventana de ninguna aplicación Si lo "vincula" a una aplicación en particular, solo actuará en las ventanas de esta aplicación.
Obtenga los detalles de la ventana activa
Queremos que nuestro atajo actúe en la ventana activa, y también necesitamos sus dimensiones para nuestros cálculos. Podemos encontrar esos detalles con lo siguiente:
WinGetTitle, ActiveWindowTitle, A
WinGetPos Ancho, Alto, %ActiveWindowTitle%
Reemplace la línea de comentario que agregamos al script en la sección anterior con las dos líneas anteriores. ¿El resultado?
- La primera línea toma el título de la ventana activa.
- La segunda línea lee su ancho y alto y los asigna a las palabras/variables "Ancho" y "Alto", que usaremos a continuación para nuestros cálculos.
Obtuvimos los detalles de la ventana activa, pero también necesitamos las dimensiones del área visible del monitor para lograr nuestro objetivo. Afortunadamente, descubrirlos es aún más fácil.
¿Qué pasa con el área del monitor principal?
No necesitamos comandos adicionales para encontrar el ancho y la altura de nuestro monitor principal. AutoHotKey viene con dos variables preestablecidas que ya contienen esa información para nosotros: "A_ScreenWidth" y "A_ScreenHeight".
Entonces, cuando los vea en la siguiente sección, ya "contienen" el ancho y la altura del monitor principal. No se necesita nada para asignarles los valores correctos. Por lo tanto, podemos usarlos directamente en nuestros cálculos.
Tiempo para calcular la posición de destino
Podemos incluir los cálculos directamente en los puntos del script donde los necesitemos. Aún así, es más fácil y mejor para la legibilidad si los asignamos a dos variables y entonces use esas variables en nuestro script.
Entonces, elijamos "TargetX" como la variable que mantendrá las coordenadas horizontales y "TargetY" como la uno con las coordenadas verticales donde debemos mover la ventana para que aparezca en el centro de la pantalla.
DestinoX := (A_ScreenWidth/2)-(Ancho/2); Aquí calculamos la horizontal ventana objetivo...
TargetY := (A_ScreenHeight/2)-(Altura/2); ...y aquí la vertical.
Descifremos esas líneas en un lenguaje sencillo:
- "TargetX" y "TargetY" son las dos variables.
- ":=" informa a AutoHotKey que las variables deben ser iguales a los resultados de los cálculos de la derecha y que esos resultados deben tratarse como números.
- "(A_ScreenWidth/2)" divide el ancho completo del monitor por dos.
- "(Ancho/2)" hace lo mismo para el ancho de la ventana activa.
Con lo anterior, estamos restando la mitad del ancho de la ventana activa a la mitad del ancho de la pantalla. Lo que queda es el espacio a la izquierda de la ventana, desde el lado izquierdo de la pantalla hasta donde debería aparecer la ventana. La segunda línea hace lo mismo pero para la altura.
Ahora para reposicionar la ventana
Equipados con el conocimiento todopoderoso adquirido de los comandos místicos que vimos anteriormente, ahora podemos crear nuestro encantamiento mágico que completará el ritual de teletransportación de la ventana. O, en lenguaje sencillo, use el comando "WinMove" de AutoHotKey para mover ventanas alrededor de la pantalla.
WinMove espera que lo "alimentemos" con al menos tres piezas de información para hacer su trabajo: el título de la ventana de destino y las coordenadas a dónde moverlo. Dado que ya hemos asignado esos datos a las variables, el comando es tan simple como:
WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%
En lo anterior:
- "WinMove" es el comando AutoHotKey que mueve una ventana.
- "%ActiveWindowTitle%" es la variable donde se asigna el título de la ventana activa.
- "%TargetX%" y "%TargetY%" son las coordenadas horizontales y verticales donde mover la ventana.
También puede cambiar el tamaño de las ventanas con WinMove, omitir aquellas con picaduras de texto particulares en sus títulos o contenido, etc. Dado que esas características están fuera del alcance de este artículo, verifique Documentación oficial de AutoHotKey sobre el comando WinMove para más sobre ellos.
El guión final
Finalmente, llegamos a la parte más desafiante de nuestro viaje. Prepárate para el siguiente paso, espera que guardes el guión y, bueno... Ejecutarlo.
Sí, eso fue todo: el guión está completo y no hay nada más que hacer que probarlo. Use el acceso directo que definió y cualquier ventana activa se moverá al centro de su pantalla.
El archivo de script final, tal como se abrió en un editor de texto, debería verse así:
#NoEnv; Recomendado para rendimiento y compatibilidad con futuras versiones de AutoHotkey.
; #Advertir; Habilite las advertencias para ayudar a detectar errores comunes.
entrada de modo de envío; Recomendado pornuevo scripts debido a su velocidad y confiabilidad superiores.
SetWorkingDir %A_ScriptDir%; Asegura un directorio de inicio coherente.
^y::
WinGetTitle, ActiveWindowTitle, A; Obtener la ventana activa'título para "apuntando" ello/actuando en consecuencia.
WinGetPos Ancho, Alto, %ActiveWindowTitle%; Obtener el activo ventanaposición de, usada por nuestros cálculos.
DestinoX := (A_ScreenWidth/2)-(Ancho/2); Calcule el objetivo horizontal donde moveremos el ventana.
ObjetivoY := (A_ScreenHeight/2)-(Altura/2); Calcular la colocación vertical de la ventana.WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; Mueve el ventana a las coordenadas calculadas.
devolver
Tenga en cuenta que puede copiar el script anterior, pegarlo en el Bloc de notas o en un editor de texto similar y guardarlo con una extensión AHK. Luego, "ejecútelo", con AutoHotKey instalado, para centrar cualquier ventana cada vez que presione CTRL + Y. Si no le gusta ese atajo, ajuste la línea "^y::" a una combinación de teclas diferente. Por ejemplo, !+c::
asignaría la función a la combinación de teclas Shift + Alt + C.
Pista extra
Para su conveniencia, hemos decidido conjurar e incluir una secuencia de comandos secundaria que será útil para aquellos con configuraciones de dos monitores.
Para simplificar este artículo, hemos incluido información sobre cómo funciona el script en forma de comentarios. Puede eliminarlos de su iteración.
La breve historia de cómo difiere del script anterior es que también agregamos una variable PositionToggle y algo de "lógica IF". Luego los usamos para "cambiar" la ventana entre monitores. Debemos tener en cuenta que es una solución poco elegante y "hack-y" al problema. Sin embargo, lo preferimos a un código más optimizado, ya que este enfoque es más fácil de entender y modificar para todos los que no están familiarizados con AutoHotKey.
#NoEnv; Recomendado para rendimiento y compatibilidad con futuras versiones de AutoHotkey.
; #Advertir; Habilite las advertencias para ayudar a detectar errores comunes.
entrada de modo de envío; Recomendado pornuevo scripts debido a su velocidad y confiabilidad superiores.
SetWorkingDir %A_ScriptDir%; Asegura un directorio de inicio coherente.
Cambio de posición = 1; Usar un númerocomo una palanca por calificación sobre que monitorean el ventana debería aparecer.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos Ancho, Alto, %ActiveWindowTitle%Si PositionToggle = 1; Cheque el estado de la palanca y "hacer qué hay entre llaves" si es colocarpara1por nuestro monitor principal.
{
TargetX := (A_ScreenWidth/2)-(Ancho/2)
TargetY := (A_ScreenHeight/2)-(Altura/2)
Cambio de posición = 2; "Película" la palanca para que si reutilizamos la tecla de acceso rápido, nuestra ventana activa se moverá al segundo monitor.
}
De lo contrario, si PositionToggle = 2; ¿Hemos usado la tecla de acceso rápido antes, "moviendo" el número de alternar al segundo monitor? Entonces el script debería hacer lo que's entre los siguientes corchetes en lugar de los anteriores.
{
SysGet, Mon2, Supervisar, 2; Consigue el segundo monitor'detalles
Mon2Width := Mon2Derecha - Mon2Izquierda; Calcular el segundo monitor's ancho real.
Mon2Height := Mon2Bottom - Mon2Top; Calcular el segundo monitor'altura real.TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Calcula dónde mover la ventana. Tenga en cuenta que también agregamos el monitor principal's ancho ya que AutoHotKey puede't mover ventanas en monitores individuales pero a través de sus "superficie".
TargetY := (Mon2Height/2)-(Altura/2)+Mon2Top; Calcule el objetivo vertical óptimo para mover la ventana en el segundo monitor. Como arriba, el segundo monitor'Los detalles verticales se detectan en relación con el monitor principal. Por lo tanto, tenemos que ser creativos para obtener un objetivo óptimo al reconocer cómo el segundo monitor'la parte superior es't igual a 0 (como el primario's).Cambio de posición = 1; Mueva la palanca hacia atrás para que Si reutilizamos la tecla de acceso directo, la ventana volverá al monitor principal.
}WinMove, %ActiveWindowTitle%, %TargetX%, %TargetY%; La acción real, moviendo el activo ventana a nuestras coordenadas calculadas.
devolver
Centre una ventana con una llave, la manera fácil
¡Y ahora ya está! Si todo funciona bien, ahora puede usar su tecla de acceso directo recién configurada para centrar una ventana en cualquier momento.
Encuentra dónde pierdes tu tiempo en Windows con AutoHotKey
Leer siguiente
Temas relacionados
- ventanas
- ventanas 10
- ventanas 11
- AutoHotkey
- Personalización de Windows
Sobre el Autor
La vida real de OK comenzó alrededor de los 10 años, cuando obtuvo su primera computadora, una Commodore 128. Desde entonces, ha estado derritiendo teclas escribiendo las 24 horas del día, los 7 días de la semana, tratando de difundir The Word Of Tech a cualquier persona lo suficientemente interesada como para escuchar. O, mejor dicho, leer.
Suscríbete a nuestro boletín
¡Únase a nuestro boletín para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!
Haga clic aquí para suscribirse