close

Ganhe dinheiro navegando
na Internet 5 minutos por dia!
CLIQUE AQUI E REGISTE-SE JÁ
COM BONUS REFERER!


special

AutoIT - Tutorial 2 (Automatizar tarefas avançadas)

No tutorial anterior ( Tutorial 1 ), falamos do que o AutoIT faz de melhor: Automatizar tarefas. Hoje vamos aproveitar melhor esta funcionalidade, em automatizar tarefas avançadas. Irei dar um exemplo de como fazer uma uma operação na Calculadora do Windows, colocar esse valor no WordPad e depois guardar num ficheiro esse valor, com apenas 1 clique!

Nota: Isto é apenas um exemplo, podendo se aplicar noutro programa qualquer.

Quer ver mais tutoriais do AutoIt? Visite já o Blog Tutorial AutoIt!

Antes de tudo, temos de ter o: AutoIT
Download - AutoIT

Se não sabe o que é o AutoIT, recomendo que leia esta página: Ponha o computador a trabalhar sozinho com o AutoIT

Agora vamos abrir o "SciTE Script Editor", "Calculadora", "WordPad" e "AutoIt Window Info". Este último programa ( AutoIt Window Info ), tal como o nome indica, nos irá dar a informação de cada janela (janela, controlos, texto visível, etc.) o que será muito útil para o que vamos fazer.

Nota: Para simplificar o programa que vamos fazer, certifique-se que tem a Calculadora do Windows em Modo Padrão, para isso vamos a: Ver -> Padrão Bem vamos então elaborar o programa!
  1. Temos de executar a Calculadora do Windows. E nesse aspecto o AutoIT também nos ajuda. Para executarmos o programa utilizamos o comando: Run. A linha completa fica assim: Como de computador para computador a localização do CCleaner pode variar (pode estar no disco C: ou D: ou outro qualquer), o AutoIT tem um comando para saber a localização da pasta "Programas" independentemente da letra do disco: @ProgramFilesDir.

    Run ( "calc" )

    Nota: Para um outro programa (não incluído no Windows), é necessário escrever o caminho completo do programa a ser executado. Se o programa estiver instalado na pasta "Programas", o AutoIT tem um comando para saber essa localização exacta: " @ProgramFilesDir ".

    Exemplo: Run (@ProgramFilesDir & "\Windows Live\Messenger\msnmsgr.exe") ;Executa o Messenger

  2. Agora, antes de que o nosso programa faça alguma coisa, temos de esperar que o programa arranque. E para isso usamos o comando: WinWaitActive . Ou seja o programa fica à espera até que determinada janela fique activa. Esta linha fica assim:

    WinWaitActive ("Calculadora")


  3. Agora que o programa está totalmente carregado, já podemos pôr o programa em acção! Vamos apenas fazer uma operação simples como exemplo: 8/2*7.
    E agora é que vamos fazer a parte avançada: clicar nos botões sem mexer o rato! No tutorial anterior para fazer operações de clicar, mover, via-se o rato a mexer, mas com com isto não irá mexer nem 1 pixel! E para isso precisamos do programa anteriormente aberto:
    AutoIt Window Info.

    Com este programa conseguimos identificar o nome interno do controlo que queremos clicar, usando a ferramenta "Finder Tool". Para usar-la, clicamos fixo nessa ferramenta (na mira [+]), como mostra a imagem à direita, e arrastamos a mira até ao controlo que queremos.

  4. O primeiro botão que iremos carregar é o 8 , pois a operação que vamos fazer é: 8/2*7. Então clicamos com o rato no "Finder Tool" sem largar o botão do rato, e arrastamos para o botão 8 da Calculadora do Windows e largamos o botão do rato. Agora no "AutoIt Window Info", clicamos no separador "Control" e fazemos duplo clique na propriedade "Advanced (Class)", o que ele faz é copiar o nome interno desse botão, neste caso "8". Agora que já temos o nome interno só falta programar o comando para clicar nesse botão: ControlClick. Vamos ao SciTE e escrevemos a seguinte linha:

    ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:9]")

    Explicando melhor o comando: ControlClick([Titulo da Janela], "", [nome interno do controlo])

  5. O resto dos botões é exactamente o mesmo processo: usando o "Finder Tool", mas nos botões correspondentes. As próximas linhas ficam assim:

    ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:17]"); Botão /
    ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:11]"); Botão 2
    ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:18]"); Botão *
    ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:5]"); Botão 7
    ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:21]"); Botão =

  6. A linha seguinte é para copiar o resultado, sendo muito simples com o comando "Send". Portanto esta linha fica assim:

    Send("^C")

    O caracter "^" representa a tecla "CTRL"

  7. Agora que já temos o resultado da operação, podemos fechar a Calculadora.

    Send("!{F4}")

    O caracter "!" representa a tecla "ALT"

  8. E abrimos o WordPad.

    Run("write")

  9. Esperamos que o programa arranque.

    WinWaitActive("Documento - WordPad")

  10. Cola-se o resultado da operação.

    Send("O resultado da operação é: ^V")

  11. Guardamos o ficheiro.

    Send("^g")
    WinWaitActive("Documento - WordPad")
    Send("{ENTER}")

  12. E finalmente fechamos o WordPad.

    Send("!{F4}")
    MsgBox("","Mensagem", "Programa terminado com sucesso!")

E já está! Agora para testar o programa que acabamos de fazer, fechamos primeiro a Calculadora, WordPad e AutoIt Window Info. Vamos ao SciTE e clicamos em "Tools" -> "Go", e vemos o computador a trabalhar sozinho!

Muito rápido não é? Se quiser ver mais lentamente cada processo, entre cada linha coloque esta linha: Sleep(100) assim em cada processo o programa vai esperar 100 milissegundos.

O código completo, que acabamos de fazer:

;=== Tutorial: Street Racer Hacking | www.StreetRacerHacking.BlogSpot.com ===
Run
("calc") ;Executa a Calculadora
WinWaitActive("Calculadora") ;Espera que a Calculadora arranque
ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:9]") ; Botão 8
ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:17]") ; Botão /
ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:11]") ; Botão 2
ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:18]") ; Botão *
ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:5]") ; Botão 7
ControlClick("Calculadora", "", "[CLASS:Button; INSTANCE:21]") ; Botão =
Send("^C") ;CTRL + C
Send("!{F4}") ;ALT + F4
Run("write") ;Executa o WordPad
WinWaitActive("Documento - WordPad") ;Espera que o WordPad arranque
Send("O resultado da operação é: ^V") ;CTRL + V
Send("^g") ;CTRL + G
WinWaitActive("Guardar como") ;Espera pela janela "Guardar como"
Send("{ENTER}") ;ENTER
Send("!{F4}") ;ALT + F4
MsgBox("","Mensagem", "Programa terminado com sucesso!") ;Mensagem

Agora só falta a vossa imaginação, e criar a tua própria automatização!


Quer ver mais tutoriais do AutoIt? Visite já o Blog Tutorial AutoIt!

Como ficava se pudéssemos, escrever o nome do ficheiro a guardar? Escreva aqui o seu comentário! Se tiver alguma dúvida, comente também!


Gostou do que leu?
Subscrever pelo RSS
Ou
Endereço de E-Mail:

19 comentários:

Antony disse...

Olá! Seu blog é muito interessante. Obrigado por me seguindo.

Ruan Luiz disse...

muito bom, XDD

com esses comando jah fiz um auto-desligar^^

e costumo dormir na frente do pc, ai eu pus:

Sleep(1200000) = esperar 20 minutos para começar a funcionar

Send("!{F4}") = abre a janela de desligar, deixar em estado de espera ou fazer logoff

Sleep(200) = espera 200 milisegundos

Send("{TAB}{TAB}")= dah dois tab's que faz com que a opção desligar fique selecionada

Send("{ENTER}") = dah enter na opçao selecionada

Exit = fexa o script


XDDDD

muito bom pra qd estou quase dormindo na frente do pc^^

Street Racer disse...

Muito Obrigado!

Se quiser saber mais acerca de scripts do AutoIt, vá ao meu novo blog: http://tutorialautoit.blogspot.com/Lá fala tudo relacionado com o AutoIt!

PS: eu ainda não divulguei o blog porque, ele ainda está no ar à pouco tempo.

alberto marlboro disse...

gracias por el tuto, gosto mto do AutoIt

Fabyo disse...

Tenho um aplicativo que sempre fica com o mesmo texto na barra de titulo, por exemplo: Microsoft Internet Explorer.

Só que o que esta dentro desta pagina existem outras janelas como nomes variaveis só que nao dá para selecionar nada portanto nao da para identificar nenhum texto na janela, para que eu possa executar um WinWait(janela), para estes casos alguem conhece alguma alternativa?

Anónimo disse...

Antony, para auto-desligar o computador, é mais facil fazer assim:

Sleep(1200000)
Shutdown(1)

Fabio Eduardo dos disse...

Olá, Acabei de iniciar uma analise da ferramenta para melhorar o processo de Homologação de Software aqui na minha empresa, porém esta acontecendo algo estranho ao Executar o script postado nesse tutorial na Version 1.79, realizei o famoso e facil Ctrl + C e Ctrl V, Salvei e teclei F5, simplemente ficou "Maluco" iniciou varias vezes o script de forma muito rápida e começou a se auto executar diversas vezes, Precisei dar reset na maquina!

Alguem pode me ajudar?

Anónimo disse...

para desligar o pc em um tempo pré selecionado (inclusive por acesso remoto) utilize:
shutdown -s -f -t 1000 (mil milisegundos)

sergio disse...

Muito bom, D+
Valeu, por explicar bem!!!

sergio disse...

8. E abrimos o WordPad.
Run("write")
---------------------
Não funciona.
Resolvi mudar para:
Run("C:\Arquivos de programas\Windows NT\Acessórios\WordPad.exe", "C:\Arquivos de programas\Windows NT\Acessórios")

Vitor disse...

Olá, tem como fazer o AutoIT ficar apertando uma tecla infinitamente, de segundos em segundos? por exemplo, apertar a tecla F de 3 em 3 segundos?

Anónimo disse...

Olá gostei muito do tutorial
mas fiquei com duvidas
como faço para executar as teclas "F4, F5, ALT, Ctrl, ou fazer combinações tipo ALT+F1"

Há alguém sabe onde posso achar um lista com todos os comandos do autoit?

Se alguém puder me ajudar ficarei grato!!!

Cuia disse...

Estou divulgando a melhor forma de renda extra na internet. Participe da comunidade: http://www.orkut.com.br/Main#Community?cmm=117452850

asdfman8000 disse...

a lista fica no help do autoit

pergunta: quando uso o _IsPressed ele equivale como o hotkeyset e nao digita a tecla digitada?

Anónimo disse...

------------------------------------------------
Aqui vou deixar um pequeno tuto com as explicações dos comandos:
------------------------------------------------
Sleep(5000) ;Indica que o script vai ficar PAUSADO por 5 segundos. Pode ser colocado em qualquer linha do programa onde ele precise esperar 5 segundos antes de continuar. Pode ser mudado para qualquer outro número, por exemplo: 1000=1 segundo, 2000=2 segundos, 3000=3 segundos, etc.
------------------------------------------------
HotKeySet("P", "funcao1()") ;Quando "P" for precionado, vai acontecer tudo o que esta no item abaixo "funcao1()"

Func funcao1() ;Aqui se cria a função ao precionar "P"

;Coloque o que deve acontecer abaixo
Send("voce apertou o botao P.") ;a macro vai escrever "voce apertou o botao P."
Sleep(3000) ;A macro vai esperar 3 segundos e repetir tudo denovo

EndFunc ;indica que os itens que devem ser repetidos acabam aqui

Washington disse...

;_IsPressed nao funciona mais, é preciso colocar HotKeySet no começo da macro, usando:

HotKeySet("{F1}", "funcao1()")

;aí vem que, ao apertar F1, ele vai executar a funcao1() -os parenteses sao necessarios, se tirar dá erro

Func funcao1()

;No lugar disso, coloque a função,
Sleep(600) ;Esse sleep serve para poder fexar o programa, porque ele vai ficar repetindo INFINITAS VEZES e pode travar o computador se ficar apertando sem parar (Infinitas vezes na velocidade infinita também!)

EndFunc

Anónimo disse...

o QUE HÁ DE ERRADO NA EXPRESSÃO QQUE ESTOU FAZENDO? muito obrigada!!!

Select
Send ("{HOME}{SHIFTDOWN}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{SHIFTUP}")
EndSelect
dim abertura [= Select]
Do
if abertura = "AAAAA" Then Send ("{Down}{HOME}")
If abertura Not "00000" Then Send ("{END}{CTRLDOWN}v{CTRLUP}{Down}{HOME}")
IF abertura = "00000" Then Send ("{RIGHT}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{SHIFTDOWN}{END}{SHIFTUP}{CTRLDOWN}c{CTRLUP}{Down}{HOME}")
Until abertura = "ZZZZZ"

Washington disse...

Anônimo, não se deve colocar o
Send("{HOME}{SHIFTDOWN}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{RIGHT}{SHIFTUP}")
entre os selects, porque os select indica que existe uma opção, no select vc coloca:
$msg = GetMsg()

Case $msg = $GUI_EVENT_CLOSE
Exit

Case $msg = $botao1
(suas funções de botão 1 aqui)

Case $msg = $botao2
(suas funções de botão 2 aqui)

EndSelect
WEnd

Daniel Moreno disse...

Ola no AutoIT consigo setar um combo box se sim tem como me mostra um exemplo?

Enviar um comentário

Escreva aqui o seu comentário! O seu comentário conta! Sugira, critique, comente, o que quiser!