jeudi 5 mars 2020

AutoIt - Automatisation de tâche

Ruby permet de gérer un certain nombre de tâches sur les OLE windows (objet COM). Certaines technologies anciennes n'ont pas de dll (ex.: DDE).
Pour aller plus loin avec l'automatisation (automation) il existe des langages permettant d'émuler les clics souris ou les touches du clavier. AutoIt est un bon exemple, très poussé il permet de créer un exécutable et même de gérer une GUI (IHM).

Certaines options de logiciel ne sont accessibles que via l'interface graphique (ou bien connaître la bonne fonction de la dll à lancer...)
Ex.: export des méta-données de Datastage.
Il peut se révéler alors très pratique d'automatiser toute une chaine, export des méta-donneés inclues, ce qui n'est possible autrement et là... on gagne de la valeur ajoutée !
Rien n'est impossible en informatique, cela demande du temps et de la compétence.

AutoIt avec Ruby ? vous pensez bien que Ruby ne pouvait pas passer à côté d'une si belle librairie !
>$ gem install watir
enregistrer la dll (démarrez exécuter > "regsvr32 C:\ruby\lib\ruby\gems\1.8\gems\watir-1.4.1\watir\AutoItX3.dll")

Pour tester :
require 'rubygems'
require 'win32ole'
a = WIN32OLE.new("AutoItX3.Control")
a.mousemove(100, 100)
a.mouseclick

*-*-*-*-*-**-*-*-*-*-*-*-*
ruby with AutoItX

http://wtr.rubyforge.org/
http://www.autoitscript.com/forum/index.php?showtopic=57887&st=0&p=437832&#entry437832
http://arton.hp.infoseek.co.jp/index.html
http://www.autoitscript.com/autoit3/
http://phrogz.net/ProgrammingRuby/win32.html

=======
gem install watir
regsvr32 C:\ruby\lib\ruby\gems\1.8\gems\watir-1.4.1\watir\AutoItX3.dll
irb
require 'rubygems'
require 'win32ole'
a = WIN32OLE.new("AutoItX3.Control")
a.mousemove(100, 100)
a.mouseclick
=======

regsvr32 C:\ruby\lib\ruby\gems\1.8\gems\watir-1.4.1\watir\AutoItX3.dll
irb
require 'win32ole'
a = WIN32OLE.new("AutoItX3.Control")
a.ole_methods

http://actsasbuffoon.wordpress.com/2008/12/30/introduction-to-autoitx3/
http://rubywithwatir.blogspot.com/
http://rpgmakerxp.frbb.net/apprendre-le-ruby-f33/les-apis-windows-t557.htm
http://www.rubycentral.com/book/win32.html


#system system( aCmd [, args ]* ) -> true or false
#Executes aCmd in a subshell, return true/false A detailed error code $?. Kernel::exec on page 415.
system("echo *")
system("echo", "*")
OU
exec( command [, args ])
Quote spéciale "7"
puts `ls`
puts %x{ls}


require 'rubygems'
require 'win32ole'

begin
autoIt = WIN32OLE.new("AutoItX3.Control")
rescue
#marche pas : démarrez>exécuter... ou cmd ...
#register dll
path = "D:\\eclipse\\ruby\\lib\\ruby\\gems\\1.8\\gems\\watir-1.6.2\\lib\\watir\\"
#/s silent
result = system "regsvr32 /s #{path}AutoItX3.dll"
if !result
puts "(E) Vérifier le chemin de la dll AutoIt"
puts "(E) ou exécuter (Démarrez>Exécuter) taper \"regsvr32 /s AutoItX3.dll\""
end
autoIt = WIN32OLE.new("AutoItX3.Control")
end

autoIt.mousemove(100, 100)
autoIt.mouseclick

===
Il existe un module aussi très intéressant concernant le remplissage de formulaire web !
Par exemple pour automatiser l'envoi de vos superbes photo de vacances sur Picasa, vous connecter à votre boîte mail, ou remplir un formulaire pour créer un ticket d'anomalie...
>$ gem install mechanize

[Doc] [test]