Programar scripts con AutoIt. Mi primer script (I)

Scripts Scripts AutoIt Utilidades

Aquí estoy de nuevo, esta vez para presentar como programar scripts con Windows con Autoit. Se trata de un paquete de programación de scripts que combinado con AutoHotkeys para lanzar los scripts rápidamente te ahorrará infinidad de tiempo. Yo lo descubrí hace unos cuantos años y debo decir que me parece una autentica maravilla para automatizar tareas repetitivas y algo tediosas.

En este artículo hablaremos de:

  • como descargarlo e instalarlo
  • la forma de dar los primeros pasos para crear un nuevo script
  • aprender utilizar la herramienta de Windows Info que trae y para que sirve
  • crearemos un nuevo script sencillo

AutoIt es un software freeware y, como en todos estos proyectos, todo lo que se te ocurra y no sepas como hacer, seguro que ya lo ha hecho alguien antes. Hay infinidad de foros en los que consultar y de los que aprender y si ya tienes conocimientos de programación en otros lenguajes, no te resultará difícil comenzar a hacer cosas con él.

Descarga e instalación

Como siempre con estas cosas, lo primero es descargar el programa e instalarlo. Para ello, vete a la página de descarga de AutoIt y selecciona la versión que se ajuste a tus necesidades. Yo no me lo pensaría mucho y descargaría la opción Autoit Full Installation. Con ella se te instalan los archivos de programa, la documentación de ayuda (que está realmente bien, eso sí en inglés de «Sespir»), la utilidad para convertir tus scripts en exe de forma que los podrás exportar a equipos que no tengan AutoIt instalado y el editor de scripts SciTE.

Cuando lo hayas descargado, ejecútalo y te aparecerá un WIzard con lo que sólo tendrás que seguir los pasos que te vaya pidiendo.

Programar scripts para Windows con AutoIt - Instanado el programa
Instalación de AutoIt

A la hora de instalarlo, te preguntará que quieres hacer cuando hagas doble click en los ficheros scripts au3 (extensión que pone a los ficheros sin compilar). Lo mas cómodo es decirle que los edite, pero para gustos los colores.

En menos de 5 minutos dispondrás de una potentísima herramienta nueva con la que poder empezar a juguetear.

Primeros pasos. Tu primer script

Cuando se haya instalado, dispondrás de un nuevo elemento en el menú contectual del botón derecho de tu ratón que te permitirá crear un nuevo archivo de script allá donde te encuentres. Para ello, navega con el explorador de Windows hasta la carpteta donde quieras crear tu script o crea una nueva donde tenerlos organizados y haz click con el botón derecho de tu ratón. Selecciona la opción Nuevo y verás de hay una opción que dice AutoIt v3 Script. Haz click en ella y te creará un nuevo fichero, con nombre por defecto Nuevo AutoIt v3 Script y extensión au3, con el nombre editado para que le pongas el que quieras.

AutoIt - Nuevo script
Nuevo script

Así de sencillo es crear un nuevo fichero para comenzar a programar nuestro script. Si ahora hacemos doble click sobre él, y siempre que hayamos elegido esta opción durante la instalación, se abrirá el editor SciTE. Este es un editor típico de lenguajes de programación, con su código de colores para las instrucciones, variables, comentarios, etc que facilitan la lectura del código y la localización de errores.

Editor SciTE
Vista de un script recién abierto

Ahora solo hace falta saber que escribir, que no es poco. Puedes hacer click sobre la opción del menú Help y de nuevo en la opción Help (acceso rápido con F1) verás que se abre una ventana de ayuda donde puedes ver toda la documentación que se ha instalado con el programa.

En la pestaña Contenido, puedes navegar por los distintos temas para hacerte una idea global de las herramientas de las que dispones y en la pestaña Indice puedes buscar la información relativa a los diferentes comandos. De momento, igual no sabes que buscar, pero vamos a poner un ejemplo que si manejas VBA te sonará. Escribe msgbox en la ventana de búsqueda y pulsa Enter. Inmediatamente te aparecerá la ayuda disponible y al final algunos ejemplos de uso.

Ayuda de AutoIt
Ayuda de AutoIt (1)
Ayuda AutoIt MSgBox
Ayuda de AutoIt (2)

Herramienta de Window Info

Esta es una herramienta que nos permite obtener información de las diferentes ventanas que tenemos abiertas. que nos será indispensable para programar scripts con AutoIt. Esto nos permitirá, cuando estemos programando un script, saber como hacer referencia a dichas ventanas y sus controles para poder realizar diferentes acciones con los mismos. Por ejemplo, lanzamos un programa que al abrirse nos pide un usuario y una contraseña en una ventana específica. Deberemos saber como se llama esa ventana o que tipo de ventana es para hacer referencia a ella y esperar a que termine de carguarse para entonces llevar el foco a la misma y, dentro de ella, enviar al cuadro de usuario la información adecuada, igualmente al de contraseña y, finalmente, enviar el click al botón de Enter.

Programar scripts para Windows con AutoIt - Window Info
Ventana del visor WIndows Info

Cuando la abras, verás que es un poco pesada, porque está siempre encima de todo. No se oculta si le pones otra ventana delante. Pero de eso es de lo que se trata precisamente. De tenerla siempre disponible cuando investigues algo. Para que deje de molestar, la tienes que minimizar tu mismo. Eso, o en Options desmarcas la opción Always on top, pero a mi me resulta mas cómodo tenerla a la vista cuando la quiero usar.

Otra cosa importante es la opción, también en Options de Freeze que ahora te explico para que sirve. Ves que hay una especie de diana en el centro, que dice Finder tool. Pues bien, si arrastras la diana sobre una ventana o control y la sueltas allí, si la opción Freeze está activada, la información que haya recogido acerca de la ventana o el control sobre el que la hayas posicionado, permanecerá fija. En cambio, si dicha opción Freeze esta desactivada, la información se irá actualizando para indicar lo que va encontrando en la posición del ratón. Cuando queremos saber que métodos tenemos para referirnos a una ventana o control, queremos que se quede fija por lo general. De ahí la importancia de esta característica.

Si tienes la opción Freeze activada, verá que en la cabecera de la ventana del Windows Info pone (Frozen) para que te quede claro como estás trabajando. Si desmarcas la opción Freeze, desaparece ese aviso.

Te aconsejo que hagas una prueba con, por ejemplo, la ventana de ayuda de AutoIt que hemos abierto antes. Ajústale el tamaño para poderla colocar en paralelo a la ventana del Windows Info y arrastra el Finder Tool por las distintas zonas de la ventana de Ayuda. Verás que va resaltando las diferentes áreas que localiza y que son a las que después te podrás referir cuando quieras hacer interacciones con ellas. También puedes ver la diferente información que te va presentando en cada pestaña (Window, Control, Visible text, etc).

Mi Primer Script

Para comenzar a familiarizarnos a programar scripts con AutoIt y entender mejor la utilidad de la información que nos proporciona el Windows Info, te propongo que hagamos un sencillo script (realmente dos) para entender un poco mejor que sirve toda esa información. El primer script simplemente mostrará un MsgBox con un texto y dos botones (Si / No). El segundo script, después de un tiempo, cerrarerá le MsgBox haciendo click en uno de sus botones.

Haremos dos scripts porque los MsgBox en AuotIt son modales, lo que significa que el script detiene su ejecución hasta que se interactúa con el y se cierra mediante alguna de las opciones que nos presenta.

Lo primero que haremos será crear un nuevo script siguiendo los pasos descritos mas arriba:

  • localizamos la ubicación donde lo queramos guardar
  • hacemos click con el botón derecho en una zona libre
  • seleccionamos «Nuevo»
  • elegimos «AutoIt v3 Script»

Como hemos dicho, lo primero que haremos será mostrar un MsgBox, así que vamos a Help (F1) y en la pestaña Índice escribimos MsgBox para ver como se inserta una instrucción para que aparezca un MsgBox.

Vemos que la ayuda dice:

AutoIt - Ayuda MSgBox
Ayuda de MsgBox

Es decir, al instrucción será MsgBox y, entre paréntesis irán los parámetros. Los 3 primeros, que van sin corchetes son obligatorios, mientras que los dos siguientes son opcionales (entre corchetes).

En la descripción de los parámetros que viene justo a continuación de la descripción de la instrucción nos dice que flag indica el tipo de MsgBox que se mostrará así como los botones que veremos. Mas abajo, en la ayuda, vemos que en Remarks hay una completa definición de los diferentes valores de flag que podemos elegir. Para elegir una combinación de ellos, podemos listar las variables sumándolas o poner la suma equivalente de su Decimal flag. Vamos a ver que significa esto.

Primero definiremos que queremos para nuestro MsgBox:

  • Mostraremos los botones Yes y No. La constante necesaria será $MB_YESNO con un valor decimal de 4
  • Queremos que aparezca un signo de interrogación. Necesitaremos usar la constante $MB_ICONQUESTION con valor decimal 32
  • El botón por defecto (el que clicaremos si simplemente pulsamos Enter) será el primero. Y vemos que la constante es $MB_DEFBUTTON1 con valor decimal 0
  • Finalmente, queremos que sea una ventana modal para el sistema (vamos, que nos muestre un icono en la barra de tareas), para lo que necesitaremos usar la constante $MB_SYSTEMMODAL con valor 4096

Pues bien, una vez claro lo anterior, podríamos comenzar a definir nuestro MsgBox de la siguiente forma:

MsgBox($MB_YESNO+$MB_ICONQUESTION+$MB_DEFBUTTON1+$MB_SYSTEMMODAL, «Title»,…

o bien con

MsgBox(4132, «Title»,…

Siendo 4032 la suma de los valores decimales 4 + 32 +0 4096

«Title» está bastante claro: es el título que mostrará la ventana del MsgBox. «Text» tampoco deja mucho lugar a dudas e indica el texto que visualizará el MsgBox. Es importante notar que estos textos deben ir entrecomillados.

Vamos a poner lo siguiente: MsgBox(4132,»Mi primer MsgBox», «Púlsame»)

Con respecto a los parámetros opcionales, el primero (timeout) nos permite establecer un tiempo al cabo del cual, si no se ha interactuado con el MsgBox, éste se cierra de forma automática. Su valor por defecto es 0, que significa que no se cerrará. Si estamos esperando una decisión, no tiene muchos sentido, pero si se trata de un mensaje informativo, podemos mostrarlo durante unos segundos y cerrarlo de forma automática para continuar con la ejecución del sccript.

El último parámetro hace referencia a manejadores de ventana y, por el momento, lo dejaremos fuera. Solo te diré que WIndows define un manejador para cada ventana que tienes abierta y que permite hacer referencia a ella, entre otros métodos.

Pondremos ahora un detalle final, que es importante para no encontrarnos con errores inesperados. Muchas de las instrucciones necesitan que en el programa se haga referencia a librerías o módulos para que funcionen. En este caso, en la ayuda dice «Constants are defined in MsgBoxConstants.au3» y si vas a los ejemplos del final verás que el código comienza por la instrucción #include <MsgBoxConstants.au3>

Este #include es la forma de incluir las referencias necesarias para el correcto funcionamiento de las instrucciones en el caso de que usemos su definición alfanúmerica, es decir, nuesto código podría ser:

MsgBox(4132,»Mi primer MsgBox», «Púlsame»)

pero si en vez del valor decimal usasemos las variables predefinidas debería ser

#include <MsgBoxConstants.au3>
MsgBox($MB_YESNO+$MB_ICONQUESTION+$MB_DEFBUTTON1+$MB_SYSTEMMODAL,»Mi primer MsgBox», «Púlsame»)

Con esto tenemos hemos terminado de programar el primero de nuestros scripts con AutoIt:

Editor SciTecon script
Vista actualizada del script

Si lo queremos ejecutar para ver lo que hace, podemos hacerlo directamente desde el editor, sin necesidad de compilarlo, pulsando F5. Para ello, es necesario que el script esté guardado. Lo hacemos y vemos esto:

Programar scripts para Windows con AutoIt - Cuadro MsgBox
Vista del MsgBox

Ves que aparecen el título y texto que hemos definido, el símbolo de interrogación seleccionado con el parámetro $MB_ICONQUESTION y el botón Si preseleccionado.

Ahora nos falta la parte mas interesante que es como interactuar con nuestra ventana de Msbgox. Vamos a decir que lo que queremos es, una vez que aparezca la ventana del MsgBox, dejar que se visualice durante 4 segundos y entonces pulsar en No.

Pero esto lo veremos en el siguiente artículo, Programando scripts con Autoit. Mi primer script (II)

Si te está pareciendo interesante este artículo sobre las posibilidades de programar scripts con AutoIt, también te puede interesar ver otro artículo sobre mejora de la productividad con AutoHotkey.

Deja una respuesta