En esta nueva entrega sobre AutoHotkey explicaremos algo tan útil e interesante como es el manejo de ventanas de Windows en una macro.
En primer lugar veremos cómo detectar si una determinada ventana se encuentra abierta y en tal caso activarla (enviarla a primer plano).
Para comprobar si una ventana está abierta disponemos de los comandos IfWinExist y IfWinNotExist en los cuales indicaremos el título de la ventana que deseamos comprobar.
En el siguiente ejemplo comprobamos si la calculadora se encuentra abierta y en caso contrario la abre, activándola luego con el comando WinActivate:
; {CTRL}{MAYÚSCULAS}{M} Activa la ventana de la calculadora o la abre si no se encuentra abierta: ^+m:: IfWinExist Calculadora { WinActivate } else { MsgBox Pulsa para abrir la calculadora... Run Calc WinWait Calculadora WinActivate } return
El comando WinWait hace que la ejecución de la macro se detenga unos instantes hasta que la ventana haya sido abierta y esté operativa (observa que también se le pasa el título como parámetro).
Como veremos a continuación, una vez abierta una ventana podremos realizar acciones varias acciones con ella.
En este otro ejemplo se abre la calculadora si no lo está ya, y a continuación mediante el comando Send se envían de forma automática pulsaciones de teclado con el fin de borrar el contenido que pueda tener, escribir dos números y sumarlos:
; {CTRL}{MAYÚSCULAS}{N} Activa o abre la calculadora y realiza una suma: ^+n:: IfWinNotExist Calculadora { Run Calc WinWait Calculadora } WinActivate Calculadora Send {Del} Send 350 Send {NumpadAdd} Send 150 Send {NumpadEnter} return
Con {NumpadAdd} y {NumpadEnter} se envían a la calculadora las pulsaciones de las teclas ‘+’ y Enter del teclado numérico.
Veamos ahora otro ejemplo en el que se abre el bloc de notas si no está abierto, y a continuación mediante el comando Send se inserta una línea de texto:
; {CTRL}{MAYÚSCULAS}{B} Activa una ventana del block de notas e inserta un texto: ^+b:: IfWinNotExist Sin título: Bloc de notas { Run Notepad WinWait Sin título: Bloc de notas } WinActivate Sin título: Bloc de notas Send Escribiendo en el bloc de notas de AutoHotkey.`n return
Con `n se insertará una nueva línea.
La siguiente es una macro que resultará muy útil a más de uno, ya que permite tener una ventana siempre visible (en este caso la calculadora de Windows), para lo cual utilizaremos en este caso el comando Winset:
; {CTRL}{MAYÚSCULAS}{V} Dejar siempre visible la calculadora ^+v:: IfWinNotExist Calculadora { Run Calc WinWait Calculadora } WinActivate Calculadora Winset Alwaysontop, On, Calculadora return
Este otro código mantendrá siempre visible la ventana que se encuentre activa en el momento de pulsar la combinación de teclado especificada:
; {CTRL}{MAYÚSCULAS}{C} Deja siempre visible la ventana que se encuentre activa ^+c::Winset, Alwaysontop, On, A
Con esta macro es posible tener varias ventanas que estén siempre visibles.
Para que una ventana deje de estar siempre visible, tras hacer clic sobre ella para activarla pulsaremos de nuevo la misma combinación de teclado.
Por otro lado, si deseamos mover una ventana a otra posición de la pantalla utilizaremos el comando WinMove indicando las coordenadas X e Y (fila y columna) relativas a la parte superior izquierda de la pantalla respectivamente:
; {CTRL}{MAYÚSCULAS}{X} Abrir y mover ventana ^+x:: Run Calc WinWait Calculadora WinMove 50, 100 return
Mediante los comandos WinMinimize y WinClose podemos minimizar y cerrar ventanas:
; {CTRL}{MAYÚSCULAS}{Z} Abrir y minimizar ventana ^+z:: Run Calc MsgBox Haz clic en Aceptar para minimizar la calculdora... WinMinimize Calculadora MsgBox Haz clic en Aceptar para cerrar la calculadora... WinClose Calculadora return
¿Que necesitas mostrar y ocultar una ventana? no hay problema, con AutoHotkey también podrás hacerlo con los comandos WinHide y WinShow:
; {CTRL}{MAYÚSCULAS}{A} Mostrar y ocultar ventana ^+a:: Run Calc MsgBox Haz clic en Aceptar para ocultar la calculadora... WinHide Calculadora MsgBox Haz clic en Aceptar para volver a mostrar la calculadora... WinShow Calculadora WinActivate Calculadora return
Por último veamos otro ejemplo en el que con una macro escribimos texto en una venta oculta del block de notas, y con otra mostramos dicha ventana:
; VARIABLE GLOBAL idventana2 = "" ; {CONTROL}{MAYÚSCULAS}{B} Escribe en una ventana del block de notas oculta ^+b:: if( idventana2 == "" ) { Run Notepad,,, idventana2 WinWait Sin título: Bloc de notas WinHide ahk_pid %idventana2% } ; Activar la ventana (para poder escribir en ella) WinActivate ahk_pid %idventana2% ; Escribir el texto Send Escribiendo en el bloc de notas de AutoHotkey.`n return ; {CONTROL}{MAYÚSCULAS}{d} Muestra la ventana oculta ^+d:: WinShow ahk_pid %idventana2% return
En este caso se ha creado una variable global para almacenar el identificador de la ventana (que será guardado en ella por el comando Run).
Si bien los comandos mencionados en este post son los de uso más habitual, AutotHotkey dispone de otros con los que es posible realizar otra clase de acciones.
Si has llegado a este post y te interesa el tema pero te encuentras un poco perdido, te recomiendo que comiences por este primer post de la serie sobre AutoHotkey en el que describimos algunos aspectos de uso básicos.