Oi, galera. Hoje continuaremos estudando sobre AutoIt. Iremos fazer nossa primeira automatização, iremos abrir um programa externo, interagir com ele e fechá-lo. Tudo isso aprendendo mais 5 comandos! Se você perdeu nosso último post, não se desespere! Clique aqui...
Tudo começa criando-se um novo arquivo no SciTE. Vou chamar o meu de teste e vou salvá-lo na minha Área de Trabalho. Agora vamos repetir o que fizemos no último post:
MsgBox(0, "Olá Mundo!!!", "Tudo começa aqui")
Agora vou explicar o que isso faz:
- MsgBox - É uma função que exibe uma caixa de diálogo
- 0 (Zero) - É o primeiro parâmetro que diz como será a caixa de diálogo
- "Olá Mundo!!!" - Segundo parâmetro que é o título da caixa de diálogo
- "Tudo começa aqui" - Terceiro parâmetro que é o texto da caixa de diálogo
Essa função, ou comando, que não parece tão simples, aceita ainda mais parâmetros. Como eu sei disso? Está na ajuda do AutoIt. Coloque o cursor de edição sobre o comando MsgBox e aperte F1 ... A ajuda do AutoIt será inicializada e posicionada sobre esse comando.
Vamos escrever agora um outro script (você pode reaproveitar o script atual, basta apagar o que já escrevemos), um pouco mais complicado. O código vai abaixo:
Run("notepad.exe")
WinWaitActive("Untitled - Notepad")
WinClose("Untitled - Notepad")
Caso seu Windows seja em português, use o código seguinte:
Run("notepad.exe")
WinWaitActive("Sem título - Bloco de notas")
WinClose("Sem título - Bloco de notas")
Pronto! Fomos capazes de abrir e fechar o Notepad! Vamos para as explicações:
O comando Run permite rodar um comando externo, isto é, de fora
do AutoIt. Você precisa passar todo o caminho até esse programa (algo
como "C:\Program Files (x86)\Mozilla Firefox\firefox.exe") a menos que
exista uma variável de ambiente (falarei sobre isso em outro post) com o caminho, desse modo só passamos o
nome do programa ("firefox.exe" no exemplo).
Já o comando WinWaitActive espera
até que a janela informada esteja ativa ... Isso quer dizer que, no
script de exemplo, esperamos até o Notepad abrir para depois fechá-lo. Isso é importante, pois pequenos scripts executam muito rápido,
as vezes mais rápido que o abrir de um programa. Por isso usamos esse
comando, ele pausa o script e espera até a janela que você especificou
aparecer. E se colocarmos o nome errado? Ele ficará pausado eternamente
:) ... Mas não se preocupem, por isso usamos o SciTE, para testarmos
antes. Em todo caso, o WinWaitActive usa uma busca aproximada ...
No nosso exemplo podemos usar como parâmetro "Untitled - Notepad",
"Untitled" ou "Notepad" que funcionaria da mesma maneira (se estiver em dúvida, teste e veja). No entanto é sempre bom ter o título completo. No caso do seu Windows estar em português e digitar o título em inglês como no primeiro código, simplesmente o script não vai funcionar da forma esperada e o script vai pausar como se tivesse escrito o título errado, pois para o computador é apenas um grupo de caracteres sem significado e que não se correspondem entre si, o título informado e o título da janela aberta.
O WinClose é bem simples ... Ele fecha uma janela. A janela que
se quer fechar não precisa estar ativa, e o critério de correspondência
do nome da janela é o título completo. Se houver mais de uma janela que corresponda ao critério será fechada aquela que estava ativa (em foco) mais recentemente. Mais a frente mostrarei como fechar uma janela sem precisar saber o nome dela.
Bom, é muito legal abrir e fechar o Notepad, mas o que mais podemos fazer? Podemos escrever no Notepad com nosso script? E a resposta é SIM! Veja abaixo
Run("notepad.exe")
WinWaitActive("Untitled - Notepad")
Send("Olá Mundo")
WinClose("Untitled - Notepad")
Lembre-se, caso seu Windows seja em português, use o código seguinte:
Run("notepad.exe")
WinWaitActive("Sem título - Bloco de notas")
Send("Olá Mundo")
WinClose("Sem título - Bloco de notas")
O comando Send simula alguém usando o teclado na JANELA ATIVA, isto é, a janela que está em foco no momento. Por isso temos que esperar o Notepad abrir antes de enviar o texto, senão seria enviado ao próprio SciTE. Podemos enviar qualquer tecla ou combinação de teclas (a única limitação é que o Windows não permite a simulação da combinação Crtl + Alt + Del). Enviar teclas especiais, como as F1...F12, ou enviar a mesma tecla repetidas vezes (veremos isso mais tarde) é um trabalho simples. Mas quando vamos fechar o Notepad aparece a mensagem de salvar... Como eu posso evitar isso (supondo que não quero salvar)?
Há duas maneiras, vou ensinar uma agora (a mais fácil :) ) e no próximo post ensino a outra. Existe um comando que força o fechamento de uma janela, fazendo com que se perca tudo que tinha feito nela se não foi salvo antes. Esse comando é o WinKill. Vamos só substituir o WinClose por WinKill e ver funcionando.
Há duas maneiras, vou ensinar uma agora (a mais fácil :) ) e no próximo post ensino a outra. Existe um comando que força o fechamento de uma janela, fazendo com que se perca tudo que tinha feito nela se não foi salvo antes. Esse comando é o WinKill. Vamos só substituir o WinClose por WinKill e ver funcionando.
Run("notepad.exe")
WinWaitActive("Untitled - Notepad")
Send("Olá Mundo")
WinKill("Untitled - Notepad")
Run("notepad.exe")
WinWaitActive("Sem título - Bloco de notas")
Send("Olá Mundo")
WinKill("Sem título - Bloco de notas")
Bom, sei que este foi um post longo, e espero que tenham entendido. No próximo post usaremos quase todos os comandos visto aqui. Qualquer dúvida podem deixar nos comentários que responderei o mais breve possível. Até a próxima.
Nenhum comentário:
Postar um comentário