AutoIt é basicamente uma linguagem de script com sintaxe parecida com basic feita para automatizar tarefas do windows. O grande diferencial do AutoIt é o controle que ele tem para interagir com as janelas do windows, ele pode simular clicks em botões, interação com formulários, etc. Ele também pode fazer chamadas para DLL externas e para a API do windows.
Ele é um canivete suíço para um heavy user que deseja/precisa automatizar tarefas.
Algumas características:
- Fácil aprendizado.
- Simula interações com teclados e mouse.
- Manipula janelas e processos.
- Interage com todos os controles padrão do windows.
- Os scripts podem ser compilados em executáveis.
- Pode criar interfaces gráficas.
- Suporte a expressões regulares.
Eu tomei conhecimento dele, ao pesquisar sobre como modificar meu CD de instalação do windows, para que ele instalasse programas durante a instalação, e vi em foruns que usavam o AutoIt para criar um programa que executasse a instalação de um aplicativo de maneira automática.
Vou tentar a partir de um tutorial simples mostrar o uso desta linguagem.
Antes de iniciar o tutorial, vocês precisam fazer download do AutoIt e do seu editor:
http://www.autoitscript.com/autoit3/downloads.shtml
Escolhi fazer um script que instalasse de maneira automática o Foxit PDF Reader, um leitor de PDF leve e gratuito. Vocês podem fazer download do instalador nesta pagina:
http://www.foxitsoftware.com/pdf/rd_intro.php
A primeira linha de nosso script será executar o instalador:
Run("FoxitReader22_setup.exe")
Um programa com somente esta linha, vai executar o instalador e acabar a execução, porém queremos mais que isso. Precisamos que o script pausa sua execução, até que a janela do instalador tenha surgido, para que o script possa interagir com ela.
O comando WinWaitActive(String tituloJanela, String textoJanela) faz isso, ele vai pausar o script até que fique ativa uma janela com o titulo informado e que possua em algum lugar dela o texto. É simples olhar para a janela de nosso instalador e saber qual o nome do titulo dela e ver outro texto que pode ser usado. Mas para facilitar nossa vida e saber todas as informações uteis desta janela, usaremos o indispensavel Window Info que pode ser executado a partir de Iniciar / Programas / AutoIt v3 / AutoIt Window Info.
Como podemos ver na imagem abaixo, ele pode obter informações de todos os objetos da janela (Texto, Botoões, Checkbox, etc):
Com este utilitário, podemos obter e selecionar para copiar / colar as informações que queremos: O título da pagina e o texto de um elemento e podemos escrever a linha de código abaixo:
WinWaitActive("Foxit Reader Install Wizard", "&Next>")
Com essas duas linhas scritas o programa vai executar o instalador e ficará pausado até essa janela ficar ativa.
Depois disso vamos enviar um comando para que avance para a proxima janela:
Send("!n")
Este comando vai enviar um Alt + n que fará com que o instaaldor passe para a proxima janela, que veremos possui a mesma aparência básica desta desta (mesmo titulo e também possui um botão next) então podemos repetir os comandos:
WinWaitActive("Foxit Reader Install Wizard", "&Next>")
Send("!n")
Que fará com que apareça a proxima janela que, a pessoa aceita a licença de uso, que não possui botao Next, mas possui o botão de “aceito” que é o que desejamos que seja executado, então escreveremos essas duas linhas:
WinWaitActive("Foxit Reader Install Wizard", "I &agree")
Send("!a")
Agora chegamos em uma janela, em que o botão não aceita um HotKey como o Alt + n, então usaremos outro método, que é muito mais preciso, pois usa um identificador para o botão.
Antes de usar este método vamos identyificar que a janela esta ativa com o comando:
WinWaitActive("Foxit Reader Install Wizard", "< &Back")
Feito isso vamos abrir o programa de informações e obter as informações do botão 'Default':
Com as informações obtidas podemos usar o método:
ControlClick("Foxit Reader Install Wizard", "< &Back", 1014)
Que é semelhante ao WinWaitActive( mas que possui um argumento a mais, que é o ID do Controle que a gente quer que seja executado.
Seguindo o que foi mostrado aqui, podemos terminar o script com o resto do código abaixo:
WinWaitActive("Foxit Reader Install Wizard", "&Install")
ControlClick("Foxit Reader Install Wizard", "&Install", 1)
WinWaitActive("Foxit Reader Install Wizard", "&Run Foxit Reader")
;Desmarcar o checkbox
ControlClick("Foxit Reader Install Wizard", "&Run Foxit Reader", 1008)
ControlClick("Foxit Reader Install Wizard", "&Run Foxit Reader", 1)
Usar um ControlClick é preferivel ao Send, porque no ControlClick, temos o controle do ID do que queremos interagir.
Espero que está mini tutorial seja util para vocês e eu escrevi voltado para uma pessoa que conhece algo de programação.
[]'s
Rodrigo Menezes
Código fonte do exemplo