En AutoHotkey disponemos de la sentencia condicional If para dirigir el flujo de la macro según se cumpla o no una determinada condición.
A continuación puedes ver un ejemplo de cómo implementarla:
; {WINDOWS][H] sentencia condicional: #h:: numero1 = 110 numero2 = 90 pais = FRANCIA If ( numero1 <= 100 ) MsgBox El número1 es menor o igual de 100 else MsgBox El número1 es mayor de 100 If ( numero2 >= 100 ) MsgBox El número2 es menor o igual de 100 else MsgBox El número2 es mayor de 100 If pais = Francia MsgBox El país es Francia else MsgBox El país no es Francia return
NOTA: al comparar cadenas de caracteres AutoHotkey no distingue entre mayúsculas y minúsculas con lo que en el último If la condición se cumplirá (mostrándose el primer mensaje en este caso).
Si queremos realizar varias operaciones en una sección del If será necesario escribirlas entre llaves. Por ejemplo:
; {WINDOWS][Z] sentencia condicional con varias operaciones: #z:: numero = 110 if ( numero <= 100 ) { numero := numero * 10 numero := numero + 20 } else { numero := numero * 20 numero := numero + 10 } MsgBox El número es: %numero% return
AutoHotkey dispone también de la sentencia Loop, mediante la que es posible realizar determinadas operaciones de forma repetitiva.
En el siguiente ejemplo se repetirá continuamente el bucle sumando 1 al valor inicial de la variable numero, forzándose la salida del mismo mediante break cuando su valor sea mayor de 20:
; {WINDOWS][V] sentencia repetitiva: #v:: numero = 1 Loop { numero := numero + 1 if ( numero > 20 ) break } MsgBox El número es: %numero% return
En el bucle Loop es posible indicar el número de veces que se deberá repetir el bucle.
En la siguiente macro de ejemplo el bucle se repetirá 10 veces, mostrándose el valor de la variable numero al salir de él:
; {WINDOWS][C] sentencia condicional con varias operaciones: #c:: numero = 0 Loop 10 { numero := numero + 2 } MsgBox El número es: %numero% return
Otra sentencia repetitiva es While, la cual se repetirá mientras se cumpla la condición que especifiquemos.
En este otro ejemplo el bucle se repetirá mientras el valor de la variable numero sea menor de 20:
; {WINDOWS][N] sentencia repetitiva: #n:: numero = 0 While ( numero < 20 ) { numero := numero + 1 } MsgBox El número es: %numero% return