AutoIt a la capacité de créer des Interfaces Utilisateur Graphiques Simples (GUIs) qui consiste en fenêtres et contrôles.
Une GUI consiste en une ou plusieurs fenêtres et chacune d'elles contient un ou plusieurs contrôles. Les GUIs sont "déclenchent des événements" ce qui signifie que vous pouvez écrire du code qui réagit aux événements - tel un clic sur un bouton. Vous passez la plupart de votre temps à attendre qu'un événement arrive - C'est un peu différent d'un script normal où vous avez le contrôle de ce qui arrive et quand ça arrive ! Pensez-y comme l'attente de l'arrivée du facteur devant votre porte - Vous êtes assis là jusqu'à ce qu'une lettre passe par la boîte aux lettres et ensuite vous la regardez et décidez quoi faire avec - C'est exactement comme ça que fonctionnent les GUIs - Vous attendez l'arrivée du facteur.
Bien sûr, vous pouvez choisir de faire d'autres tâches pendant que la GUI est active - Par exemple vous pourriez utiliser les fonctions GUI pour créer une barre de progression que vous mettriez à jour tandis que votre script exécute d'autres actions complexes.
Tous les utilisateurs devront se familiariser avec les contrôles - Tout ce que vous cliquez ou avec lequel vous interagissez dans une fenêtre est un type de contrôle. Les types de contrôle qui peuvent être créés avec AutoIt sont listés ci-dessous - Vous avez sans doute utilisé la plupart d'entre eux dans d'autres programmes Windows.
|
Un petit bout de texte. |
|
Un bouton simple. |
|
Un contrôle d'une seule ligne qui permet la saisie d'un texte. |
|
Un contrôle multi-ligne qui permet la saisie d'un texte sur plusieurs lignes. |
|
Une boîte de dialogue avec des cases à cocher ou à décocher. |
|
Un ensemble de boutons ronds dont un seul peut être activé à la fois. |
|
Une boîte de dialogue avec une liste déroulante. |
|
Une liste. |
|
Un sélecteur de date. |
|
Une image. |
|
Une icône. |
|
Une barre de prrogression. |
|
Un groupe de contrôles accessibles par onglets. . |
|
Permet de saisir une valeur par incrémentation/décrémentation. |
|
Visualise un clip vidéo au format AVI. |
|
Un menu dans la partie supérieure de la fenêtre. |
|
Un menu contextuel qui apparait quand vous cliquez-droit sur la fenêtre. |
|
Un contrôle similaire à l'explorateur de fichier de Windows. |
|
Un contrôle similaire au contrôle du volume du son de Windows. |
|
Un contrôle affichant des informations en colonnes. |
|
Un contrôle affichant un élément dans un contrôle ListView. |
|
Un contrôle affichant des éléments graphique avec GUICtrlSetGraphic. |
|
Un contrôle utilisateur factice. |
Voici un exemple d'une fenêtre GUI simple qui contient une multitude de contrôles disponibles. Comme vous pouvez le constater, il est possible de créer une GUI très détaillée!
Les contrôles sont créés par l'ensemble des fonctions GUICtrlCreate.... Lorsqu'un contrôle est créé un Contrôle ID est retourné. La chose la plus importante à retenir sur le contrôl ID est que:
Voici les fonctions principale dont vous aurez besoin pour créer une GUI. Ce ne sont que les fonctions essentielles, vous en découvrirez beaucoup plus lorsque vous serez prêt a créer des GUIs très avancées.
Fonction | Explication |
---|---|
GUICreate | Crée une fenêtre. |
GUICtrlCreate... | Crée divers contrôles dans une fenêtre. |
GUISetState | Affiche ou cache une fenêtre. |
GUIGetMsg | Interroge la GUI pour voir si un événement est arrivé (Mode boucle de message seulement). |
GUICtrlRead | Lit les données d'un contrôle. |
GUICtrlSetData | Définit/Modifie les données d'un contrôle. |
GUICtrlUpdate... | Modifie diverses options d'un contrôle (Couleur, style, etc.). |
Vous aurez besoin d'inclure (#include) <GUIConstantsEx.au3> pour les constantes de base GUI. Il y a d'autres fichiers contenant les constantes en relation avec les divers contrôles qui peuvent être crées dans une GUI.
Pour commencer nous allons créer une fenêtre - Appelons là "Hello World" et fixons sa taille à 200 par 100 pixels. Lorsqu'une nouvelle fenêtre est créée elle est cachée - Nous devons donc "l'afficher".
#include <GUIConstantsEx.au3>
GUICreate("Hello World", 200, 100)
GUISetState(@SW_SHOW)
Sleep(2000)
Si vous lancez ce script, vous verrez apparaître une fenêtre pendant deux secondes, puis disparaître. Pas trés intéressent n'est-ce pas? - Ajoutons un peu de texte, et un bouton OK. Le texte sera ajouté à la position 30, 10 et le bouton à la position 70, 50 avec une largeur de 60 pixels.
#include <GUIConstantsEx.au3>
GUICreate("Hello World", 200, 100)
GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
GUICtrlCreateButton("OK", 70, 50, 60)
GUISetState(@SW_SHOW)
Sleep(2000)
Pas si mal, mais comment faire pour que la GUI réagisse au clic du bouton? Bien, c'est là que nous devons prendre une décision sur la manière dont nous allons traiter les événements - Via les fonctions MessageLoop ou OnEvent.
Comme mentionné ci-dessus il y a deux modes GUI de base : Le mode MessageLoop et le mode OnEvent. Les modes sont simplement deux façons différentes de réagir aux événements GUI. Le mode que vous choisirez dépendra de votre préférence personnelle, et dans une certaine mesure du type de GUI que vous voulez créer. Ces deux modes sont capables de créer n'importe quelle GUI que vous souhaitez mais parfois l'un des modes convient plus que l'autre pour réaliser une tâche.
Le mode par défaut, est le mode MessageLoop (Boucle de message). Pour passer en mode OnEvent (Evénementiel), utilisez Opt("GUIOnEventMode",1).
Mode Message-loop - Boucle de message (par défaut)
Dans le mode Message-loop votre script passera la majorité de son temps dans une boucle infinie. Cette boucle interrogera simplement la GUI en utilisant la fonction GUIGetMsg. Lorsqu'un événement s'est produit, la valeur de retour de la fonction GUIGetMsg montrera les détails (Un bouton est cliqué, la GUI à été fermée, etc.).
Dans ce mode vous recevrez uniquement des événements tandis que vous interrogerez activement la fonction GUIGetMsg, donc vous devez vous assurer que vous l'appelez plusieurs fois par seconde sous peine de rendre votre GUI inerte.
Ce mode est trés bien pour une GUI "Reine", et dont vous n'attendez qu'un événement utilisateur.
Voir cette page pour des explications détaillées sur le mode MessageLoop.
Mode OnEvent - Mode événementiel
Dans le mode OnEvent (Evénement) au lieu d'interroger en permanence la GUI pour savoir si quelque chose s'est passé, vous faites en sorte que la GUI mette temporairement votre script en pause et appelle une fonction prédéfinie pour traiter l'événement. Par exemple, si l'utilisateur clique le Bouton1, la GUI met en pause votre script principal et appelle une fonction utilisateur précédemment définie qui traite le code relatif au Button1. Lorsque la fonction est terminée, le script principal est repris là ou il en était. Ce mode est similaire à la méthode Forms de Visual Basic.
Ce mode est plus adapté pour les scripts dont la GUI passe en second plan et permet au script principal de réaliser des tâches continues tout en surveillant la GUI.
Voir cette page pour des explications détaillées sur le mode OnEvent.