# AutoIt

AutoIt es un lenguaje freeware multipropósito de automatización para Microsoft Windows. Se ha expandido desde sus comienzos de automatización incluyendo muchas mejoras en el diseño del lenguaje de programación y sobre todo en nuevas funcionalidades.
Por su especial y ligera estructura de funcionamiento, obtiene una alta compatibilidad con Wine con lo que sus ejecutables pueden ser portables y copiarse entre sistemas operativos (Windows, Linux, Mac OS X, etc..) sin necesidad de instalación previa.
En su versión inicial, el software estaba orientado principalmente a crear scripts de automatización (también macros) para el sistema operativo y programas basados en Microsoft Windows.

## Características

* La sintaxis es sencilla. Es de Estructura similar al BASIC para Windows.
* De fácil comprensión.
* Se ejecuta con rapidez, permite controlar a otros programas.
* En sus versiones iniciales tuvo generador de macros.
* Tiene editor gráfico de formularios (IDE).
* Sus scripts se pueden compilar en archivos ejecutables totalmente independientes. No requiere archivos adicionales (dll, ocx, etc.) para funcionar.
* Crea ejecutables de 350-650 KB.
* Usa bibliotecas y módulos complementarios {en inglés: add-on o plug-in} para aplicaciones específicas.
* Foro con asistencia en línea para los usuarios y desarrolladores.
* Soporta los protocolos TCP y UDP.
* Apoya objetos COM (modelo de objetos componentes) mediante una biblioteca.
* Funciona con el Control de cuentas de usuario de Microsoft Windows.
* Maneja expresiones regulares.
* Sin API externas, ya que las incluye todas.
* Puede llamar a funciones en archivos Win32 DLL.
* Ejecuta aplicaciones de consola y puede acceder a la entrada estándar {en inglés: Standard_streams}.
* Puede incluir archivos dentro del programa compilado y extraerlos cuando se ejecuta.
* Interfaces GUI, crea cuadros para mensajes y cuadros de entrada.
* Reproduce sonidos. Permite pausar, reanudar, detener, buscar y obtener la posición actual del sonido y calcula la longitud del sonido.
* Simula los movimientos del ratón.
* Manipula ventanas y procesos.
* Automatiza la interacción del usuario emulando pulsaciones de teclas en los programas, y en controles individuales dentro de una aplicación.
* Puede gestionar bases de datos MySQL / SQLite / DBase / SQL / ODBC.
* Tiene soporte para Unicode desde la versión 3.2.4.0.
* Admite código de 64 bits a partir de la versión 3.2.10.0.
* En principio no es una aplicación multihilo, pero se han desarrollado bibliotecas que si lo permiten.
* Una comunidad de usuarios muy avanzada y con buen soporte técnico.
* Ejecutables compatibles en gran medida con Mac OS X - Apple y Linux. Varias distribuciones de GNU/Linux, Unix-like, BSD, Solaris (inc Mac OS X), ReactOS (nativo), vía Wine. (Actualizado en foro en español)

## Extensiones y programas adicionales

* SciTE es una entorno de desarrollo integrado (IDE) para AutoIt. Editor de programa gratuito compatible con el resaltado de sintaxis y auto completar para el uso de elementos de sintaxis de uso frecuente.
Acerca de las llamadas Funciones definidas por el usuario (UDF). Incluye numerosas funciones adicionales, a través de extensiones creadas en la comunidad consiguiendo muchas funcionalidades.
* El Diseñador de KODA-Form permite crear interfaces gráficas de usuario (GUI, Graphical User Interfaces) para los programas AutoIt(scripts).
* Tidy "limpiador" una herramienta del IDE revisando la sintaxis, errores de código, corrigiendo los tipos, la sangría, comentarios, copia de seguridad de versiones y mucho más.
* Hay asistentes de código (Wizards), y grabadores de macros que pueden crear ventanas de mensajes, inputs de entrada, y más.
* El Asistente de información de Ventanas es una extensión que se utiliza para obtener informaciones de una ventana ejecutándose, o de los movimientos del ratón (por ejemplo, la ventana o la posición del ratón, colores de los píxeles, coordenadas de control).
* Hay muchos extras y programas adicionales creados por la comunidad que se comparten en los foros, con una sencilla búsqueda.

## Ejemplo

Ejemplo de Hola mundo para el lenguaje Autoit:
Así sale un mensaje para aceptar con el Título Mi título y el texto Hola mundo.

## Tipos de datos

En AutoitScript (a partir de ahora AU3) Solo hay un tipo de datos existente, este es de tipo Variant (Variante) que significa que es de contenido dinámico (puede variar).
Se pueden guardar datos en espacios de memoria que se denominan variables, Estas pueden ser declaradas de varias maneras, pero los programadores experimentados normalmente usan las instrucciones "Local", "Const", "Global", "Static" y "Dim".

### Información

* Local - Normalmente utilizada dentro de funciones definidas por el usuario, solamente pueden ser leídas dentro de esa (únicamente) función.
* Const - Utilizada para crear variables de tipo constante, su valor no puede cambiar, normalmente utilizada para guardar datos estrictamente necesarios.
* Global - Crea variables de tipo Global que pueden ser leídas y modificadas es todas las funciones del script en cualquier momento.
* Static - A diferencia de la declaración "Local", esta no se elimina después de que la función en la que fue llamada finalizara, su valor no se elimina después de ser llamada, Sino que lo conserva para volver a utilizar sus datos en otro momento.
* Dim - Sirve para declarar variables, en AU3 las variables son creadas simplemente con la asignación de un valor ($Variable = 1) pero algunos programadores prefieren declararlas explícitamente.