Référence GUI

AutoIt a la capacité de créer des Interfaces Utilisateur Graphiques Simples (GUIs) qui consiste en fenêtres et contrôles.

Concepts GUI

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.

Contrôles GUI

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.

  • Label
Un petit bout de texte.
  • Button
Un bouton simple.
  • Input
Un contrôle d'une seule ligne qui permet la saisie d'un texte.
  • Edit
Un contrôle multi-ligne qui permet la saisie d'un texte sur plusieurs lignes.
  • Checkbox
Une boîte de dialogue avec des cases à cocher ou à décocher.
  • Radio
Un ensemble de boutons ronds dont un seul peut être activé à la fois.
  • Combo
Une boîte de dialogue avec une liste déroulante.
  • List
Une liste.
  • Date
Un sélecteur de date.
  • Pic
Une image.
  • Icon
Une icône.
  • Progress
Une barre de prrogression.
  • Tab
Un groupe de contrôles accessibles par onglets. .
  • UpDown
Permet de saisir une valeur par incrémentation/décrémentation.
  • Avi
Visualise un clip vidéo au format AVI.
  • Menu
Un menu dans la partie supérieure de la fenêtre.
  • ContextMenu
Un menu contextuel qui apparait quand vous cliquez-droit sur la fenêtre.
  • TreeView
Un contrôle similaire à l'explorateur de fichier de Windows.
  • Slider
Un contrôle similaire au contrôle du volume du son de Windows.
  • ListView
Un contrôle affichant des informations en colonnes.
  • ListViewItem
Un contrôle affichant un élément dans un contrôle ListView.
  • Graphic
Un contrôle affichant des éléments graphique avec GUICtrlSetGraphic.
  • Dummy
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:

Fonctions GUI basiques

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.

Modes des événement des GUI

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.