Introduction

Traduction de la description d'AutoIt trouvée sur le site officiel :

AutoIt v3 est un langage de script inspiré du BASIC pour automatiser l'interface de Windows et l'exécution de tâches en général. Il utilise une combinaison de simulation d'appui de touches du clavier, de mouvements de souris de manipulation de fenêtre pour automatiser des tâches qu'il n'est pas possible (ou pas efficace) de réaliser avec d'autres langages (par exemple : VBScript et ses SendKeys). Il permet de générer de petits programmes, auto-contenus et fonctionnera sur toutes les versions standard de Windows, sans avoir à gérer la contrainte des libraires additionnelles.

AutoIt a été conçu au début pour le déploiement de PC pour automatiser et configurer efficacement des milliers de PC. Au fur et à mesure de l'avancement, il est devenu un langage puissant qui supporte les expressions complexes, les fonctions définies par l'utilisateur, les boucles et tout ce que des développeurs confirmés pourraient attendre.


Nous utilisons AutoIT, notamment dans le cadre d'un script de déploiement personnalisé d'OpenOffice. Ce script peut s'insérer dans un Kixtart existant ou fonctionner indépendamment à la demande ou à l'ouverture de session.

AutoIT est livré avec une version modifiée de l'éditeur de texte Scythe qui intègre la coloration syntaxique du langage et des info-bulles pour rappeler les paramètres des fonctions. Des fonctions supplémentaires permettent de compiler et lancer le programme depuis Scythe.




Programme indépendant

Un des avantages d'AutoIt est qu'il peut se déployer sous forme d'un script (.au3) ou sous forme d'un exécutable. Dans ce dernier cas, il n'aura besoin d'aucune librairie externe pour fonctionner (sauf si vous faites appel à des DLL externes, voir plus loin). Cela permet de répandre une application rapidement sans avoir à faire de programme d'installation sur tout un réseau.

Exécuter en tant que...

LA fonction la plus importante d'AutoIt est qu'il propose un jeu de fonctions permettant d'exécuter des commandes avec des droits d'adminitrateur. Quel est l'avantage ? Mettons que sur votre réseau, les utilisateurs n'ont pas le droit d'installer de nouvelles applications. En VBS, il est possible d'utiliser un « Shell.Run » pour lancer l'application d'installation et de coupler avec un « Runas » pour qu'il lance l'installeur avec un compte administrateur et par-dessus tout cela, il faut encore utiliser la commande « SendKeys » pour envoyer des touches du clavier pour composer un mot de passe. La méthode n'est ni simple, ni efficace, car les forums sont remplis de messages de gens n'arrivant pas à utiliser cette méthode. C'est souvent à la suite de ces messages que les gens se voient proposés d'utiliser AutoIt pour remédier au problème.

Comment cela marche t'il dans AutoIt ?

Lancer un programme en tant qu'administrateur se fait simplement à l'aide de deux commandes :

RunAsSet(username, domain, password, [profil])

Run (ou RunWait)(Commande)

La première permet de définir le login/mot de passe/domaine à utiliser pour toutes les commandes Run et RunWait lancées ultérieurement. La deuxième lance la commande en paramètre.

Pour réinitialiser le compte à utiliser (et ainsi revenir sur le compte de l'utilisateur qui se connecte), il suffit de lancer la commande

RunAsSet()

Librairies externes

AutoIT propose une collection de fonctions suffisamment vaste pour couvrir la plupart des besoins en administration Windows. Cependant dans certains cas, il est nécessaire de faire appel à des DLL externes. AutoIT propose de faire appel à des librairies externes à l'aide de 8 fonctions d'ouverture, d'appel et de manipulation des données.

L'exemple suivant montre comment créer une messagebox sans passer par la fonction MsgBox d'AutoIT.

$result = DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "Test de messagebox", "str", "Some title", "int", 0)

Interaction avec l'environnement graphique

L'utilisation de DLL externes, dont celles de Windows, amène au point suivant : l'interaction avec l'environnement graphique, comme les fenêtres.

L'intérêt immédiat est l'automatisation de tâches répétitives, un peu à la manière de l'Applescript sous Mac OS. Un exemple est le déploiement d'une application qui n'aurait pas de package msi disponible. Le site d'AutoIT présente un exemple en automatisant l'installation de WinZip : http://www.autoitscript.com/autoit3/docs/tutorials/winzip/winzip.htm (en anglais).

Le principe est simple :

WinWaitActive("WinZip® 9.0 SR-1 Setup", "&Setup")
Send("!s")

La première commande fait attendre le programme que la fenêtre nommée "WinZip® 9.0 SR-1 Setup" apparaisse. La deuxième envoie la combinaison de touches <CTRL> + <s> pour simuler une action sur le bouton Setup de la fenêtre.

Bien entendu, ceci n'est qu'un exemple, car WinZip met à disposition un package Msi pour faciliter l'installation. Mais cela montre bien les possibilités d'AutoIT dans le domaine.

Interfaces graphiques

AutoIT permet de créer des interfaces graphiques dans le code, à la manière du langage Java. Cependant, pour faciliter la création de ces interfaces graphiques, LazyCat a créé Koda, un programme qui permet de créer des interfaces graphiques de manière graphique, à la manière d'un IDE (VB ou Java par exemple).

La plupart des contrôles habituels sont présents (boutons, étiquettes, champs de texte, combobox...). Une fois l'interface graphique terminée, Koda générera le code à insérer dans le script AutoIT.

L'interaction avec ces contrôles dans le programme est simple :

$etape = GUICtrlCreateLabel("Initialisation...", 24, 40, 470, 17) ; pour créer une étiquette

GUICtrlSetData($etape, "nouveau texte") ;le texte de l'étiquette est modifié


Fonctions orientées administration

Outre les fonctions énoncées plus haut, AutoIT offre une foule de fonctions et variables définies pour faciliter le développement de scripts d'adminstration Windows, parmi lesquelles :

  • Accès à la base de registre : cela se fait avec une simple commande RegRead ou RegWrite

  • Accès aux variables du système : @ComputerName pour le nom de l'ordinateur, @UserName pour le nom de l'utilisateur qui a ouvert la session, @WorkingDir pour le chemin du répertoire courant d'éxecution...

  • Fonctions de traitement de chaînes de caractères : Plus de 30 fonctions permettent de travailler avec les chaînes de caractère : recherche, découpage, conversion, les outils les plus utilisés sont présents.

  • Fonctions d'accès au réseau : Les fonctions commençant par TCP permettent de se connecter à des ressources réseau. De nombreuses librairies permettent de gérer ainsi certains protocoles reconnus (HTTP, FTP...)

Conclusion

Les possibilités offertes par AutoIT sont conséquentes. L'administrateur dispose ici d'un outil simple à développer, tout en restant puissant et orienté administration Windows. Le langage évolue rapidement et une communauté importante s'est créé autour, proposant un support et de nombreux scripts.

AutoIT est une solution efficace pour tout problème de déploiement d'application, administration de réseau Microsoft Windows ou autre projet de petite ou moyenne envergure.

Ressources

Site officel : http://www.autoitscript.com/autoit3/

Téléchargement direct : http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe

Dictionnaire des fonctions : http://www.autoitscript.com/autoit3/docs/functions.htm

Dictionnaire des variables d'environnement : http://www.autoitscript.com/autoit3/docs/macros.htm

Forum : http://www.autoitscript.com/forum/

Koda : http://www.autoitscript.com/forum/index.php?showtopic=32299


Pierre Wirtz - VersusMind

Vous accompagne vers la bureautique libre

http://www.versusmind.eu