jump to navigation

Automatizando tarefas com AutoIt – pt2 Janeiro 7, 2009

Posted by moriartypinheiro in Uncategorized.
Tags: , , , , , , , ,
trackback

No post anterior mostrei como abrir o bloco de notas e digitar algo utilizando a linguagem autoit.

Acabamos com esse código:

Run("notepad.exe")
WinWaitActive("Sem título - Bloco de notas")
Send("Escrevendo no bloco de notas")

Como prometi no outro post vou mostrar como fechar o bloco de notas, para isso vamos aprender a simular cliques. Isso é bem importante caso queira, mais tarde, automatizar instalações.

A primeira coisa que devemos nos preocupar no caso do bloco de notas é dar tempo suficiente para que o texto escrito seja lido, vamos utilizar o comando Sleep para fazer o script dormir por um tempo:

Sleep(2000)

Adicionando esta linha fazemos o programa dormir por 2 segundos, o valor passado é em milésimos(1000 = 1 segundo). Utilize um valor que seja suficiente para o texto que você escrever.

Agora sim podemos utilizar o comando para fechar a janela:

WinClose("Sem título - Bloco de notas")

O comando WinClose recebe o título da janela da mesma forma que o WinWaitActive, mas agora estamos fechando a janela.

Se você executar o script agora verá que temos um problema, o bloco de notas pergunta ao usuário se ele deseja salvar o documento antes de fechar.

Agora vou mostrar como simular cliques para responder ao bloco de notas. Vamos utilizar o AutoIt Window Info novamente, dessa vez precisamos do título daquela janelinha que abre perguntando se queremos salvar.

Siga os passos do post anterior, não se esquecendo de selecionar a janela certa e travando os valores no Window Info.

Precisamos esperar essa janela ficar ativa. Utilizamos o comando WinWaitActive mais uma vez, mas passamos o título da janela que pegamos agora:

WinWaitActive("Bloco de notas")

Bom, agora que já estamos com a janela que precisamos ativa, vamos clicar no “Não”:

ControlClick("Bloco de notas", "&Não", 7)

Utilizamos o comando ControlClick e passamos 3 argumentos que vou explicar agora.

Primeiro passamos a janela em que o controle(botão) está, depois o texto do botão. Você deve estar estranhando o “&” antes do texto, ele é utilizado para criar atalhos do teclado. Embora o “&” não apareça para nós, ele está lá e precisamos passar ele junto com o texto. Mais uma vez o Window Info nos ajuda nisso:

Informações do botão

Informações do botão

Com a aba Control(1) selecionada no Window Info, clicamos na janela do bloco de notas que está perguntando se queremos salvar e posicionamos o cursor no botão que queremos pressionar, o “Não” nesse caso, e então travamos os valores no Window Info(Ctrl + Alt + F).

Agora podemos copiar o texto no campo Text(2) dando um clique duplo.

O terceiro argumento que passamos é o ID(3) do botão que também pode ser pego no Window Info.

Agora o nosso script clica no botão para não salvar as alterações e o bloco de notas fecha.

Essa é a principal ferramenta para quando formos automatizar instaladores.

Exste uma maneira mais simples de responder “Não” ao bloco de notas, mas queria mostrar como clicar no botão.

Agora vou mostrar a outra maneira, utilizando atalhos do teclado. Antes disse que o “&” representava o atalho, então na verdade o atalho seria Alt + a letra que o “&” está antes, ou seja, Alt + N. Para simular o teclado utilizamos o Send, e o Alt temos que substituir por “!” no AutoIt:

Send("!n")

É bem mais simples utilizar o atalho com o Send, mas nem sempre é possível. Vale a pena saber as duas técnicas e utilizar a mais apropriada para cada situação.

Automatizando uma instalação no próximo post.

Comentários»

1. NoName - Janeiro 16, 2009

Boa a iniciativa desse tutorial. Siga adiante com isso. AutoIt é uma ferramenta muito boa e precisa de uma força.

É mínima a participação de brasileiros no forum oficial, mas ao menos não fazemos feio, olha o autor disso: http://www.autoitscript.com/forum/index.php?showtopic=70506

o.O

2. moriartypinheiro - Janeiro 16, 2009

Faz pouco tempo que mexo com o autoit, mas é bem interesante. Assim que tiver um tempo faço, pelo menos, mais um post sobre ela.