Páginas

terça-feira, 5 de fevereiro de 2013

Automatizando a execução de programas com envio automático de caracteres ao teclado

Se você utiliza algum programa que não fornece a opção de agendamento de execução nem passagem de parâmetros, já deve ter se deparado com a necessidade de executar uma determinada tarefa muito demorada (por exemplo a emissão de um relatório que leva horas, mas só pode ser executado de madrugada) e não tem como automatizar isso ou tem que ficar até mais tarde no trabalho só pra disparar a sua rotina quando todo mundo parou de usar o sistema!

Seus problemas acabaram! (E as horas extras também!)

Com um simples Shell Script do windows você pode automatizar essa tarefa!

Veja no exemplo abaixo um script que chama um programa chamado folhapagamento.exe, informa o nome do usuário do sistema (Tecla enter), informa a senha (Tecla enter) e abre no menu a opção "Fechar Folha"(cuja tecla de atalho é ALT+F no menu), digita a data do parâmetro da folha a ser fechada e tecla "ENTER" (representado pelo sinal ~ ).

Este é só um exemplo de um ShellScript, salve com a extensão ".wsf" e coloque no agendador de tarefas do windows para rodar a hora que você quiser! Da próxima vez que precisar rodá-lo não esqueça de trocar os parâmetros! (da pra melhorar o script e pegar funções que retornam data no caso do exemplo).

Pra quem não tem paciência para criar scripts, pode comprar programas do tipo "Mouse and Keyboard Record", que capturam as teclas do programa quando você executa eles pela primeira vez e depois ajuda você a criar uma macro pra automatizar a mesma tarefa N vezes!.
(ex.: http://www.robot-soft.com/mouse-keyboard-recorder.html# )


<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         WshShell.Run "c:\folha\folhapagamento.exe"
         WScript.Sleep 100
         WshShell.AppActivate "FolhaDePagamento"
         WScript.Sleep 100
         WshShell.SendKeys "MEU_USUARIO"
         WScript.Sleep 200
         WshShell.SendKeys "~"
         WScript.Sleep 100
         WshShell.SendKeys "MINHA_SENHA_XXXX"
         WScript.Sleep 100
         WshShell.SendKeys "~"
         WScript.Sleep 1900
         WshShell.SendKeys "%(f)"
         WshShell.SendKeys "~"
         WshShell.SendKeys "01/02/2013"
         WScript.Sleep 200
         WshShell.SendKeys "~"
      </script>
   </job>
</package>



Mais dicas e parâmetros de como trabalhar com script e sendkey:
http://msdn.microsoft.com/en-us/library/8c6yea83(v=vs.84).aspx