<?xml version="1.0" encoding="utf-8" ?>
<bigtuto id="204274" generator="VT 3.5.2" language="zCode">
  <titre>
    <![CDATA[La programmation avec Autoit]]>
  </titre>
  <avancement>
    <![CDATA[50]]>
  </avancement>
  <licence>
    <![CDATA[1]]>
  </licence>
  <difficulte>
    <![CDATA[0]]>
  </difficulte>
  <introduction>
    <![CDATA[Bonjour à tous, amis Zéros ! ^^

Bienvenue dans le cours de programmation en Autoit préparé par la communauté Française de ce langage de programmation.

C'est parce qu'il existe très peu de tutoriels complets sur le Web que nous avons décidé d'en créer un pour les nouveaux utilisateurs.

Tout d'abord, Autoit est un langage peu utilisé à cause des fausses idées que se font certains programmeurs, parmi lesquels on peut  trouver (citation de forums):
<liste><puce>Ce langage n'est utile que pour les boulets qui jouent aux jeux en ligne avec des bots.</puce><puce>C'est un langage avec très peu de fonctions (pauvre).</puce><puce>Ce langage ne gère pas le graphique (création d'interface).</puce><puce>En gros? Ce langage ne sert à rien...</puce></liste>
<erreur>Otez-vous tout de suite ces idées de la tête!!!</erreur>

L'Autoit, depuis sa version 3, est un langage puissant. D'ailleurs, après une petite liste de choses fausses, voilà quelques exemples des avantages d'Autoit.
<liste><puce>Facile à apprendre grâce à une syntaxe proche du BASIC.</puce><puce>Possibilité de manipuler les fenêtres, les process', le registre, les fichiers, les objets WMI ...</puce><puce>Possibilité d'interagir avec les fenêtres existantes.</puce><puce>Possibilité de créer votre exécutable (rend le programme utilisable sur n'importe quelle machine) très facilement.</puce><puce>Possibilité de créer des Interfaces Graphiques Utilisateurs (GUIs) de qualité.</puce><puce>Supporte des objets Com et des expressions régulières.</puce><puce>Peut appeler les DLL et les fonctions API de windows.</puce><puce>Peut exécuter vos programmes avec les droits d'administrateur.</puce><puce>Documentation très complète, facile à prendre en main, exemples pour chaque fonction... (Anglais officiel, mais Français en cours de traduction, je vous l'expliquerai plus tard)</puce><puce>Compatible avec Windows 95 / 98 / ME / NT4 / 2000 / XP / 2003 / Vista / 2008 / Seven </puce><puce>Sa grande force est de ne pas avoir besoin de compiler vos scripts à chaque fois que vous voulez les tester.</puce><puce>Possibilité de simuler des mouvements, des clics et des sélections avec la souris, ainsi que l'appui sur des touches de votre clavier.(ce langage est à la base conçu pour cela) </puce></liste>

Envie d'essayer ? C'est gratuit et la progression est rapide, alors suivez le guide!]]>
  </introduction>
  <parties>
    
      <partie id="204275">
	<titre>
	  <![CDATA[Bien commencer : Les Bases]]>
	</titre>
	<avancement>
	  <![CDATA[0]]>
	</avancement>
	<difficulte>
	  <![CDATA[0]]>
	</difficulte>
	<introduction>
	  <![CDATA[Il s'est dit un jour que "L' expérience est une lanterne que l'on porte derrière le dos et qui n'éclaire que le chemin parcouru".

Disons que ... vous avez du chemin à parcourir avant d'arriver à programmer en Autoit, et ça tombe bien, cette partie est faite pour ça !! :soleil:]]>
	</introduction>
	<chapitres>
	  
	    <chapitre id="205993">
	      <titre>
		<![CDATA[Découvrez Autoit]]>
	      </titre>
	      <avancement>
		<![CDATA[100]]>
	      </avancement>
	      <difficulte>
		<![CDATA[1]]>
	      </difficulte>
	      <introduction>
		<![CDATA[Envie de tâter le clavier ? Patience, plus vous en connaitrez, plus il sera facile de débuter !
Dans ce chapitre, nous allons commencer à apprendre à utiliser Autoit ;)
Évidemment, c'est toujours le chapitre le plus chiant, mais il est ultra conseillé  :-°  de tout lire attentivement!]]>
	      </introduction>
	      <sousparties>
		
		  <souspartie id="205994">
		    <titre>
		      <![CDATA[Présentation]]>
		    </titre>
		    <texte>
		      <![CDATA[Autoit a été créé en 1998 par Jonathan Bennett dans le but d'automatiser la configuration de centaines de PCs reliés entre eux. Après une longue route semée d'embûches, c'est devenu un langage capable de supporter des expressions complexes, des UDF (fonctions crées par les utilisateurs), des boucles, et tout ce dont les programmeurs expérimentés ont besoin.
De nos jours, il est de plus en plus utilisé grâce à sa portabilité et sa flexibilité.

Les programmes Autoit ont une extension .au3 que vous pouvez éditer avec:
<liste><puce>L'éditeur intégré  Scite (en version light).</puce><puce>L'éditeur Scite4Autoit3 non intégré mais que je vous conseille vivement de télécharger car il possède des fonctionnalités super utiles pour les codeurs (donc vous :p ), comme l'explique le paragraphe suivant.</puce><puce>Un autre éditeur (il en existe des centaines) (le bloc-notes peut suffire ;).</puce></liste>

Nous verrons prochainement comment compiler un programme Autoit ,c'est à dire créer un exécutable qui sera compris par tous les ordinateurs sans aucune installation préalable. Les Exécutables ont une extension .exe, et nous verrons comment procéder très facilement avec Autoit.
Cependant,l'un des avantages est qu'il suffit de double-cliquer sur votre script pour le voir s'exécuter. Pas besoin d'installer un IDE complexe et lourd, pas besoin de compiler, le simple programme AutoIt.exe et le bloc-notes suffisent pour créer et exécuter un script AutoIt.
C'est génial non ? :D

Maintenant que vous en savez un peu plus, on va pouvoir le télécharger et l'installer.

<attention>Autoit ne fonctionne pas sous un noyau Linux. Il a été conçu pour Windows. Cependant, c'est aux dernières nouvelles l'un des rares langages qui permet d'afficher une Interface sous Windows Core !</attention>]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="205995">
		    <titre>
		      <![CDATA[Telechargement & Installation]]>
		    </titre>
		    <texte>
		      <![CDATA[Les choses sérieuses vont commencer ! ;)

<information>Le paragraphe qui suit dans le spoiler si dessous est la première version qui a été écrite au commencement de la rédaction de ce tutoriel. Mais le temps est ce qu'il est, pendant que certains rédigeaient ce tutoriel,<barre> un boulet de première</barre> un super programmeur a créé un programme d'installation Français automatique qui va nous être utile. Si vous voulez vous simplifier la vie, sautez le paragraphe qui suit.</information>

<titre1>Installation Semi-Automatique</titre1>

<secret>Il est peut-être temps de télécharger, non ? :-°

<attention>
Autoit n'est plus compatible avec Windows 95, 98, ME et NT 4 dans ses versions supérieures à la v3.2.12. Cependant les versions compatibles (antérieures à la v3.3.0.0)  sont toujours disponibles <b><lien url="http://www.autoitscript.com/autoit3/files/archive/">ici</lien></b>.</attention>

Si votre disposez d'un OS supérieur ou égal à Windows XP, rendez-vous <b><lien url="http://www.autoitscript.com/autoit3/downloads.shtml">ici</lien></b>.

Vous devez télécharger le package suivant:
<liste><puce>AutoIt Full Installation (<b><lien url="http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe">lien direct</lien></b>)</puce></liste>
Et je vous conseille vivement de télécharger également Scite4Autoit3, qui est un éditeur très puissant, qui facilite la saisie du code, le débogage, la compilation d'exe ,et beaucoup d'autres choses encore.
<liste><puce>SciTE for AutoIt3 (SciTE4AutoIt3.exe) (<b><lien url="http://www.autoitscript.com/cgi-bin/getfile.pl?../autoit3/scite/download/SciTE4AutoIt3.exe">lien direct</lien></b>)</puce></liste>
Pour l'installation, ne vous tracassez pas, appuyez toujours sur «suivant». ;)
Enfin, si vous voulez avoir les menus de SciTE en Français (c'est toujours plus sympa ;) ), téléchargez le fichier suivant et enregistrez le sous "C:\Program Files\AutoIt3\SciTE\locale.properties" (si AutoIt est installé dans "C:\Program Files\AutoIt3")
<liste><puce>Menus SciTE en Français (<gras><lien url="http://groups.google.com/group/scite-interest/web/locale.fr.properties">lien direct</lien></gras>)</puce></liste>

Si l'installation n'a pas réussie, vérifiez que vous avez bien choisi le bon package, désinstallez AutoIt et re-téléchargez-le.</secret>

<titre1>Installation Automatique En Français</titre1>

Le pack AutoIt-Fr est un package complet qui permet de supprimer toute ancienne installation de AutoIt et/ou d'installer la dernière version de AutoIt agrémentée de quelques addons.

<attention>Si vous avez modifié des fichiers de configuration, pensez à les sauvegarder avant de procéder à la suppression d'une installation antérieure.</attention>

Ce pack d'installation installe tout d'abord AutoIt v3 puis Scite4AutoIt.
Puis il va <barre>changer la couche du bébé de la voisine</barre> faire tout ça :lol: :

<liste>    <puce> Mise en Français des menus de Scite.</puce>    <puce> Mise en Français des menus contextuel de l'explorer.</puce>    <puce> Mise en Français du template de nouveau fichier .au3.</puce>    <puce> Mise en Français du nom des mois et des jours de la semaine.</puce>    <puce> Ajout de l'addon OrganizeInclude (contôle des fichiers de fonctions).</puce>    <puce> Mise à jour de la dernière version de Koda.</puce>    <puce> Installation d'un programme de bac à sable (SandBoxie).</puce>    <puce> Installation d'un programme de lancement des scripts dans le bac à sable.</puce></liste>

Vous l'avez compris, cet outil est destiné à vous simplifier la vie. Nous verrons plus tard à quoi servent OrganizeInclude et Koda.

<position valeur="centre">---> <lien url="http://www.autoitscript.fr/download/index.php?dir=AutoIt_Addon/Pack_AutoIt-Fr/&file=Pack_AutoIt-Fr.exe"> Télécharger le programme d'installation du pack (~18Mo).</lien> <---</position>
<information>
Si vous souhaitez supprimer toutes traces de ce pack, réinstallez-le, validez la suppression de la version antérieure et arrêtez vous à l'étape proposant l'installation (Pensez à sauvegarder vos paramètres perso et/ou UDF perso).</information>

Voilà pour cette première partie, vous avez donc les outils nécessaires pour coder comme un dieu. :D
Bien, maintenant «AutoIt v3» apparaît normalement dans vos programmes...]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="205996">
		    <titre>
		      <![CDATA[Présentation des Outils]]>
		    </titre>
		    <texte>
		      <![CDATA[Vous êtes en train de vous dire : "Le moment est venu de le démarrer. :D"
Et bien non!, il me reste à vous présenter succinctement les outils que vous venez d'installer.
Tous les outils ci-dessous sont installés avec les 2 packages: Autoit v3 et Scite4Autoitv3. Si vous ne les avez pas tous, c'est que vous n'avez pas installé Scite4Autoit3. Faites un bon en arrière et téléchargez le, c'est ultra-utile.

<information>Pas d'inquiétudes pour ceux qui ont utilisés le pack Autoit-fr. Ils ont bien les 2 packages d'installés, et même plus  :-° </information>

<titre1>Présentation des Outils</titre1>
<attention>Pour plus de clarté dans la lecture de ce tutoriel, cette sous-partie a été déplacée dans la partie ANNEXE de ce tutoriel. Nous vous conseillons cependant d'aller y faire un tour, si ce n'est succinctement.</attention>


Vous constaterez que vous disposez de nombreux outils tous plus utiles les uns que les autres.
Ils vous seront plus ou moins présentés tout au long de ce tutoriel.

Attention, à partir de cette ligne , nous ne somme plus responsables des problèmes liés à la lecture de ce tutoriel  :diable: .
(Ou plus simplement, on va vraiment attaquer!)]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="205997">
		    <titre>
		      <![CDATA[La communauté Française]]>
		    </titre>
		    <texte>
		      <![CDATA[Et si nous parlions du futur ? Vous savez, le moment où vous terminez un tutoriel et que vous ne savez plus où vous tourner pour continuer à progresser  :lol:
Il est de mon devoir de vous informer que tout programmeur qui se respecte apprend son métier dans la documentation de son langage. Autoit possède une documentation très complète qui va vous permettre de continuer sur une bonne voie afin que vous puissiez faire tout ce qui vous passe par la tête. (Chez certains, il va y en avoir des choses  :-° )
Alors pensez à la consulter!
Sur l'éditeur Scite, l'appui sur F1 ouvre la documentation.
La documentation n'existe pas encore officiellement en Français.

<information>Cependant, Il existe une <lien url="http://www.autoitscript.fr/autoit3/docs/">traduction partielle</lien> disponible en ligne</information>

Et quand vous bloquez, vous pouvez toujours poser vos questions sur le forum de la communauté Française:

<position valeur="centre"><lien>http://autoitscript.fr</lien> ou encore <lien>http://autoit.fr</lien></position>

Cette dernière est très active et il existe déjà de nombreux tutoriels disponibles pour en apprendre encore plus. Dès que vous aurez terminé ce tutoriel et lorsque vous aurez un problème, je vous conseille vivement d'aller y faire un tour. Si vous respectez les règles du forum (de simples règles de présentation et de courtoisie), les réponses arriveront rapidement comme sur un plateau ^^

Enfin, sachez que vous pouvez vous renseigner sur le <lien url="http://www.autoitscript.com/forum/">forum américain</lien> pour vos questions les plus poussées (avec plus de 20 000 membres, il y a d'autant plus d'experts ...). Cela dit, pour la plupart de vos problèmes, la communauté Française suffira.]]>
		    </texte>
		  </souspartie>
		
	      </sousparties>
	      
	      <conclusion>
		<![CDATA[Vous avez désormais les outils pour devenir un programmeur hors pair !
Nous allons maintenant étudier les bases d'Autoit: Variables, Opérateurs, Boucles, Fonctions, Macros, tout cela n'aura plus de secret pour vous à la fin du chapitre suivant.
Alors, messieurs (et mesdames), suivez le guide ! :)]]>
	      </conclusion>
	    </chapitre>
	  
	    <chapitre id="205998">
	      <titre>
		<![CDATA[Votre premier script]]>
	      </titre>
	      <avancement>
		<![CDATA[100]]>
	      </avancement>
	      <difficulte>
		<![CDATA[1]]>
	      </difficulte>
	      <introduction>
		<![CDATA[Marre de passer par la console à chaque fois que vous débutez un nouveau langage ? :diable:
Ça tombe bien, moi non plus je n'ai jamais bien aimé, alors , ça vous dirait de vous en passer ?
Rassurez vous, je ne vous fais pas cette fleur juste pour que vous en baviez par la suite :pirate:  (Vous allez vite vous rendre compte que j'adore voir les gens trimer), mais bien parce que j'ai ma petite idée derrière la tête...]]>
	      </introduction>
	      <sousparties>
		
		  <souspartie id="205999">
		    <titre>
		      <![CDATA[Création d'un fichier .au3]]>
		    </titre>
		    <texte>
		      <![CDATA[Ce tutoriel explique les bases de la création d'un script AutoIt et comment le lancer. Ce tutoriel considère que vous avez déjà installé complètement AutoIt v3 à l'aide de la sous-partie "Téléchargement & Installation".

<attention>Toutes les images des fenêtres et boites de dialogue sont en Anglais (traduction oblige) donc les différentes informations affichées le seront aussi. Certains termes utilisés seront "Francisés", pour correspondre à ce que vous verrez sur votre machine, mais d'autres non !</attention>

Quelque soit la manière dont vous avez installer Autoit, la création d'un script ne varie pas.
Pour commencer, creez un dossier dans le bureau dans lequel vous placerez tous les scripts de ce tutoriel. Ouvrez ce dossier avec l'explorateur Windows.
 En faisant un clic droit dans le dossier puis en sélectionnant "Nouveau", vous constaterez qu'une nouvelle possibilité vous est offerte:"AutoIt v3 Script". Cliquez donc!

<position valeur="centre"><image>uploads/fr/files/133001_134000/133543.png</image></position>

Un nouveau fichier est créé, et vous êtes invité à le renommer en quelque chose de plus approprié.
Remplacez 'Nouveau AutoIt v3 Script.au3' par 'helloworld', tout en laissant l'extension '.au3' si elle est visible.
<position valeur="centre">
<image>uploads/fr/files/133001_134000/133544.png</image>
</position>
Maintenant que nous avons créé le fichier, nous allons l'éditer afin d'en faire quelque chose d'utile. Faites un clic droit sur helloworld.au3 et sélectionnez "Edit Script" (ou "Editer le Script" si vous avez installé le Pack_AutoIt-Fr.
<position valeur="centre">
<image>uploads/fr/files/133001_134000/133548.png</image></position>

L'Editeur Scite4Autoit, ou votre éditeur préféré pour les plus experimentés, devrait s'ouvrir.
Vous allez maintenant pouvoir créer votre premier script.]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206000">
		    <titre>
		      <![CDATA[Les Commentaires]]>
		    </titre>
		    <texte>
		      <![CDATA[L'éditeur SciTE vient de s'ouvrir et vous verrez quelque chose comme ceci :

<position valeur="centre"></puce><image>uploads/fr/files/133001_134000/133545.png</image></position>

<question>C'est quoi ces ecritures vertes qui se sont infiltrés dans mon beau fichier?</question>

Le code que vous voyez est simplement une suite de commentaires que vous pouvez utiliser pour organiser vos scripts. Toutes les lignes qui commencent par un <couleur nom="vertf">point virgule ;</couleur> sont considérés comme des commentaires et seront donc ignorées.
Les commentaires sont très important car ils vous permettent de ne pas vous perdre quand le fichier devient important, de pouvoir partager votre script avec le voisin <barre>sans qu'il en comprenne un mot</barre> en lui facilitant la compréhension, et quelques fois d'aérer votre code. Ne lesignez pas les commentaires, ils vous seront utiles un jour.

<information><gras><couleur nom="vertf">;</couleur></gras> est similaire à la déclaration REM dans un traitement par lots DOS, ou encore à // en Php.</information>


Vous pourrez quelque fois rencontrer <couleur nom="vertf">;~</couleur> qui introduit également un code commenté généralement par Scite4AutoIt. En effet, cet éditeur vous permet de 'commenter par block votre script. Vous n'avez qu'à selectionner les lignes de code, appuyer sur le - du pavé numérique pour commenter/decommenter vos lignes à votre guise.

Plus rarement,vous croiserez également <couleur nom="rose">#comments-start</couleur> qui peut être réduit à <couleur nom="rose">#cs</couleur> et <couleur nom="rose">#comments-end</couleur> qui peut être réduit à<couleur nom="rose"> #ce</couleur> qui permet la saisie de textes beaucoup plus long, sans être obligé d'utiliser le "<couleur nom="vertf">;</couleur>" des lignes de commentaire.s
Cette commande est par exemple utilisée au début de votre script pour indiquer le nom du script, l'auteur, la fonction du script,l'aide associée, etc...


En bref, vous pouvez supprimer ces lignes, elles ne servent à rien.]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206001">
		    <titre>
		      <![CDATA[Afficher une boite de dialogue]]>
		    </titre>
		    <texte>
		      <![CDATA[Maintenant, nous allons dire à AutoIt d'afficher une boite de dialogue - Pour cela nous allons utiliser la fonction <gras>MsgBox</gras>.

En dessous des lignes de commentaires, tapez ceci :
<code>MsgBox(0, "Tutoriel", "Hello World!")</code>

Toutes les fonctions ont des paramètres, MsgBox en a trois : 
<liste><puce>Un flag : Paramètre généralement numérique ou booléen</puce><puce>Un titre : Paramètre attendant une chaîne de charactère</puce><puce>Un message : Paramètre attendant une chaîne de charactère</puce></liste>

Le flag est un nombre qui change la manière d'afficher la MsgBox - nous utiliserons 0 pour l'instant, et nous en reparlerons ci-dessous.
Le titre et le message sont tous les deux une String (chaîne de caractères) : quand on utilise des Strings dans AutoIt il faut encadrer le texte avec de simples guillemet (Apostrophe) ou doubles guillemets. "Ceci est du texte" ou 'Ceci est du texte' - les deux fonctionneront parfaitement.

<information>Pour inclure une apostrophe dans une chaîne encadrée par des guillemets simple, il faut la doubler.</information>

<titre2>Exemples</titre2>

<code>MsgBox(0, "Tutoriel", 'Ceci est une partie d''un texte')</code>

<code>MsgBox(0,"Tutoriel", "Avec AutoIt c'est ""simple""")</code>

Le code ci-dessus n'étant pas pas très digeste, on préferera utiliser le code ci-dessous:
<code>MsgBox(0,'Tutoriel', 'Avec AutoIt c'est "simple"')</code>

Très bien, maintenant enregistrez le script et quittez l'éditeur. Vous venez d'écrire votre tout premier script AutoIt !
Pour le lancer, double-cliquez simplement sur le fichier 'helloworld.au3'.
Vous pouvez aussi faire un clic droit et sélectionner "Run Script" (ou "Lancer le Script" si vous avez installé le Pack_AutoIt-Fr).

Vous devriez voir ceci :<image>uploads/fr/files/133001_134000/133546.png</image>
Maintenant, vous savez dire 'Bonjour' grâce à Autoit, c'est déjà un début ;)]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206002">
		    <titre>
		      <![CDATA[Les 'flags']]>
		    </titre>
		    <texte>
		      <![CDATA[Nous allons maintenant nous intéresser de plus près au '<gras>flag</gras>' de la fonction MsgBox.

Pour cela, nous allons utiliser l'aide fournie. Cette aide est précieuse et il faut savoir l'utiliser. Il vous suffit d'appuyer sur <italique>F1</italique> quand Scite est lancé. Et je dirai même plus, il vous suffit de cliquer avec la souris sur MsgBox puis d'appuyer sur <italique>F1</italique> pour obtenir directement l'aide liée à la fonction.

Dans la page d'aide de AutoIt concernant cette commande, nous pouvons voir différentes valeurs listées qui changent la manière d'afficher la MsgBox.
La valeur <gras>0</gras> affiche une simple boite de dialogue avec un bouton OK. Une valeur de 64 affiche la boite de dialogue avec une icône d'information.

Éditez le script en faisant un clic droit sur le fichier helloworld.au3, puis Edit Script (ou "Editer le Script" si vous avez installé le Pack_AutoIt-Fr), et remplacez le <gras>0</gras> par <gras>64</gras>. Vous avez donc :
 
<code>MsgBox(64, "Tutoriel", "Hello World!")</code>

Enregistrez le script puis lancez le. (vous pouvez aussi appuyer sur la touche F5 dans la fenêtre d'édition pour lancer le script à partir de l'éditeur)
<position valeur="centre">
<image>uploads/fr/files/133001_134000/133547.png</image></position>

N'hésitez pas à expérimenter avec différentes valeur pour le paramètre flag afin de voir quel genre de résultat vous obtiendrez.
<information>Si vous voulez combiner plusieurs valeurs de flag, vous n'avez qu'à tout simplement additionner les valeurs souhaitées.</information>

Par exemple:

<code>MsgBox(4 + 32, "Tutoriel", "Vous allez bien ?")</code>

La commande MsgBox possède plusieurs groupes de valeurs pour le flag.
Chaque groupe permet d'influencer les boutons (nombre et fonction), le bouton par défaut, l'icône affichée, le comportement de la fenêtre, etc ...
Il existe aussi un groupe spécial qui permet même de savoir quel bouton à été appuyé afin de gérer une action en fonction d'un choix.

<information>Si vous avez installé Scite4AutoIt ou le Pack_AutoIt-Fr, vous trouverez dans le dossier C:\Program Files\AutoIt3\SciTE\CodeWizard l'application CodeWizard.exe qui vous permettra de tester les différentes combinaisons de boîte de dialogue ainsi que d'autres types de contrôles pris en charge par AutoIt.</information>]]>
		    </texte>
		  </souspartie>
		
	      </sousparties>
	      
		<qcm>
		  
		    <question id="13134">
		      <label>
			<![CDATA[Quelle syntaxe est la bonne?]]>
		      </label>
		      <reponses>
			
			  <reponse vrai="0" id="46585">
			    <![CDATA[If $ok = "" Then MsgBox(0,Titre,"Texte")]]>
			  </reponse>
			
			  <reponse vrai="0" id="46586">
			    <![CDATA[If ok = "" Then MsgBox("0","Titre","Texte")]]>
			  </reponse>
			
			  <reponse vrai="0" id="46598">
			    <![CDATA[If ok = "" Then MsgBox(0,"Titre","Texte")]]>
			  </reponse>
			
			  <reponse vrai="1" id="46599">
			    <![CDATA[If $ok = "" Then MsgBox(0,"Titre","Texte")]]>
			  </reponse>
			
			  <reponse vrai="0" id="46600">
			    <![CDATA[If $ok = "" Then MsgBox(0,"Titre",Texte)]]>
			  </reponse>
			
		      </reponses>
		      <explication>
			<![CDATA[0 est un flag, il ne doit pas etre entouré de "" qui signifient Chaine de Charactere
$ok est une variable, il ne faut pas oublier le signe $]]>
		      </explication>
		    </question>
		  
		    <question id="13135">
		      <label>
			<![CDATA[Qu'est ce qu'un flag?]]>
		      </label>
		      <reponses>
			
			  <reponse vrai="0" id="46587">
			    <![CDATA[Le drapeau francais]]>
			  </reponse>
			
			  <reponse vrai="0" id="46588">
			    <![CDATA[Une chaine de charactère]]>
			  </reponse>
			
			  <reponse vrai="0" id="46589">
			    <![CDATA[Un booleen]]>
			  </reponse>
			
			  <reponse vrai="1" id="46604">
			    <![CDATA[Ca peut être les 3]]>
			  </reponse>
			
		      </reponses>
		      <explication>
			<![CDATA[Un flag peut etre un booleen, un entier, ou une chaine de charactère. Il sert à paramètrer une fonction.
Quand au drapeau francais, c'est bien un flag tout de même!]]>
		      </explication>
		    </question>
		  
		</qcm>
	      
	      <conclusion>
		<![CDATA[Bien, maintenant nous allons passer à la théorie, alors courage!]]>
	      </conclusion>
	    </chapitre>
	  
	    <chapitre id="206003">
	      <titre>
		<![CDATA[Elles sont belles mes variables!]]>
	      </titre>
	      <avancement>
		<![CDATA[100]]>
	      </avancement>
	      <difficulte>
		<![CDATA[1]]>
	      </difficulte>
	      <introduction>
		<![CDATA[Ce chapitre relativement court vous permettra de vous familiariser avec les variables.]]>
	      </introduction>
	      <sousparties>
		
		  <souspartie id="206004">
		    <titre>
		      <![CDATA[Présentation des variables]]>
		    </titre>
		    <texte>
		      <![CDATA[<question>Tout d'abord, qu'est-ce qu'une variable?</question>
Une variable est un endroit ou l'on stocke une ou plusieurs données en mémoire afin de pouvoir y accéder rapidement. Vous pouvez penser à une boite aux lettres qui vous permet soit de mettre du courriel, soit d'en retirer, ou encore de lire le courriel sans l'enlever de la boite aux lettres.
Par exemple, vous pouvez créer une variable pour stocker la réponse d'une question posée à l'utilisateur, ou le résultat d'une équation mathématique.

Chaque variable a son propre nom unique (Comme une boîte aux lettres), doit commencer par le caractère [<gras>$</gras>]dollar et être formé uniquement de lettres, nombres et le caractère [<gras>_</gras>]tiret bas.

<information><gras>Autoit est laxiste avec les variables: Une variable peut contenir absolument n'importe quoi</gras></information>

Et oui ! Que ce soit une commande, une valeur, du texte, une fonction, un fichier, un tableau, on peut absolument mettre ce que l'on désire dans cette boîte virtuelle ! Vous n'avez pas besoin de déclarer auparavant que la variable contiendra un entier ou une chaîne de charactères par exemples, car Autoit s'en charge lui-même.

<titre2>Quelques exemples</titre2>

<couleur nom="rouge"><liste><puce>$var1</puce>    <puce>$my_variable</puce>   <puce> $ce_tuto_est_vraiment_genial</puce></liste></couleur>
Quand vous créez une variable, son nom doit être significatif . Si vous créez des centaines de variable dans un code et que vous ne savez pas ce que représente chaque variable, vous allez avoir beaucoup de mal à le comprendre :) .

Il existe des variables un peu différentes, les macros.
Une macro est une variable spéciale qui ne peut pas être modifiée par l'utilisateur. Elle contient principalement des informations renvoyées par votre système d'exploitation, et commence par le caractère <gras>@</gras>.
Voir la sous-partie <gras>Les Macros</gras> pour en savoir plus.]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206005">
		    <titre>
		      <![CDATA[La portée d'une variable]]>
		    </titre>
		    <texte>
		      <![CDATA[Il y a quatre méthodes principales pour déclarer une variable :
Une déclaration de variable s'effectue grâce aux mots-clés <couleur nom="bleu"><gras>Const</gras>, <gras>Global</gras>, <gras>Dim</gras> ou <gras>Local</gras></couleur>.

La différence entre Const, Global, Dim et Local est leur portée dans le script :
<liste><puce><couleur nom="bleu"><gras>Const</gras></couleur> = Portée globale (tout le script). Ne peut être modifiée par la suite.
La portée peut être limitée par l'ajout de Global ou Local juste avant.</puce><puce><couleur nom="bleu"><gras>Global</gras></couleur> = Force la création d'une variable de portée globale.</puce><puce>Dim = Portée locale si la variable n'existe pas déjà globalement (Dans ce cas ré-utilise la variable globale !).</puce><puce><couleur nom="bleu"><gras>Local</gras></couleur> = Force la création d'une variable de portée locale ou interne à une fonction.</puce></liste>

<titre2>Pour simplifier</titre2>

<gras><couleur nom="bleu">Const</couleur></gras> = Création d'une variable (non-redéfinissable) dont la valeur ce retrouve partout, y compris dans les fichiers inclus (Includes) sauf si sa portée est limitée par l'ajout des commandes Global ou Local juste avant.</puce>

<gras><couleur nom="bleu">Global</couleur></gras> = Création d'une variable (redéfinissable) dont la valeur ce retrouve partout, y compris dans les fichiers inclus (Includes).</puce>

<gras><couleur nom="bleu">Dim</couleur></gras> = Création d'une variable (redéfinissable) dont la valeur ce retrouve uniquement dans le script en cours (Cette variable ne peut être récupérée dans ou par un fichier inclus).

<gras><couleur nom="bleu">Local</couleur></gras> = Même chose que précédemment, mais peut aussi limiter la portée de la variable dans une fonction (Dans ce cas, faire la déclaration dans la fonction).

<titre2>Exemples</titre2>

<liste><puce><couleur nom="bleu">Dim</couleur> <couleur nom="rouge">$var1</couleur>
Ici on declare localement la variable $var1</puce><puce><couleur nom="bleu">Dim</couleur> <couleur nom="rouge">$var1, $myvariable</couleur> = 10
Ici, on déclare la variable $var1 et la variable $myvariable tout en lui attribuant la valeur 10</puce><puce><couleur nom="bleu">Const</couleur> <couleur nom="rouge">$const1</couleur> = 1
La variable $const1 aura pour valeur 1 et tout le long du code elle ne pourra pas en changer.</puce><puce><couleur nom="bleu">Local Const</couleur> <couleur nom="rouge">$const2</couleur> = 1
La variable $const2 aura une valeur fixe de 1 limitée par la portée locale.</puce></liste>


<information>Il est aussi possible de déclarer une variable dynamiquement en lui affectant simplement une valeur (même nulle). Dans ce cas c'est la portée Dim qui est utilisée.</information>

<titre2>Exemple</titre2>

<liste><puce><couleur nom="rouge">$var1</couleur> = "create and assign"
On assigne une chaîne de caractères à la variable $var1 sans l'avoir déclarée préalablement.</puce></liste>

Cette méthode est très souvent utilisée car c'est de loin la plus simple, mais attention tout de même, la variable n'aura pas de portée Globale.

<attention><gras>L'utilisation en début de script de la directive <gras>AutoItSetOption("MustDeclareVars", 1)</gras>
vous obligera à déclarer vos variables grâce aux mot-clef. Il peut être judicieux de la mettre dans un script afin de ne pas vous tromper en oubliant la déclaration d'un variable globale.</attention>]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206006">
		    <titre>
		      <![CDATA[Les Tableaux]]>
		    </titre>
		    <texte>
		      <![CDATA[<question>Mais d'abord, c'est quoi un tableau?</question>

Le tableau,appelé 'Array' en anglais, est une variable qui peut avoir plusieurs dimensions.
Il peut être initialisé par les commandes Const, Global, Dim et Local tout comme une variable standard.
La différence, c'est qu'il contient plusieurs 'cases' dans lesquels on pourra stocker des valeurs.
C'est en gros la réunion des boîtes aux lettres du quartier. Mais comme vous vous en doutez, ces boîtes aux lettres ont un lien entre elles, ici elles recevront le courrier par le même facteur.

Une Array sera défini par des lignes et des colonnes, par exemple je veux savoir ce que contient la seconde ligne de la première colonne.

<titre2>Les Arrays 2D</titre2>

On parle d'un tableau 2D, lorsque celui-ci est initialisé avec une seule dimension (une seule colonne) : 

<code>Dim $Array[5] = [8, 4, 5, 9, 1]</code>

Nous avons ci-dessus un tableau de cinq lignes avec une colonne.
Pour accéder ou modifier un élément de ce tableau, il suffit d'indiquer la valeur de la position de cet élément dans le tableau.

<attention><gras>Attention, lors de l'initialisation d'un tableau.</gras>
Lors de son initialisation, vous déclarez le nombre d'éléments du tableau,
mais celui-ci démarre toujours à l'élément 0, ce qui décale le comptage des éléments.

<gras>Un tableau ne peut dépasser 64 dimensions et/ou 16 millions d'éléments.</gras></attention>

Par exemple, essayez le code ci-dessous.
<code>Dim $Array[5] = [8, 4, 5, 9, 1]MsgBox(0,"Tutoriel Autoit du siteduzero.com",$Array[1]);Affiche la valeur de la ligne 1</code>
Il affichera la valeur '<gras>4</gras>'. 

<code>$Var = $Array[3]</code>
Selon le tableau déclaré précédemment, ce code attribue la valeur 9 à la variable <couleur nom="rouge">$Var</couleur>.</puce>

<titre2>Les Arrays 3D</titre2>

On parle d'un tableau 3D, lorsque celui-ci est initialisé avec plus d'une dimension :
<code>; Crée un tableau de deux lignes avec quatre colonnes.$Grille[2][4]=[["Paul", "Jim", "Richard", "Louis"], [485.44, 160.68, 275.16, 320.00]]; Attribue la valeur Paul à la variable $Var$Var = $Grille[0][0]</code>

Tout comme une variable classique, un tableau peut être dupliqué simplement comme ceci :
<code>$Tableau = $Grille</code>
ou éffacé comme ceci :<code>$Tableau = ''</code>]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206007">
		    <titre>
		      <![CDATA[Les Macros]]>
		    </titre>
		    <texte>
		      <![CDATA[AutoIt utilise un certain nombre de Macros qui sont des variables spéciales en lecture seule, et incrémentée par défaut à Autoit. Les Macros commencent par le caractère @ au lieu du classique $ donc faciles à différencier.  Comme avec les variables constantes, vous pouvez utiliser les macros dans les expressions, mais ne pouvez leurs assigner une valeur.

Les macros pré-définies sont généralement utilisées pour fournir des informations système tel que le chemin du répertoire de Windows, ou le nom de l'utilisateur en cours, l'heure, la résolution de l'écran, les retours d'erreur, etc...
La liste qui suit n'est pas complète. Pour avoir la liste complète des macros à votre dispositions, allz dans la documentation d'Autoit et cliquez sur <gras>Macro reference</gras>.

<titre1>Liste non-exhaustive des macros les plus utilisées.</titre1>

<liste><puce>@MyDocumentsDir : Retourne le chemin complet du repertoire "Mes Documents"</puce><puce>@ComputerName : Retourne le nom de l'ordinateur</puce><puce>@CRLF : Equivaut à un retour chariot (appui sur la touche ENTRER)</puce><puce>@DesktopDir : Retourne le chemin complet du Bureau</puce><puce>@DesktopHeight : Retourne la hauteur de votre resolution d'ecran</puce><puce>@DesktopWidth : Retourne la largeur de votre resolution d'ecran</puce><puce>@HOUR : Retourne l'heure</puce><puce>@HotKeyPressed : Retourne la dernière touche appuyée par l'utilisateur</puce><puce>@ScriptDir : Retourne le chemin complet du script</puce><puce>@ProgramFilesDir : Retourne le chemin complet du repertoire "Program Files"</puce><puce>@OSVersion : Retourne la version de votre OS</puce><puce>@SystemDir : Retourne le chemin complet de votre repertoire system</puce><puce>@TempDir : Retourne le chemin complet de votre repertoire temporaire</puce></liste>


Pour tester la puissance des macros, je vous laisse essayer ce script:

<code>MsgBox(64,"Informations sur tous vos repertoires","Repertoire Système : " & @SystemDir & @CRLF & _"Mes Documents : " & @MyDocumentsDir & @CRLF & _ "Dossier Temporaire : " & @TempDir & @CRLF & _"Demarrage : " & @StartMenuDir & @CRLF & _"Program Files : " & @ProgramFilesDir & @CRLF )</code>


Vous pouvez remarquer l'utilisation de <gras><couleur nom="rose">@CRLF</couleur></gras> afin de revenir à la ligne.
Cette macro sera souvent utilisée dans vos chaînes de charactère afin de revenir à la ligne.

Vous remarquerez également l'utilisation de '<gras>& _ </gras>'.
C'est une méthode utile quand vos lignes deviennent trop longues, vous pouvez alors l'utiliser pour que vos scripts soient plus lisibles.
En effet, quand une ligne devient trop longue, on prefere quelques fois la diviser en plusieurs lignes.

Pour se faire, il suffit d'ecrire :      '& _ ', qui veut juste dire à Autoit de continuer sa lecture une ligne en dessous, mais qu'on a pas terminé notre ligne.

Si il vous faut n'en retenir qu'une, ce serait <gras><couleur nom="rose">@ScriptDir</couleur></gras>. En effet, à chaque fois que vous allez devoir intéragir avec un fichier, vous allez très souvent utiliser cette variable. Vous souhaitez mettre une image dans votre script? C'est encore cette macro que vous allez utiliser si votre image se situe dans le même dossier que votre script.]]>
		    </texte>
		  </souspartie>
		
	      </sousparties>
	      
		<qcm>
		  
		    <question id="13136">
		      <label>
			<![CDATA[Comment déclare t-on une variable globale?]]>
		      </label>
		      <reponses>
			
			  <reponse vrai="1" id="46590">
			    <![CDATA[Global]]>
			  </reponse>
			
			  <reponse vrai="0" id="46591">
			    <![CDATA[Dim]]>
			  </reponse>
			
		      </reponses>
		      <explication>
			<![CDATA[Parce que...]]>
		      </explication>
		    </question>
		  
		    <question id="13137">
		      <label>
			<![CDATA[Ai-je le droit d'êcrire :
$variable32, = "OoO"]]>
		      </label>
		      <reponses>
			
			  <reponse vrai="0" id="46592">
			    <![CDATA[Oui , bien sûr]]>
			  </reponse>
			
			  <reponse vrai="1" id="46593">
			    <![CDATA[Vous êtes fou? Bien sûr que non!]]>
			  </reponse>
			
		      </reponses>
		      <explication>
			<![CDATA[Les noms variables ne peuvent pas contenir  de ',']]>
		      </explication>
		    </question>
		  
		    <question id="13138">
		      <label>
			<![CDATA[Qu'est ce que c'est que ça ?

<couleur nom="rose"><gras>@HOUR</gras></couleur>]]>
		      </label>
		      <reponses>
			
			  <reponse vrai="1" id="46594">
			    <![CDATA[C'est une variable.]]>
			  </reponse>
			
			  <reponse vrai="0" id="46595">
			    <![CDATA[C'est une commande.]]>
			  </reponse>
			
		      </reponses>
		      <explication>
			<![CDATA[@Hour est une macro, se référer au chapitre précédent. Il permet de renvoyer l'heure du moment ou vous l'exploitez. SI vous ne le saviez pas, vraiment, vous me décevez...]]>
		      </explication>
		    </question>
		  
		</qcm>
	      
	      <conclusion>
		<![CDATA[Bravo, vous avez avalé ce chapitre avec succès. Vous êtes déclaré apte à continuer si tout est clair dans votre tête.]]>
	      </conclusion>
	    </chapitre>
	  
	    <chapitre id="206008">
	      <titre>
		<![CDATA[Le 'Si Alors']]>
	      </titre>
	      <avancement>
		<![CDATA[100]]>
	      </avancement>
	      <difficulte>
		<![CDATA[1]]>
	      </difficulte>
	      <introduction>
		<![CDATA[Ce chapitre posera les bases de l'action sous condition avec Autoit, en utilisant les opérateurs logiques associés.]]>
	      </introduction>
	      <sousparties>
		
		  <souspartie id="206009">
		    <titre>
		      <![CDATA[L'action sous condition]]>
		    </titre>
		    <texte>
		      <![CDATA[<question>Qu'entends tu parler par "l'action sous condition" ?</question>
C'est très simple, et vous allez vite vous en rendre compte.

Cette logique de l'action sous condition peut etre résumée par la phrase suivante:
"Si j'ai faim, je vais dans le frigo me chercher une banane. Sinon, je mange une glace." <italique>(L'Abus de Nourriture est dangereux pour la santé)</italique>

<question>Comment fonctionnent les actions sous condition ?</question>

Un des piliers de la programmation tout language confondu est "l'action sous condition".
Cela se présente sous la forme :


<code>SI (proposition-à-vérifier est vraie ou fausse) ALORS :   ...   on fait ça   ...SINON    ...   on fait ça    ...FINI</code>


Toute la profondeur d'un programme est basée sur cette architecture.
En Autoit on a :

<titre2>If\Then\ElseIf\Else\EndIf</titre2>

C'est le mode le plus connu, d'ailleurs en AutoIt, ca ressemble drôlement au Basic, vous ne trouvez pas ;)
Voila un exemple classique :

<code>If (proposition-à-vérifier est vraie ou fausse) Then        ; Actions à effectuerElseIf (proposition-à-vérifier-2 est vraie ou fausse) Then        ; Actions à effectuerElse ;Si n'importe quoi d'autre        ; Actions à effectuerEndIf ;on clos la condition</code>

Ce qui pourrait donné : 
<code>$note_de_maths = 7.5If $note_de_maths >= 15  Then        MsgBox(0,"Tutoriel Autoit","Très bien, continue comme ça!")ElseIf $note_de_maths >= 8 Then        MsgBox(0,"Tutoriel Autoit","Peu mieux faire !")Else ;Si n'importe quoi d'autre         MsgBox(0,"Tutoriel Autoit","Elève assidu qui se retourne parfois...pour regarder le tableau.")EndIf ;on clot la condition</code>

Les opérateurs utilisés ici (= et >=) sont expliqués ci-après.


<titre2>Select\Case\EndSelect</titre2>

Un autre mode de programmation, qui n'en n'est pas moins pratique et intéressant, est la condition par "case".
Je m'explique :

<code>ACTIVATION DU MODE SELECTIF        Case n°1 (à activer si proposition-à-vérifier est vraie)                 ; Actions à effectuer        Case n°2 (à activer si proposition2-à-vérifier est vraie)                 ; Actions à effectuer        Case n°3 (à activer si proposition3-à-vérifier est vraie)                 ; Actions à effectuer;etc,etc...FIN DU MODE SELECTIF</code>

Ce qui se traduit par :

<code>Select        Case (à activer si proposition-à-vérifier est vraie)                 ; Actions à effectuer        Case (à activer si proposition2-à-vérifier est vraie)                 ; Actions à effectuer        Case (à activer si proposition3-à-vérifier est vraie)                 ; Actions à effectuer;etc,etc...EndSelect</code>

Cette méthode est très utile pour simplifier la lisibilité du texte dans une boucle par exemple. 

<titre2>Switch\Case\EndSwitch</titre2>

C'est une variante du Select. C'est quasiment la même chose, à l'exception qu'elle est généralement utilisée pour les variations de valeur d'une même variable. 
Un exemple tout de suite, un peu plus approfondi pour une fois :

<code>$var = 30Switch $var     Case 1 To 10         MsgBox(0, "Exemple", "$var est plus grand que 1 et moins grand que 11")     Case 11 To 20         MsgBox(0, "Exemple", "$var est plus grand que 10 et moins grand que 21")     Case 21 To 30         MsgBox(0, "Exemple", "$var est plus grand que 20 et moins grand que 31")     Case 31 To 40         MsgBox(0, "Exemple", "$var est plus grand que 30 et moins grand que 41")     Case Else         MsgBox(0, "Exemple", "$var est plus grand que 40 ou inférieur ou égal à 0")EndSwitch</code>

Ici, on  va "switcher" dans la variable $var, pour différents intervalles. En l'occurence, c'est la case 21 To 30 qui va s'activer. Ce mode permet donc de ne tester qu'une variable, mais c'est le plus lisible. On l'utilisera pratiquement toujours lors de la création de GUI que vous verrez dans la partie concernée. En effet, on devra alors verifier les actions faites par l'utilisateur, et une variable contiendra ces informations, variable qu'on testera avec un Switch.

<information>Vous pouvez egalement retenir que certains tests sont plus rapides que d'autres. Rassurez vous, jamais vous ne le remarquerez, mais si vous voulez programmer 'Paf le chien' par exemple, alors vous devrez commencer à vous inquieter de la rapidité de votre code, et Switch est très bon dans ce domaine.</information>]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206010">
		    <titre>
		      <![CDATA[Les Opérateurs]]>
		    </titre>
		    <texte>
		      <![CDATA[Vous avez déjà aperçu le =, mais il existe d'autres opérateurs : 

<position valeur="centre"><image>uploads/fr/files/211001_212000/211410.png</image></position>

Ces opérateurs sont très simple à utiliser.

<titre2>Exemple 1 :</titre2>
L'utilisateur doit rentrer le bon mot de passe pour lancer le programme.

<code>$pass = "mot de passe"$input = InputBox("Tutorial", "Entrez le mot de passe :")If ($input <> $pass) Then    MsgBox(0,"Tutorial", "Mauvais mot de passe !")Else    MsgBox(0,"Tutorial", "Le mot de passe est correct !")EndIf</code>
Ici, l'opérateur signifie 'Different de'. Si il est vérifié, alors on affiche "Mauvais mot de passe !"


<titre2>Exemple 2 :</titre2>
Notre programme vérifie si le nombre entré par l'utilisateur est bien positif ou nul.

<code>$nombre = InputBox("Tutorial", "Entrez un nombre :")If ($nombre >= 0) Then    MsgBox(0,"Tutorial", "Ce nombre est positif.")Else    MsgBox(0,"Tutorial", "ce nombre est négatif.")EndIf</code>


Il est également possible de faire des propositions plus élaborées grâce aux opérateurs ET, OU qui se traduisent en Autoit par <gras>AND</gras> , <gras>OR</gras>.

<titre2>Exemple 3 :</titre2>
L'utilisateur doit rentrer un bon mot de passe parmi les 2 possibles.

<code>$pass1 = "mot de passe"$pass2 = "autoit fr"$input = InputBox("Tutorial", "Entrez le mot de passe :")If ( ($input <> $pass) AND ($input <> $pass1) ) Then    MsgBox(0,"Tutorial", "Mauvais mot de passe !")    ExitElse    MsgBox(0,"Tutorial", "Le mot de passe est correct !")    ...suite...EndIf</code>

<information>Notez que <minicode>If $input <> $pass AND $input <> $pass1 Then</minicode> marche également. (Sans les Paranthèses)</information>

<titre2>Exemple 4:</titre2>
Notre programme vérifie si le nombre entré par l'utilisateur est bien compris entre 0 et 10.

<code>$nombre = InputBox("Tutorial", "Entrez un nombre :")If (($nombre >= 0) AND ($nombre <= 10)) Then    MsgBox(0,"Tutorial", "Ce nombre est compris entre 0 et 10.")Else    MsgBox(0,"Tutorial", "Ce nombre n'est pas compris entre 0 et 10.")EndIf</code>

<titre1>Recherche des conditions</titre1>
Il peut arriver qu'une proposition soit dure à trouver, essayez alors la technique suivante : 

Vous n'arrivez pas à trouver la proposition <gras>(1)</gras> à mettre pour que l'action <gras>s'effectue</gras>,
essayez alors de trouver la proposition <gras>(2)</gras> à mettre pour que l'action <gras>NE s'effectue PAS</gras>
Il suffira alors d'un peu d'astuce pour trouver la <gras>(1)</gras> à partir de la <gras>(2)</gras>.

<titre2>Essayons sur l'exemple 3 :</titre2>

Dans cet exemple nous voulions afficher un message d'erreur si le mot de passe entré par l'utilisateur ne correspondait à aucun des 2 mots de passes enregistrés dans le programme, et continuer dans le cas contraire.
Or, nous n'arrivons pas à trouver la proposition correspondante.

Cherchons donc la proposition pour que le message d'erreur ne s'affiche pas.

=>Le programme ne doit pas afficher d'erreur si le mot de passe fourni par l'utilisateur correspond à l'un des 2 mots de passes enregistrés dans le programme.

On aurait donc la proposition suivante :<minicode>If ( ($input = $pass1) OR ($input = $pass2) )</minicode>(2)
Cette proposition peut être plus facile à trouver.

La proposition (1) se trouve en inversant la (2), en utilisant la correspondance suivante :

<position valeur="centre"><image>uploads/fr/files/211001_212000/211409.png</image></position>

<code>( ($input = $pass1) OR ($input = $pass2) ) (2) ==> ( ($input <> $pass) AND ($input <> $pass1) ) (1)</code>

On retrouve bien notre proposition.

On aurait donc pu écrire notre exemple 3 de la manière suivante :
<code>$pass1 = "mot de passe"$pass2 = "autoit fr"$input = InputBox("Tutorial", "Entrez le mot de passe :")If ( ($input = $pass1) OR ($input = $pass2) ) Then    MsgBox(0,"Tutorial", "Le mot de passe est correct !")Else    MsgBox(0,"Tutorial", "Mauvais mot de passe !")EndIf</code>

Vous avez tout compris ? Alors, c'est le moment de passer à la pratique :)]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206011">
		    <titre>
		      <![CDATA[Mini-TP]]>
		    </titre>
		    <texte>
		      <![CDATA[Que pensez vous d'un mini-tp? C'est très simple, vous demandez à l'utilisateur le jour, et vous lui répondez en fonction de ce jour!

<liste type="1"><puce>On demande à l'utilisateur de rentrer le jour d'aujourd'hui : La fonction InputBox semble tout indiquée.
Pour savoir comment l'utiliser, utilisez l'aide comme nous vous l'avons appris. (Pour ceux dont la mémoire joue des tours, il faut appuyer sur F1 dans Scite4Autoit.)</puce><puce>On récupère la variable $jour, et on la traite.</puce></liste>

Essayez de faire ce programme tout seul, sinon voilà une solution :

<code>$jour = InputBox("Tutorial", "Quel jour sommes nous ?")If ($jour = "Vendredi") Then    msgbox(0,"Tutorial","c'est bientôt le weekend !")Else    If ($jour = "Lundi") Then        msgbox(0,"Tutorial","Bon début de semaine !")    Else        msgbox(0,"Tutorial","Comment se passe la semaine ?")    EndIfEndIf</code>

<information>Voila en quelques lignes comment agit le programme :</information>

<titre2>Que se passe-t-il si nous rentrons "Lundi" ?</titre2>
La première condition If ($jour = "Vendredi") est fausse, on saute donc les actions présentes dans le "If" et on continue dans le "Else".
On arrive alors à un deuxième si-alors, la condition ($jour = "Lundi") est vraie ! On effectue donc les actions présentes dans le If, c'est à dire afficher "Bon début de semaine !", et on saute les actions présentes dans le Else.

<titre2>Que se passe-t-il si nous rentrons Mardi ?</titre2>
La première condition If ($jour = "Vendredi") est fausse, on continue dans le Else
On arrive à la seconde condition If ($jour = "Lundi") qui est fausse également, on continue donc dans le Else, et on affiche donc "Comment se passe la semaine ? " .

<titre2>Que se passe-t-il si nous rentrons Vendredi ?</titre2>
La première condition If ($jour = "Vendredi") est vraie !
On effectue donc les actions présentes dans le If, c'est à dire afficher "C'est bientôt le weekend !", et on saute le Else.]]>
		    </texte>
		  </souspartie>
		
	      </sousparties>
	      
	      <conclusion>
		<![CDATA[Que diriez vous d'appliquer l'action sous condition aux boucles? Ca vous dit? Tant mieux, car c'est le chapitre qui suit.]]>
	      </conclusion>
	    </chapitre>
	  
	    <chapitre id="206012">
	      <titre>
		<![CDATA[Des boucles qui tournent]]>
	      </titre>
	      <avancement>
		<![CDATA[100]]>
	      </avancement>
	      <difficulte>
		<![CDATA[1]]>
	      </difficulte>
	      <introduction>
		<![CDATA[Vous savez surement qu'un ordinateur calcule beaucoup plus vite que vous... Il va donc falloir lui apprendre à attendre l'utilisateur ! Et ce chapitre est fait pour ça.]]>
	      </introduction>
	      <sousparties>
		
		  <souspartie id="206013">
		    <titre>
		      <![CDATA[For...Next]]>
		    </titre>
		    <texte>
		      <![CDATA[<question>Qu'est-ce qu'une boucle ?</question>

Les boucles permettent de répéter une même action plusieurs fois, en n' écrivant qu'une seule fois la procédure.
3 genres de boucles s'offrent à vous, plusieurs critères permettent de choisir la plus adaptée à votre cas.

<titre1>Boucle de type "Pour" (For - Next)</titre1>

Cette boucle s'utilise lorsque le nombre de fois que nous devons parcourir la boucle est DÉTERMINÉ.
Que ce soit une constante, ou une valeur contenue dans une variable, si ce nombre est accessible par le programme alors cette boucle est la plus adaptée.

<titre2>Fonctionnement :</titre2>

Cette boucle fonctionne à l'aide d'un compteur qui utilise une variable généralement appelée $i.
<code>For $i = <valeur de départ> To <valeur d arrivée> Step <pas>    ; Actions à effectuerNext</code>

<titre2>Exemple 1</titre2>

Code:
<code>For $i = 0 To 10    msgbox(0,"Tutorial", $i)Next</code>

Ceci nous affichera successivement: 0,1,2,3,4,5,6,7,8,9,10.

<question>Et si je ne veux afficher que 0,2,4,6,8 10, je fais comment?</question>
Il suffit de rajouter un "<gras>Step</gras>" à la fin de la ligne <gras>For</gras> Comme ceci:
<code>For $i = 0 To 10 Step 2    msgbox(0,"Tutorial", $i)Next</code>
0n a maintenant : 0,2,4,6,8,10

<titre2>Exemple 2</titre2>
Compte à rebours :

Je voudrais que vous fassiez un mini-mini-tp. (Ne prenez pas peur ;))
Très simple, il faut demander à l'utilisateur de rentrer un nombre, puis le programme va afficher une message box avec ce nombre et quand l'utilisateur cliquera dessus, le nombre du dessous apparaîtra... Magique? Non! (Oh,Oh,Oh, It's Magic, you know... :magicien: )

Vous devrez utiliser la fonction <gras>InputBox</gras>, alors n'hesitez pas à aller voir dans l'aide comment elle fonctionne, quels sont ses paramètres. Vous verrez qu'elle n'est pas très différente de MsgBox que nous avons vu precedemment.

Fini? Ca devrait ressembler à quelque chose comme ça:

<code>$depart = InputBox("Tutorial", "Entrez un nombre :")For $i = $depart To 1 Step -1    MsgBox(0,"Tutorial", $i)NextMsgBox(0,"Tutorial", "ZERO !")</code>

Vous n'avez pas fait la même chose ? Ce n'est pas grave, je vous donne une chance de vous rattraper plus bas ! ;)]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206014">
		    <titre>
		      <![CDATA[While...WEnd]]>
		    </titre>
		    <texte>
		      <![CDATA[<question>Mais quand j'attend que l'utilisateur fasse quelque chose, je ne sais pas combien de boucles je dois effectuer, comment faire?</question>
Nous allons alors utiliser une boucle plus adaptée, la boucle "Tant que".

<titre1>Boucle de type "Tant que" (While - WEnd)</titre1>

Cette boucle s'utilise quand le nombre de fois que l'action doit être effectuée est inconnu. Si la proposition est fausse dès le départ, la boucle ne se lance pas.
Cette boucle n'a pas besoin de compteur pour fonctionner, la boucle est simplement effectuée tant que la condition reste vraie.

<titre2>Fonctionnement :</titre2>

<code>Tant que (condition est vraie)     On effectue ces actionsFin</code>

Ce qui se traduit en Autoit par :

<code>While [signifie littéralement tant que] (proposition est vraie)    ;Actions à effectuerWEnd</code>

<titre2>Exemple</titre2>

Les Boucles sont très utilisées pour attendre une action de l'utilisateur. En effet, il est impossible de savoir exactement quand l'utilisateur va enfin se décider à faire quelque chose. Alors c'est au programme de l'attendre (L'utilisateur est beaucoup plus long, si si je vous assure  :lol: )

<question>Cesses tes bavardages inutiles, et continue ton tutoriel!</question>
Ok les amis, Restons Calmes ! :-°

Imaginons que la variable $quitter prenne la valeur 1 quand l'utilisateur décide de quitter le programme.
On a donc

<code>While ( $quitter <> 1 )    ;Actions du programmeWEnd</code>


Très souvent, on va utiliser une boucle sans fin, c'est à dire que théoriquement elle ne s'arrêtera jamais.
Pour faire une boucle sans fin, on peut déclarer une boucle tant-que de la manière suivante :

<code>While 1    ;action à répéter sans finWEnd</code>

Cette Boucle est ce que l'on peut appeler la partie principale du programme. Celui ci va se balader dans la boucle en permanence, et si il rencontre des <minicode type="html">If</minicode> valables (Cf Actions Sous Conditions), il va faire différentes actions.

<information>Ne Copiez Pas tel quel le code ci-dessus, en effet, le programme va peut-être faire planter votre ordinateur car il va en permanence utiliser votre CPU car aucune action n'est inscrite dans ce code. Essayez pour voir, mais que ceux qui ont des ordinateurs de l'an 2008 (Totalement Dépassés :D ) ne viennent pas se plaindre! </information>

On va donc tout simplement dire au programme de faire des pauses de temps en temps.
Je sais que ce chapitre est très difficile, (d'ailleurs je vous conseille de faire une pause après), mais voilà le code que j'ai utilisé afin de savoir combien de tours faisait le programme en 1 Seconde:

<code>Local $t = TimerInit(),$i = 0 ; Declaration des VariablesWhile TimerDiff($t)<=1000 ; Boucle Principale. Tant que le temps est inferieur à une seconde, on additionne 1 à la variable $i        $i = $i + 1WEndMsgBox(65,"Tutoriel",$i);On affiche $i</code>
Ici il n'y a qu'une chose de nouvelle , la gestion des Timer's. Ces derniers s'utilisent de cette manière :
Quand on le veux, on initialise le temps. Puis on demande par une boucle le temps écoulé depuis l'initialisation. Si vous ne voulez pas tout retenir, ne retenez pas ça.
Ce qu'il faut savoir, c'est que chez moi, en 1 seconde,  le programme fait 175000 fois la boucle.

Maintenant, nous allons voir une nouvelle fonction:

<couleur nom="bleu">Sleep</couleur><couleur nom="rouge">(</couleur><couleur nom="violet">Time</couleur><couleur nom="rouge">)</couleur>
Time est un Entier en Milli-secondes. Pour pouvoir verifier, n'oubliez pas d'appuyer sur F1 dans Scite pour acceder à la documentation.

Par exemple:
<couleur nom="bleu">Sleep</couleur><couleur nom="rouge">(</couleur><couleur nom="violet">1000</couleur><couleur nom="rouge">)</couleur>


A la differences des fonctions timer[...](), Sleep() Va Mettre en pause le programme, ou littéralement le plonger en léthargie. Pour comprendre, rajoutez <couleur nom="bleu">Sleep</couleur><couleur nom="rouge">(</couleur><couleur nom="violet">10</couleur><couleur nom="rouge">)</couleur> dans le code précédent.

<question>Et alors , c'est pas 10 malheureuses millisecondes qui vont changer le monde!</question>

Oh que si, essayez!

Chez moi, le programme ne fait plus que 65 tours au lieu de 175000. Ceci va permettre de libérer de la puissance pour l'ordinateur en restant tout à fait competitif. Ne vous inquiétez pas, l'utilisateur ne va pas s'aperçevoir du changement, mais l'ordinateur si!
Donc, à partir de maintenant, vous allez me faire ce plaisir, vous rajouterez un <couleur nom="bleu">Sleep</couleur><couleur nom="rouge">(</couleur><couleur nom="violet">10</couleur><couleur nom="rouge">)</couleur> dans toutes vos boucles While.





<titre2>On peut également retrouver la boucle "Pour" vue précedemment de cette manière :</titre2>

<code>$i = <valeur de départ>While ($i <> <valeur d arrivée>)    ;actions à effectuer    $i = $i + <pas>WEnd</code>]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206015">
		    <titre>
		      <![CDATA[Do...Until]]>
		    </titre>
		    <texte>
		      <![CDATA[<titre1>Boucle "Faire-jusqu'à.."</titre1>

Cette boucle répète une action jusqu'à ce que la condition à atteindre devienne vraie.
Elle est utilisée lorsque le nombre de fois que l'action doit être effectuée est inconnue, mais dans ce cas, l'action doit être effectuée AU MOINS une fois.

<titre2>Fonctionnement :</titre2>

<code>Do    ;actions à effectuerUntil (proposition)</code>
Quand "proposition" devient VRAI alors la boucle s'arrête.
Si la proposition est vraie dès le premier passage, l'action s'effectue quand même une fois. En effet la vérification ne se fait qu'à la fin de la boucle.

<titre2>Exemple :</titre2>
On veut demander un mot de passe à l'utilisateur pour lancer le programme.
Tant qu'il se trompe on lui redemande le mot de passe. On ne sait donc pas combien de fois l'utilisateur va se tromper
Une boucle while ne convient pas car l'action doit être effectuée au moins une fois.

Code:
<code>Do    $pass = "mot de passe"    $input = InputBox("Tutorial", "Entrez le mot de passe :")    If ($input <> $pass) Then        MsgBox(0,"Tutorial", "Mauvais mot de passe !")    Else        MsgBox(0,"Tutorial", "Le mot de passe est correct !")    EndIfUntil ($input = $pass)</code>

Ce code ne devrait pas vous poser de réels problèmes, et ce sous-chapitre est déjà assez étoffé pour le remplir encore...
Passons à la suite, voulez vous? N'hesitez pas à faire une pause pour vous éclaircir les idées Oo)]]>
		    </texte>
		  </souspartie>
		
	      </sousparties>
	      
	      <conclusion>
		<![CDATA[Pas trop difficile? La suite l'est un peu plus rassurez vous !]]>
	      </conclusion>
	    </chapitre>
	  
	    <chapitre id="206016">
	      <titre>
		<![CDATA[Les fonctions]]>
	      </titre>
	      <avancement>
		<![CDATA[100]]>
	      </avancement>
	      <difficulte>
		<![CDATA[1]]>
	      </difficulte>
	      <introduction>
		<![CDATA[Bon, on va maintenant voir comment simplifier un peu notre code. En effet, il arrive très souvent qu'un bout de code soit requis plusieurs fois dans le script. Plutot que de recopier les lignes, on va utiliser une fonction.]]>
	      </introduction>
	      <sousparties>
		
		  <souspartie id="206017">
		    <titre>
		      <![CDATA[Utilisation des fonctions]]>
		    </titre>
		    <texte>
		      <![CDATA[Une fonction est un bout de code destiné à être executé plusieurs fois, on le met donc dans ce qu'on appelle une fonction qu'il suffira d'appeler pour executer le code. 

Avec AutoIt, vous pouvez déclarer une fonction contenant un bout de code qui sera exécuté lorsque vous appellerez la fonction. Vous pouvez définir des paramètres qui changeront le comportement de la fonction. Voici la syntaxe pour déclarer une fonction :

<code>Func Le_nom_de_ma_fontion ($param1, $param2 = "")    ; code contenu dans la fonction    Return 1EndFunc</code>

Plusieurs remarques concernant ce code :
<liste><puce>Le nom de la fontion peut comporter des lettres, des chiffres et le "tiret du bas". <gras>_</gras></puce><puce>Le premier paramètre de la fonction est <couleur nom="rouge">$param1</couleur>. Dans le code de la fonction, vous pouvez (et même devez, sinon ça ne sert à rien ^^) utiliser cette variable.</puce><puce>Le deuxième paramètre est déclaré avec un <gras>'='</gras> : cela signifie qu'il est optionnel et qu'il prend comme valeur par défaut une chaîne vide <gras>""</gras>. Vous devez impérativement mettre les paramètres optionels <souligne>après</souligne> les paramètres obligatoires.
Les paramètres optionnels peuvent prendre des valeurs bien définies (chaîne de caractère, nombre,...) mais jamais des valeurs dépendant d'une variable (du genre "<couleur nom="rouge">$param2</couleur> = 3*<couleur nom="rouge">$param1</couleur>"). Vous pouvez cepandant utiliser le mot-clé <couleur nom="bleu">Default</couleur> et utiliser une condition dans votre fonction pour définir la valeur souhaitée ("<couleur nom="rouge">$param2</couleur> = <couleur nom="bleu">Default</couleur>" dans la déclaration de la fonction puis "If <couleur nom="rouge">$param2</couleur> = <couleur nom="bleu">Default</couleur> Then <couleur nom="rouge">$param2</couleur> = 3*<couleur nom="rouge">$param1</couleur>").</puce><puce>La fonction contient "<couleur nom="bleu">Return</couleur> 1" : cela veut dire que la fonction retourne la valeur 1. Vous n'êtes pas obligés de mettre cette ligne : dans ce cas, la fonction retourne rien (une chaîne vide <gras>""</gras>).</puce></liste>
<attention>Si vous mettez du code après "Return", il ne sera pas pris en compte car "Return" dit à AutoIt de sortir de la fonction</attention>

<titre1>Appeler une fonction</titre1>

Une fois que vous avez déclaré la fonction, vous pouvez l'appeler dans votre script.
<question>Dois-je déclarer ma fonction tout en haut du script pour pouvoir l'utiliser ?</question>
Non. Vous pouvez (et c'est même fortement recommendé  :lol: ) appeler à la première ligne de votre script une fonction que vous ne déclarez qu'à la fin.

Pour utiliser votre fonction, ça marche comme avec les fonctions déjà intégrées à AutoIt. Il suffit de faire :
<code>$valeur_retournee = Le_nom_de_ma_fontion (valeur_du_param1, valeur_du_param2)</code>
<information>"$valeur_retournee =" permet d'assigner à la variable $valeur_retournee... la valeur retournée par la fonction. Vous n'êtes pas obligé d'assigner cette valeur à une variable.</information>

Concrètement, imaginons un fonction qui calcule la somme de ses 2 paramètres (je manque cruellement d'imagination  :lol: ). Il faut la déclarer comme ceci :
<code>Func Somme ($premier_nombre, $deuxieme_nombre = 0)    Return $premier_nombre + $deuxieme_nombreEndFunc</code>

NB : vous n'êtes pas obligé de mettre une valeur par défaut de 0 pour le deuxième paramètre, je l'ai juste mise pour l'exemple.

Et dans un code, cela donne :
<code>$somme = Somme (3, 4) ; assigne 7 à la variable $sommeMsgBox(0, "", "La somme vaut : " & $somme) ; affiche la somme dans une petite fenêtre$somme = Somme (3) ; fait la somme entre 3 et 0 (zéro est la valeur par défaut)MsgBox(0, "", "La somme vaut : " & $somme)MsgBox(0, "Somme de 5.4 et 6", "La somme vaut : " & Somme (5.4, 6)) ; imbrication directement dans une autre fonctionSomme (1, 2) ; cette ligne ne sert à rien car on ne récupère pas la valeur retournéeFunc Somme ($premier_nombre, $deuxieme_nombre = 0)    Return $premier_nombre + $deuxieme_nombreEndFunc</code>]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206018">
		    <titre>
		      <![CDATA[Les Includes et les UDFs]]>
		    </titre>
		    <texte>
		      <![CDATA[<question>Oui mais, si j'ai une centaine de fonctions dans mon script, je ne vais pas me casser la tête à tous les copier/coller dans mon script !!!</question>

Et bien, les <couleur nom="rose"><gras>#include</gras></couleur> sont là pour ça !!!
Créez tout d'abord un nouveau script .au3, dans lequel vous mettez uniquement votre fonction. Un exemple visuel :

On crée notre fichier <couleur nom="rouge"><gras>fonctions.au3 :</gras></couleur>
Il contient ce code:

<code>Func calcule_minutes()  Return (@Hour*60)+@MinEndFunc</code>

Ce code ne devrait pas poser de problèmes. La fonction n'a besoin d'aucun paramètre pour fonctionner. Le Return permet de retourner une valeur, qui ici est @Hour, une macro qui retourne l'heure multipliée par 60 et additionée à @Min qui retourne la minute. En gros, si il est 16H59, la fonction nous retourne le nombre de minutes soit 16*60+59= 1019 minutes.

Maintenant, on va utiliser cette fonction dans notre script principal.
Vous enregistrez la fonction dans le dossier de votre choix, puis vous mettez au début de votre scipt principal ceci :

<couleur nom="rose"><gras>#include</gras></couleur> <couleur nom="bleu">"Chemin d'acès de la fonction\fonctions.au3"</couleur>

Ensuite, vous pouvez appeler à tout moment dans votre script principal les fonctions présentes dans le fichier fonctions.au3 !!!

En bref, les includes servent à rendre votre script plus court en séparant les fonctions de votre script principal, qui a besoin du fichier pour marcher. En effet, si vous supprimer le fichier fonctions.au3, alors votre script principal ne marchera plus. 
Il existe bien entendu des librairies, qui sont des fonctions déjà écrites par les developpeurs d'Autoit ou d'autres utilisateurs, et c'est ce que nous appellons UDF.

Ces UDF (User Defined Fonction) sont des fichiers .au3 contenant une multitude de fonctions et il vous suffira d'Inclure ce fichier pour utiliser la fonction. Les librairies de bases d'Autoit sont déjà inclues dans votre code. Par exemple, en C, vous avez pris l'habitude de toujours inclure les Includes de bases.

<code type="c">#include <stdio.h>#include <stdlib.h></code>

En Autoit, tout est déjà fait. C'est pour cela que vous avez pu utiliser <gras>MsgBox</gras> et <gras>InputBox</gras> par exemple sans se soucier de savoir d'où elles venaient. Et ce ne sont pas les seuls fonctions croyez moi.
Cependant, il existe des UDFs (User Defined Fonctions), qui sont des fonctions supplémentaires très utiles qui ont été rajouté soit par les developpeurs d'Autoit soit par les membres, et qui sont disponibles dans l'aide d'Autoit. Par exemple, il existe peu de fonctions utilisés avec les Tableaux dans les includes automatiques, à chaque fois qu'on va utiliser les Arrays (Tableaux) on va pratiquement systematiquement devoir Ajouter la ligne <minicode>#Include <Array.au3></minicode>

<information>Vous remarquerez que j'ai utilisé les signes <> pour include Array.au3, alors qu'auparavant j'ai utilisé "". La raison est simple: Quand vous incluez des UDF contenus dans l'installation d'Autoit, vous utilisez <> Pour annoncer à Autoit que le fichier est dans le dossier /includes/ de son installation. En utilisant "", autoit prend le chemin courant, c'est à dire qu'il part de l'emplacement du script. Si votre fichier à inclure est au même emplacement que votre script principal, vous utiliserez donc "". Pour tous les includes basiques, vous utiliserez <> </information>


<titre1>Utilisation d'UDF's</titre1>

Ces fonctions permettent des choses diverses et variées, comme par exemple :
<liste>	<puce>Modifier rapidement des images</puce>	<puce>Etablir des connexions réseau abouties (serveur/client)</puce>	<puce>Modifier intelligemment la base de registres</puce>	<puce>Déterminer toutes les caractèristiques d'un ordinateur en réseau</puce>	<puce>Redémarrer votre LiveBox (et oui, tout peut exister ^^)</puce>	<puce>Récupérer les fichiers présents sur votre serveur de connexion privé (FreeBox, modem personnel, serveur...)</puce>	<puce>Créer des interfaces graphiques très abouties pour vôtre programme</puce>	<puce>Ajouter des animations de fenêtre à vios programems</puce>	<puce>Envoyer automatiquement des mails</puce>	<puce>Détection une insertion de périphériques</puce> ... et la liste et très longue ! Avec toutes les fonctions que certains programmeurs partagent sur le NET, elle ne cesse de s'agrandir !</liste>

Si cela vous intéresse, vous pouvez vous même en télécharger quelques unes sur le lien suivant :

<lien>http://www.autoitscript.fr/forum/viewforum.php?f=21</lien>


Par exemple, il existe une fonction très utile pour vérifier vos tableaux pendant le developpement de votre application : _ArrayDisplay(). Elle affiche le contenu de votre Array. Vous constaterez que son nom commence par le signe _ . C'est une convention pour signifier qu'elle fait partie d'un UDF, vous avez deviné qu'il s'agit de <Array.au3>
Elle accepte plusieurs paramètre mais un seul est obligatoire, le nom de la variable. 
Vous pouvez tester l'exemple ci-dessous.

<code>#include <Array.au3>Dim $Tableau[2][4] = [[1,3,5,7],[2,4,6,8]]_ArrayDisplay($Tableau)</code>]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="206019">
		    <titre>
		      <![CDATA[Pour aller plus loin...]]>
		    </titre>
		    <texte>
		      <![CDATA[<titre1>Utilisation de variables dans une fonction</titre1>

Pour reprendre l'exemple de la fonction précédente (elle est bien pratique ;)), si vous voulez être plus clair, vous pouvez passer par une variable intermédiaire :

<code>Func Somme ($premier_nombre, $deuxieme_nombre = 0)    Local $somme    $somme = $premier_nombre + $deuxieme_nombre    Return $sommeEndFunc</code>
Vous pouvez constater que la variable <couleur nom="rouge">$somme</couleur> a une portée locale (utilisation de <couleur nom="bleu">Local</couleur>) : c'est très important de le préciser car comme cela, dès qu'on sort de la fonction, la mémoire affectée à cette variable est libérée. C'est sûr qu'une variable contenant juste une somme ne prend pas beaucoup de place, mais si cette variable contient un texte très long et que vous appelez la fonction des milliers de fois votre programme va ramer, et votre ordi' risque fortement de surchauffer :colere: .
Autre avantage à déclarer localement : si par hasard dans votre code vous avez une variable globale nommée <couleur nom="rouge">$somme</couleur>, elle ne sera pas modifiée lors de l'utilisation de la fonction ;) : ce code vous en apporte la preuve :
<code>Global $somme = 1Somme(2)MsgBox(0,"",$somme)Func Somme($premier_nombre, $deuxieme_nombre = 0)    Local $somme    $somme = $premier_nombre + $deuxieme_nombre    Return $sommeEndFunc</code>
Une fenêtre vous affiche le chiffre 1, valeur affectée à la variable globalement, alors que dans la fonction "Somme", <couleur nom="rouge">$somme</couleur> vaut 2

<titre2>Modifier une variable globale</titre2>

C'est bien de savoir utiliser des variables locales dans votre code, mais il se peux que vous ayez envie de modifier une variable globale dans votre fonction.

<question>Mais ce que tu nous dis ne sert à rien : il suffit juste de ne pas mettre "Local" dans la fonction, non ?</question>
C'est vrai que si l'on veut modifier une variable globale, on peut simplement ne pas la déclarer localement dans son script :
<code>Global $nombre_global = 1Incremente()MsgBox(0,"",$nombre_global)Func Incremente()    $nombre_global += 1 ; équivalent à $nombre_global = $nombre_global + 1EndFunc</code>
Seulement, si vous voulez que la fonction serve pour des variables différentes, vous êtes bien embêtés  :diable:
Heureusement, le mot-clé <couleur nom="bleu">ByRef</couleur> existe  :zorro:
<question>Heu... et comment ça marche ?</question>
Ce mot-clef s'utilise lors de la déclaration des paramètres de la fonction :
<code>Func Le_nom_de_ma_fontion(ByRef $param)</code>
Ce qui donne dans un exemple :
<code>Global $nombre_global1 = 1, $nombre_global2 = 5Incremente($nombre_global1)MsgBox(0, "premier nombre", $nombre_global1)Incremente($nombre_global2)MsgBox(0, "deuxième nombre", $nombre_global2)Func Incremente(ByRef $variable_interne)    $variable_interne += 1EndFunc</code>
Dans la fonction, on utilise donc <couleur nom="rouge">$variable_interne</couleur>, mais c'est <couleur nom="rouge">$nombre_global1</couleur> ($nombre_global2 dans le deuxième appel de la fonction) qui est modifié.]]>
		    </texte>
		  </souspartie>
		
	      </sousparties>
	      
	      <conclusion>
		<![CDATA[Je crois qu'après tant d'efforts vous avez bien droit à une petite récompense ...

Vous avez mérité que je vous parle d' une petite fonction s'intitulant  <code>Beep ( [ Fréquence [, Durée ]] )</code>
qui permet de faire jouer de la musique à la Tour.
Avantage, les bruits indésirables >_<  deviennent de la musique! :ange: , et pas besoin d'avoir ses enceintes allumées !
<attention>La musique sort de la tour, par un système d'haut-parleurs interne, alors n'exécutez pas ce code si quelqu'un dort à proximité! :p </attention>

<titre2>Exemples</titre2>
 Beep(262, 200)

Voici le début de "Joyeux Anniversaire"
<code>Beep(262*2, 500)Beep(262*2, 200)Beep(294*2, 500)Beep(262*2, 1000)Beep(349*2, 500)Beep(330*2, 2000)Sleep(500)Beep(262*2, 500)Beep(262*2, 200)Beep(294*2, 500)Beep(262*2, 1000)Beep(392*2, 500)Beep(349*2, 1000)</code>


Comme je suis sympa, je vous met les fréquences, pour que vous puissiez faire vos propres morceaux de musique!
<secret>
Do:  261,6 Hz
Do#: 277.2 Hz
Ré:  293.7 Hz
Ré#: 311.1 Hz
Mi:  329.7 Hz
Fa:  349.2 Hz
Fa#: 370.0 Hz
Sol: 392.0 Hz
Sol#:415.3 Hz
La:  440 Hz
La#: 466.2 Hz
Si:  493.9 Hz
Do:  523.2 Hz </secret>

Il est maintenant temps de passer aux choses sérieuses! Allons, cessons les enfantillages voulez vous!]]>
	      </conclusion>
	    </chapitre>
	  
	    <chapitre id="205963">
	      <titre>
		<![CDATA[TP : Le jeu du 'Plus ou Moins']]>
	      </titre>
	      <avancement>
		<![CDATA[100]]>
	      </avancement>
	      <difficulte>
		<![CDATA[1]]>
	      </difficulte>
	      <introduction>
		<![CDATA[Qui ne connaît pas le célebre jeu du + ou - , le jeu où il faut deviner à quel chiffre pense l'adversaire  tandis qu'il ne vous répondra que "Plus" ou "Moins", et parfois "Bravo, tu as gagné"?


Pas vous ? En tout cas, c'est ce jeu qu'il va vous falloir programmer]]>
	      </introduction>
	      <sousparties>
		
		  <souspartie id="205964">
		    <titre>
		      <![CDATA[Présentation Du Jeu]]>
		    </titre>
		    <texte>
		      <![CDATA[Comme je vous l'ai expliqué précedemment, ce jeu consiste à deviner un nombre auquel pense votre adversaire le plus rapidement possible. Petite anecdote, ce jeu vient d'être réintroduit dans l'émission "Le Juste Prix" pour le jeu final.
Fastoche non? o_O
Pour ceux qui ont déjà joué à ce jeu, le coder sera assez facile grâce aux possibilités offertes par Autoit. De plus, nous allons le faire graphiquement! Et oui, vous avez bien entendu: Pas De Console !
Pour les autres, ça sera aussi facile :D]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="205965">
		    <titre>
		      <![CDATA[Elaborer l'algorithme]]>
		    </titre>
		    <texte>
		      <![CDATA[Élaborons l'algorithme de notre programme...

Avant de foncer tête baissée et de coder (ce qui est voué à l'échec), il faut d'abord définir précisément ce que va faire notre programme.
Par quelles étapes va passer notre programme ? Comment fera-t-il ? Que de questions ! :D

    <liste><puce>Premièrement, notre programme devra tirer un nombre au hasard.</puce>   <puce>On va répéter ces actions tant que l'utilisateur n'a pas trouvé le bon nombre
          -On demande à l'utilisateur un nombre
          -Si le nombre entré est supérieur au nombre caché, on l'indique à l'utilisateur
          -Si le nombre entré est inférieur au nombre caché, on l'indique à l'utilisateur</puce></liste>


Vous savez tout ce qu'il faut savoir, vous savez ce que va faire le programme, il est temps de passer au codage ! :zorro:]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="205966">
		    <titre>
		      <![CDATA[Ce dont vous aurez besoin]]>
		    </titre>
		    <texte>
		      <![CDATA[Voici la liste des outils de programmation dont vous aurez besoin pour cette fois :

<liste><puce>Les Boucles, révisez les un peu plus haut avant de  vous lancer. A vous de choisir la plus appopriée pour ce script.</puce><puce>Les Variables, bien sûr, à réviser également.</puce><puce>Les commandes informatives (InputBox et MsgBox).</puce><puce>La commande Random (je vous l'explique un peu plus bas).</puce><puce>Les Opérateurs</puce></liste>

Sauf erreur, avec tous ces outils en main, vous n'avez aucune chance de vous louper !

<information>La commande Random</information>

La commande Random s'utilise comme cela :

<code=<code type="console">Random (valeur_minimale_possible , valeur_maximale_possible)</code>

Par exemple, si je veux afficher un nombre au hasard allant de 1 à 10 dans un MsgBox, voici le code adéquat :

<code>$chiffre_hasard=Random (1, 10, 1);~(flag) j'ai ajouté le numéro "1" pour préciser que le nombre à tirer au hasard doit être entier.MsgBox ("Tutoriel","Salut ! Le nombre est " & $chiffre_hasard & ".")</code>

Voila, je ne vous en dis pas plus !]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="205967">
		    <titre>
		      <![CDATA[Correction]]>
		    </titre>
		    <texte>
		      <![CDATA[Correction !
Vous n'y arrivez pas ? Recommencez encore une fois ! :)
Vous n'y arrivez toujours pas ? Prenez un bout de papier et marquez l'algorithme du programme avec vos mots à vous. Et recommencez ;)
Vous n'y arrivez encore pas ? Je vois déjà vos yeux bouffis à minuit en train d'essayer de coder ce jeu. :p Essayez demain, la tête froide, et tout sera plus clair (généralement, inutile de vous énerver devant un programme : ça ne fait pas avancer le schmilblick. Allez prendre l'air !)

J'espère que vous avez au moins réfléchi à ce petit programme, que vous avez essayé de coder quelque chose, ou que vous y êtes arrivé.
Parce que, quoi qu'il en soit, il est temps de passer à la correction !

Vous voulez voir le script?


<secret>Vous êtes vraiment certain?</secret>
<secret>
<code>$chiffreH=Random ( 0, 100, 1)MsgBox (1, "Tutoriel Zero", "Bonjour ! Bienvenue au jeu du Plus ou du Moins !Le but du jeu est le suivant : Je tire un nombre au hasard, puis je vous donne les indications 'plus' ou 'moins' pour vous aider. Vous êtes prêt ?")Do          $reponse=InputBox ("Tutoriel Zero", "Rentrez un nombre de 0 à 100")          If ($reponse > $chiffreH) Then                  MsgBox (1, "Tutoriel Zero", "Pas mal... mais c'est un peu moins !")          EndIf          If ($reponse < $chiffreH) Then                  MsgBox (1, "Tutoriel Zero", "Pas mal... mais c'est un peu plus !")          EndIfUntil ($reponse=$chiffreH)MsgBox (1, " WoOoW!", " Vous avez réussi ! Extraordinaire !")</code>


Je pense que le code se passe de tout commentaire, mais si vous avez fait autre chose et que ça marche, c'est totalement possible !
</secret>]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="205968">
		    <titre>
		      <![CDATA[Idées D'Amélioration]]>
		    </titre>
		    <texte>
		      <![CDATA[Vous voilà avec un jeu de Plus ou Moins tout à fait respectable.
Mais vous pouvez certainement l'améliorer ! :)

    * Ajoutez donc à votre jeu un compteur.
<gras>exemple :</gras>
<code>Vous avez trouvé le nombre caché en 8 coups !</code>
    * Voire même pour les <barre>plus compliqués</barre> pour les plus perfectionnistes, ajouter un niveau de difficulté englobant :
	- La valeur maximale que peut prendre le nombre mystère. Cela pourra augmenter (ou bien diminuer) la difficulté.
	- Le nombre d'essais pour trouver le nombre au maximum.

    * Demandez à l'utilisateur s'il veut recommencer le jeu.

Ça en fait des choses à faire, hein ?]]>
		    </texte>
		  </souspartie>
		
	      </sousparties>
	      
	      <conclusion>
		<![CDATA[Fort bien, si vous avez réussi tout seul, vous venez de terminer le chapitre et maitrisez tout ce qu'il faut pour commencer à coder des applications plus complètes. N'hesitez pas à revenir sur vos pas en particulier le chapitre sur la communauté Française d'Autoit pour accéder au forum où nous répondrons à vos questions.]]>
	      </conclusion>
	    </chapitre>
	  
	    <chapitre id="204291">
	      <titre>
		<![CDATA[Un Script Propre & Lisible]]>
	      </titre>
	      <avancement>
		<![CDATA[100]]>
	      </avancement>
	      <difficulte>
		<![CDATA[1]]>
	      </difficulte>
	      <introduction>
		<![CDATA[Quand vous créez un script, il est bien de suivre certains principes de base, qui vous éviterons les foudres des plus doués, ou des remarques à répétitions.
La construction d'un script a besoin d'une rigueur toute particulière, car la moindre erreur peut vous faire perdre un temps précieux, pour une broutille.
Ici vont vous être présentés les quelques principes de base à respecter.

Rien n'est gravé dans le marbre, vous pouvez donc adapter ce squelette à votre convenance, mais n'oubliez pas que si vous avez
besoin d'aide, votre script sera lu par plusieurs autres utilisateurs, et un script bien présenté est plus facile à lire qu'un brouillon sans queue ni tête !]]>
	      </introduction>
	      <sousparties>
		
		  <souspartie id="204292">
		    <titre>
		      <![CDATA[Le Code]]>
		    </titre>
		    <texte>
		      <![CDATA[Commençons par un script modèle :
Ne vous inquiétez pas si ce script vous paraît compliqué o_O , car après l'avoir analysé il n'aura plus aucun secret pour vous.

<code>; ----------------------------------------------------; -------------------- Section I --------------------; ----------------------------------------------------; Version AutoIt :    3.2.8.1; Langue     :        Francais; Plateforme :        Win9x/XP; Autheur    :        Tlem (tlem at tuxolem dot net);; Fonction du script&amp;#058; Démonstration de la construction d'un script.;;;; Version 1.0 : 21/11/2007;           - Première Version.;; ----------------------------------------------------; -------------------- Section II --------------------; ----------------------------------------------------; Début de section des directives.#Region Compiler directives section; Utiliser pour la compatibilité avec Win98 (Y).#AutoIt3Wrapper_UseAnsi=N; Icone(s) à rajouter dans les ressources de l'application compilée (Accepte les chemins relatifs).#AutoIt3Wrapper_Res_Icon_Add=./Res/Icon.ico; Icone de l'application compilée.#AutoIt3Wrapper_Icon=./Res/Icon1.ico; Nom du fichier compiler.#AutoIt3Wrapper_OutFile=../Demo_v1.0.exe; Format de sortie de l'application (A3X ou EXE).#AutoIt3Wrapper_OutFile_Type=exe; Déscription du script.#AutoIt3Wrapper_Res_Description=Démo script; Commentaire du script#AutoIt3Wrapper_Res_Comment=Utilitaire de démo; Version du script.#AutoIt3Wrapper_Res_Fileversion=1.0; Activation de l'incrémentation de version automatique.#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=n; Information complèmentaire : Nom interne#AutoIt3Wrapper_Res_Field=Nom Interne|Démo Script; Information complèmentaire : date de compilation (Utilisation d'une variable).#AutoIt3Wrapper_Res_Field=Compilation Date|%date%; Information complèmentaire : heure de compilation (Utilisation d'une variable).#AutoIt3Wrapper_Res_Field=Compilation Heure|%time%; Information complèmentaire : version de AutoIt (Utilisation d'une variable).#AutoIt3Wrapper_Res_Field=Version du Compilateur|AutoIt v%AutoItVer%; Information complèmentaire : Entreprise.#AutoIt3Wrapper_res_Field=Entreprise|Tuxolem Software; Information complèmentaire : auteur.#AutoIt3Wrapper_Res_Field=Créer par|Tlem; Information complèmentaire : Email de l'auteur.#AutoIt3Wrapper_Res_Field=Email|tlem at tuxolem.net; Information complèmentaire : Copyright ou Copyleft.#AutoIt3Wrapper_Res_LegalCopyright=Copyright (C) 2003-2007 Tuxolem Software; Information complèmentaire : Langue du script.#AutoIt3Wrapper_Res_Language=0x040c; Utilisation de tidy lors du lancement du script (F5).#AutoIt3Wrapper_run_tidy=y; Paramètre de sauvegarde Tidy (Copie de sauvegarde du script  0 = Garde toutes les versions).#Tidy_Parameters= /kv 0; Utilisation de la compression pour générer l'EXE.#AutoIt3Wrapper_UseUpx=y; Taux de compression (2 est une bonne valeur).#AutoIt3Wrapper_Compression=2; Controle du script avec AU3Check#AutoIt3Wrapper_Run_AU3Check=n; Action à réalisée avant compilation.#AutoIt3Wrapper_Run_Before=; Action à réalisée après compilation.#AutoIt3Wrapper_Run_After=; Fin de la région directives.#EndRegion; ----------------------------------------------------; -------------------- Section III --------------------; ----------------------------------------------------; Déclarations Diverses.#include <GuiConstants.au3>#NoTrayIcon; Déclaration des variables.Global $Largeur = 400, $Hauteur = 100, $Titre = "Form1 "Local $Ver = "V1.0"; ----------------------------------------------------; -------------------- Section IV --------------------; ----------------------------------------------------#Region ### START Koda GUI section ###; Fenetre principale.$Form1 = GUICreate($Titre &amp; $Ver, $Largeur, $Hauteur, -1, -1); Bouton OK.$Button1 = GUICtrlCreateButton("OK", 150, 50, 75, 25)GUISetState(@SW_SHOW)#EndRegion ### END Koda GUI section ###; ----------------------------------------------------; -------------------- Section V --------------------; ----------------------------------------------------While 1    $nMsg = GUIGetMsg()    Switch $nMsg        Case $GUI_EVENT_CLOSE            Fin()        Case $Button1            MsgBox(64, "Info", "Vous avez cliqué le Bouton OK")    EndSwitchWEnd; ----------------------------------------------------; -------------------- Section VI --------------------; ----------------------------------------------------#Region ################### Fonctions ###################Func Fin()    ; Lancement du splash screen.    SplashTextOn("", "Fermeture du script en cours,  Veuillez patienter ...", 450, 70, -1, -1, 0 + 1 + 16 + 32, "Times New Roman", 12, 800)    ; Pause de 3 secondes.    Sleep(3000)    ; Fermeture du splash.    SplashOff()    ExitEndFunc   ;==>Fin#EndRegion ################### Fonctions ###################</code>


Ce script est composé de 6 sections distinctes.
Nous allons détailler chaque section dans la suite de ce post.

<liste><puce>Section I Présentation de votre script.</puce><puce>Section II Déclarations des directives pour AutoItWrapper.</puce><puce>Section III Déclarations des Includes, variables, et autres.</puce><puce>Section IV Construction de votre GUI (Graphic User Interface).</puce>Section V boucle d'attente d'une action sur la GUI.Section VI Définition des fonctions utilisées dans le script.</liste>

<information>Les Sections I et II ne sont pas indispensables, mais il faut apprendre à coder proprement, et ceci est une étape à franchir.</information>
Voyons maintenant section par section comment ça fonctionne.]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="204293">
		    <titre>
		      <![CDATA[Section I Présentation de votre script]]>
		    </titre>
		    <texte>
		      <![CDATA[Cette partie, est en fait la présentation de votre script, et regroupe quelques informations de base.


<code type="vbnet">; Version AutoIt :    3.2.8.1; Langue     :        Francais; Plateforme :        Win9x/XP; Auteur    :        Tlem (tlem at tuxolem dot net);; Fonction du script&amp;#058; Démonstration de la construction d'un script pour le Site Du Zero.;;;; Version 1.0 : 21//2007;           - Première Version.</code>


La première information, permet de savoir avec quelle version de AutoIt ce script a été construit et testé.
Parfois entre les différentes versions de AutoIt, certaines commandes ne sont pas utilisées de la même manière, ce qui peut rendre un script inutilisable.

Le reste des informations permet de savoir sur quelle plateforme peut fonctionner votre script, la description du script, et les différentes informations concernant l'auteur, ainsi que les versions.

<question>Fort bien, mais tu m'a dit que les lignes commencant par ; étaient des commentaires, alors on peut tout enlever cette connerie !</question>

En effet, ceci n'est que de l'information pure pour celui qui lira votre code. Mais ces informations sont très utiles lorsque vous aurez des problèmes de programmation et que l'envie vous prendra de vous faire aider. Un script bien commenté permet de se faire comprendre facilement et ce pour n'importe quel langage de programmation.

Maintenant que les informations sont données, on peut passer aux choses sèrieuses... (Ou pas :ange: )]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="204294">
		    <titre>
		      <![CDATA[Section II Déclarations des directives de Compilation]]>
		    </titre>
		    <texte>
		      <![CDATA[Cette partie, n'est pas toujours indispensable, puisqu'elle regroupe les directives utilisées lorsque vous souhaitez compiler votre .au3 en .exe
En effet, lorsque que vous souhaitez distribuer votre superbe programme à vos amis, vous avez besoin de le compiler, afin que vos amis aient juste à double-cliquer pour pouvoir le lancer. Mais pour cela, il faut utiliser un compilateur!

<question>Cool, tu m'as emmené jusqu'ici pour me dire qu'il faut encore que je télécharge quelque chose...</question>
Pas de soucis, tout est déjà bien en place. En effet, faites un clic droit sur un programme en Autoit. (*.au3) Vous pouvez lire : Compile Script (Ou Compiler le script pour les anglophobes) Suffit de cliquer et hop le .exe apparait.

Cependant, cette compilation va être "minimale", vous ne pourrez pas choisir une icône, ou encore la description. Pour cela, il faut cliquer sur "Compile With Options" pour voir apparaitre un utilitaire AutoitWrapper.

AutoItWrapper est un utilitaire permettant de compiler avec des options votre programme. Toutes les lignes ci-dessous sont des directives que lui seul comprend.

<code type="vbnet">; Début de section des directives.#Region Compiler directives section; Utiliser pour la compatibilité avec Win98 (Y).#AutoIt3Wrapper_UseAnsi=N; Icone(s) à rajouter dans les ressources de l'application compilée (Accepte les chemins relatifs).#AutoIt3Wrapper_Res_Icon_Add=./Res/Icon.ico; Icone de l'application compilée.#AutoIt3Wrapper_Icon=./Res/Icon1.ico; Nom du fichier compiler.#AutoIt3Wrapper_OutFile=../Demo_v1.0.exe; Format de sortie de l'application (A3X ou EXE).#AutoIt3Wrapper_OutFile_Type=exe; Déscription du script.#AutoIt3Wrapper_Res_Description=Démo script; Commentaire du script#AutoIt3Wrapper_Res_Comment=Utilitaire de démo; Version du script.#AutoIt3Wrapper_Res_Fileversion=1.0; Activation de l'incrémentation de version automatique.#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=n; Information complèmentaire : Nom interne#AutoIt3Wrapper_Res_Field=Nom Interne|Démo Script; Information complèmentaire : date de compilation (Utilisation d'une variable).#AutoIt3Wrapper_Res_Field=Compilation Date|%date%; Information complèmentaire : heure de compilation (Utilisation d'une variable).#AutoIt3Wrapper_Res_Field=Compilation Heure|%time%; Information complèmentaire : version de AutoIt (Utilisation d'une variable).#AutoIt3Wrapper_Res_Field=Version du Compilateur|AutoIt v%AutoItVer%; Information complèmentaire : Entreprise.#AutoIt3Wrapper_res_Field=Entreprise|Tuxolem Software; Information complèmentaire : auteur.#AutoIt3Wrapper_Res_Field=Créer par|Tlem; Information complèmentaire : Email de l'auteur.#AutoIt3Wrapper_Res_Field=Email|tlem at tuxolem.net; Information complèmentaire : Copyright ou Copyleft.#AutoIt3Wrapper_Res_LegalCopyright=Copyright (C) 2003-2007 Tuxolem Software; Information complèmentaire : Langue du script.#AutoIt3Wrapper_Res_Language=0x040c; Utilisation de tidy lors du lancement du script (F5).#AutoIt3Wrapper_run_tidy=y; Paramètre de sauvegarde Tidy (Copie de sauvegarde du script  0 = Garde toutes les versions).#Tidy_Parameters= /kv 0; Utilisation de la compression pour générer l'EXE.#AutoIt3Wrapper_UseUpx=y; Taux de compression (2 est une bonne valeur).#AutoIt3Wrapper_Compression=2; Controle du script avec AU3Check#AutoIt3Wrapper_Run_AU3Check=n; Action à réalisée avant compilation.#AutoIt3Wrapper_Run_Before=; Action à réalisée après compilation.#AutoIt3Wrapper_Run_After=; Fin de la région directives.#EndRegion</code>

<information>Rassurez vous, ces lignes ne sont pas à remplir manuellement. Quand vous cliquez sur "Compile With Options", une fenêtre s'ouvre pour vous permettre de tout choisir sans toucher au code, alors n'hesitez pas à combiner differentes possibilités.</information>


<attention>Si vous mettez ces lignes dans votre code, il faudra quand meme cliquer sur "Compile With Options" et non sur "Compile Script" pour que toutes vos options soient prises en compte.</attention>]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="204295">
		    <titre>
		      <![CDATA[Section III Déclarations des Includes, variables, et autres]]>
		    </titre>
		    <texte>
		      <![CDATA[Attention, on arrive à une partie plus facile, mais indispensable: Les Déclarations Diverses.

C'est dans cette partie que l'on va placer les Includes et les variables locales & globales ...

<code>; Déclarations Diverses.#include <GuiConstants.au3>#NoTrayIcon; Déclaration des variables.Global $Largeur = 400, $Hauteur = 100, $Titre = "Form1 "Local $Ver = "V1.0"</code>


- La première ligne, #include <GuiConstants.au3> sert à dire au programme, que nous allons avoir besoin d'utiliser des fonctions stockées dans cet UDF (User Définition File), et donc de le rajouter lors l'utilisation et de la compilation. En effet, certains utilisateurs expérimentés creent leurs propres fonctions et les partagent avec les autres. C'est ce qu'on appelle un UDF. Les plus utilisées sont inclus dans Autoit à l'origine, et ont une couleur bleu ciel dans Scite au lieu du bleu habituel. Vous pouvez les trouvez facilement, ce sont celles qui commencent par un _ . Par Exemple:<couleur nom="turquoise"> _FileToArray</couleur> est un UDF, <couleur nom="bleu">StringSplit</couleur> est une fonction de base. Tous les UDFs sont enfait des scripts composés à partir des fonctions de base. Ils sont là pour vous simplifier la vie.

- La deuxième ligne indique au compilateur, de ne pas afficher l'icône du programme dans le systray. En effet, si vous ne mettez pas cette ligne, si vous creez un quelconque programme, une icone en forme de A s'affichera dans le SysTray (Barre Système en bas à droite de votre écran) qui vous permettra de quitter à n'importe quel moment le programme. Il est possible de modifier cette icone ainsi que le menu, mais ceci necessite des fonctions avanacées que nous verrons plus tard. Il vaut donc mieux l'enlever pour l'instant.

Tout une liste de déclarations peuvent être utilisées en fonction de vos besoins.
Consulter l'aide par la touche F1 section Keyword/Statement Reference.

- Les lignes 6 et 7 servent à déclarer des variables.
Nous avons déjà vu comment déclarer une variable dans le chapitre précédent, ceci ne devrait pas vous poser trop de problèmes pour l'instant.]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="204296">
		    <titre>
		      <![CDATA[Section IV Construction de votre GUI (Graphic User Interface)]]>
		    </titre>
		    <texte>
		      <![CDATA[Section IV : Construction de votre GUI (Graphic User Interface)

Cette partie, est le plus souvent, la construction de votre interface graphique (GUI pour Graphic User Interface).
Pour se faire, on crée d'abord la fenêtre principale, puis on rajoute les différents éléments à utiliser.

Pour vous aider, un très bon addon à été ajouté : Koda
Pour lancer Koda, sous Scite4AutoIt, faites ALT+m.
Il ne vous reste plus qu'a construire votre GUI, puis à récupérer le code par F9 puis Insérer dans Scite, pour que le code se retrouve en lieu et place de votre curseur.

La création de la GUI est liée à l'Include de GUIConstants.au3.
Sans cet Include, vous aurez une erreur au lancement du script.

<code>#Region ### START Koda GUI section ###; Fenetre principale.$Form1 = GUICreate($Titre &amp; $Ver, $Largeur, $Hauteur, -1, -1); Bouton OK.$Button1 = GUICtrlCreateButton("OK", 150, 50, 75, 25)GUISetState(@SW_SHOW)#EndRegion ### END Koda GUI section ###</code>

Ce code vous affichera une fenêtre vide, du nom de : Form1.
<liste><puce>La première ligne indique que nous allons utiliser des fonctions de l'UDF : <gras>GUIConstants.au3</gras>.</puce><puce>La deuxième ligne, permet de délimiter la partie création de la GUI (Ceci n'est pas obligatoire, mais permet une meilleure lisibilité du code).</puce><puce>La troisième ligne se compose de deux choses :
$Form1, qui récupère le <italique>handle</italique> de la fenêtre et l'instruction de la création de la fenêtre.
Le fait de récupérer le <italique>handle</italique> de la fenêtre, nous permettra d'intervenir sur celle-ci plus tard dans le code.</puce><puce>La quatrième ligne se compose aussi de deux choses :
$Button1, qui récupère le <italique>controlID</italique> (L'identifiant)du bouton que l'on va créer, puis la commande de création du bouton.
Le fait de récupérer le <italique>controlID</italique> du bouton, nous permettra d'intervenir sur celui-ci, ou d'intercepter des messages d'actions en provenance de celui-ci.</puce><puce>La cinquième ligne est la commande qui affiche la GUI.
Vous pouvez grâce à cette commande, afficher ou masquer votre GUI.</puce><puce>Et la sixième ligne est le délimiteur de fin de la partie GUI (Non obligatoire si vous n'avez pas mis la ligne de début de la GUI). </puce></liste>]]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="204297">
		    <titre>
		      <![CDATA[Section V boucle d'attente d'une action sur la GUI]]>
		    </titre>
		    <texte>
		      <![CDATA[Cette partie, est également indispensable, puisqu'il s'agit de la boucle d'attente d'une action sur la GUI.

Sans cette boucle, votre interface apparaît, mais disparaît aussitôt, sans que vous n'aillez le temps de voir quoi que ce soit.

<code>While 1    $Msg = GUIGetMsg()    Switch $Msg        Case $GUI_EVENT_CLOSE            Fin()        Case $Button1            MsgBox(64, "Info", "Vous avez cliqué le Bouton OK")    EndSwitchWEnd</code>

Nous avons donc dans cette section une boucle <gras>While / WEnd</gras> dans laquelle, on vient lire les messages venant de l'interface graphique par la commande <gras>GUIGetMsg()</gras>, et on attribue cette valeur, à la variable <gras><couleur nom="rouge">$Msg</couleur></gras>.
A chaque retour de boucle (<gras>WEnd</gras>), on recommence à lire <gras>GUIGetMsg()</gras>, et ainsi de suite.

A l'intérieur de cette boucle <gras>While / WEnd</gras>, nous utilisons la fonction <gras>Switch / EndSwitch</gras> pour faire une action en fonction de la valeur de <gras><couleur nom="rouge">$Msg</couleur></gras> (Nous aurions pu aussi utiliser la fonction : <gras>Select / EndSelect</gras>)
<gras>Switch $Msg</gras> permet de dire au programme : Selon la valeur de <gras><couleur nom="rouge">$Msg</couleur></gras>, traite le cas (<couleur nom="bleu"><gras>Case</gras></couleur>) concerné.

Autrement dit :
<liste><puce>Si vous cliquer sur la croix de fermeture de la fenêtre, la fonction GUIGetMsg() attribue à $Msg la valeur $GUI_EVENT_CLOSE, et donc lors du traitement par la commande Switch, nous sommes dirigé vers : Case $GUI_EVENT_CLOSE. Nous appliquons en suivant, un appel à la fonction Fin() faisant partie de la section 6.</puce><puce>Si vous cliquez sur le bouton Ok, alors la valeur de retour de GUIGetMsg() est $Button1, et donc la boucle effectue le traitement de Case $Button1, qui est en l'occurrence l'affichage d'une boite de dialogue "Info".</puce></liste>

Il existe une autre méthode de traitement, qui consiste à gérer les actions sur l'interface selon une mode evénementiel.
Ce mode sera traité dans une prochaine partie concernant intégralement les '<italique>GUI</italique>s']]>
		    </texte>
		  </souspartie>
		
		  <souspartie id="204298">
		    <titre>
		      <![CDATA[Section VI Définition des fonctions utilisées dans le script]]>
		    </titre>
		    <texte>
		      <![CDATA[Cette partie n'est utilisée que si vous avez besoin d'utiliser des fonctions dans votre script.
Une fonction, est une partie de code, que l'on va appeler pour exécuter une suite d'action, puis on va revenir faire la suite du script (Comme un Call en Batch pour ceux qui connaisse).
Une fonction peut être appelée n'importe où dans le script, et revenir à l'endroit ou l'on était pour exécuter la suite du code.


<code>#Region ################### Fonctions ###################Func Fin()    ; Lancement du splash screen.    SplashTextOn("", "Fermeture du script en cours,  Veuillez patienter ...", 450, 70, -1, -1, 0 + 1 + 16 + 32, "Times New Roman", 12, 800)    ; Pause de 3 secondes.    Sleep(3000)    ; Fermeture du splash.    SplashOff()    ExitEndFunc   ;==>Fin#EndRegion ################### Fonctions ###################</code>

Je ne détaillerais pas la fonction Fin() car elle est suffisamment commentée. N'oubliez pas de vous renseigner dans la documentation pour savoir ce que sont les commandes <gras>Splah[...]</gras>

Ce qu'il faut retenir, c'est que si l 'on a besoin de faire une tâche régulièrement dans un code (Lancer l'exécution d'une action depuis plusieurs endroit du code), il vaut mieux dans ce cas créer une fonction.
Pour information, les commandes que vous lancez à partir des Includes, ne sont que des fonctions créées de la même manière.]]>
		    </texte>
		  </souspartie>
		
	      </sousparties>
	      
	      <conclusion>
		<![CDATA[Voilà, maintenant vous n'avez plus aucune excuse pour ne pas présenter un script propre et lisible.
Ne lésinez jamais sur les commentaires, mais n'en abusez pas. Il faut trouver le juste milieu.
Si vous avez suivi le concours du Site Du Zéro sur les Sudoku, vous avez remarqué que tous les scripts bien notés étaient propres, lisibles, commentés, et que cela jouait sur la note. Alors autant prendre de bonnes habitudes tout de suite ;)]]>
	      </conclusion>
	    </chapitre>
	  
	</chapitres>
	<conclusion>
	  <![CDATA[Il est maintenant grand temps de passer au codage d'une interface graphique. Dans un cours de C, il serait question de GTK ou en C++ il faudrait installer Qt, Ici, tout est déjà là, même les fonctions GDI+ sont déjà utilisables si vous souhaitez faire un programme rempli de graphismes ou si vous connaissez déjà cette bibliothèque.
Cependant, il existe en Autoit une manière très simple de concevoir des GUI, et c'est ce que vous allons vous montrer.]]>
	</conclusion>
      </partie>
    
      <partie id="204309">
	<titre>
	  <![CDATA[Quelques Approfondissements]]>
	</titre>
	<avancement>
	  <![CDATA[0]]>
	</avancement>
	<difficulte>
	  <![CDATA[0]]>
	</difficulte>
	<introduction>
	  <![CDATA[Voici quelques informations très utiles, qui vous feront avancer sur le chemin de la prog' Autoit avec encore plus de détermination qu'avant ;) .]]>
	</introduction>
	<chapitres>
	  
	    <chapitre id="204310">
	      <titre>
		<![CDATA[Fonctions et UDFs utiles]]>
	      </titre>
	      <avancement>
		<![CDATA[100]]>
	      </avancement>
	      <difficulte>
		<![CDATA[3]]>
	      </difficulte>
	      <introduction>
		<![CDATA[Ce Chapitre , à la difficulté croissante, a pour but de vous présenter des UDFs plus compliqués mais très utilisés. 
<attention>
Il faut maitriser Autoit avant de commencer la lecture de ce chapitre.</attention>]]>
	      </introduction>
	      <sousparties>
		
		  <souspartie id="204311">
		    <titre>
		      <![CDATA[Internet et FTP]]>
		    </titre>
		    <texte>
		      <![CDATA[<souligne><taille valeur="gros">Internet</taille></souligne>



<souligne><taille valeur="gros">Le FTP (File Transfer Protocol)</taille></souligne>

<question>C'est quoi encore?</question>
Bref rappel: un FTP est, comme son nom l'indique, un protocol de transfert de fichier. Il permet, depuis un ordinateur, de copier des fichiers vers un autre ordinateur. Aussi il permet d'administrer un site web, ou encore de supprimer ou de modifier des fichiers sur cet ordinateur.

Grâce à Autoit, on va directement placer des fichiers sur le ftp voulu de part notre script.
Allez, c'est parti  :pirate:

Premièrement, nous avons besoin de <gras>l'UDF FTP.au3</gras> (qui pour rappel se trouve dans le dossier include, dans AutoIt)
Voici ce qu'il contient:

_FTPOpen()
_FTPConnect()
_FTPPutFile()
_FTPDelFile()
_FTPRenameFile()
_FTPMakeDir()
_FTPDelDir()
_FTPClose()

<gras><souligne>Placer un fichier sur son FTP:</souligne></gras>
Comme mentionné ci-dessus, on inclu l'udf:

<code>#include <FTP.au3></code>

Ensuite, on va regrouper toutes les infos nécessaires sous forme de variable. Je parle ici de l'adresse du ftp, du login et du mot de passe.

<code>#include <FTP.au3>$server = 'ftp://serveur.com'$username = 'Login'$pass = 'Pass'</code>

<information>Rappel: vous pouvez nommer les variables comme bon vous semble. Seulement, jusqu'a la fin du script, utilisez les mêmes</information>
Maintenant, utilisons les fonctions contenues dans le FTP.au3 pour s'y connecter.

<code>#include <FTP.au3>$server = 'ftp://serveur.com'$username = 'Login'$pass = 'Pass'$Open = _FTPOpen('Mon FTP')$Conn = _FTPConnect($Open, $server, $username, $pass)</code>

<question>Attends un peu mon pti' bonhomme, pourquoi vois je: wininet.dll dans les fonctions que tu viens d'utiliser?</question>
Euhhh, oui  :-° Wininet.dll est enfait un module qui contient des fonctions liées a internet utilisées par Windows. On va donc pas s'étendre sur le sujet et se contenter de l'inclure:

<code>#include <FTP.au3>DllOpen('wininet.dll')$server = 'ftp://serveur.com'$username = 'Login'$pass = 'Pass'$Open = _FTPOpen('Mon FTP')$Conn = _FTPConnect($Open, $server, $username, $pass)</code>

Maintenant que tout est prêt, on place le fichier sur le serveur et on clot la connection:


<code>#include <FTP.au3>DllOpen('wininet.dll')$server = 'ftp://serveur.com'$username = 'Login'$pass = 'Pass'$Open = _FTPOpen('Mon FTP')$Conn = _FTPConnect($Open, $server, $username, $pass)$Ftpp = _FtpPutFile($Conn, 'LE_NOM_DU_FICHIER_SUR_PC', 'LE_NOM_DU_FICHIER_SUR_FTP')$Ftpc = _FTPClose($Open)</code>

Pour le _FtpPutFile, mentionnez donc le vrai nom du fichier (ex: coucou.txt) et le nom qu'il aura quand il sera sur le ftp, vous pouvez très bien laisser le même (coucou.txt) ou un autre (coucou_ftp.txt)

Avoir une réponse du transfert:
<code>MsgBox(0, "Error", $Ftpp) ; 1 = OK , 0 = Erreur</code>


<gras><souligne>Autres possibilités:</souligne></gras>

<gras>*_FTPDelFile(), _FTPMakeDir(), _FTPDelDir() marche tous comme suit:</gras>

_Fonction($FTPSession, $FileorDir)

Exemple:

<code>_FTPDelDir($Conn, "dossier")</code>

<gras>*_FTPRenameFile() marche comme suit:</gras>

<code>_FTPRenameFile($Conn, "Nom", "NouveauNom")</code>


<attention><taille valeur="gros">Partie Bonus</taille></attention>
Multiples autres UDF ont été conçus sur le forum anglais pour avoir plus de possibilités. :magicien:
En voici un que vous pouvez avoir ici: <lien url="http://www.autoitscript.fr/forum/download/file.php?id=199">.FTP.au3</lien> qui contient plusieurs autres fonctions:

_FTPGetFileSize()
_FtpSetCurrentDir()
_FTPFileFindFirst()
_FTPFileFindNext()
_FTPGetFoldercontents ()

Exemple pour _FTPGetFoldercontents ():

<code>#include <Array.au3>#include <.FTP.au3>$server = 'ftp://ftp.url.net'$username = '*******'$pass = '******'$ftp = _FTPOpen('Coucou')$Ftpc = _FTPConnect($ftp, $server, $username, $pass)    if @error then        msgbox(0,"Error","Connect Error")        Exit    EndIf_FTPGetFolderContents($ftp,"/test/","",1) ;Les fichiers dans le répertoire 'test'$Ftpc = _FTPClose($ftp)</code>

Mettre "" pour avoir la racine du ftp à la place de "/test/"

<question>On a besoin de l'UDF Array.au3 ici</question>]]>
		    </texte>
		  </souspartie>
		
	      </sousparties>
	      
	      <conclusion>
		<![CDATA[Vous en savez un peu plus maintenant, continuez dans cette voie.]]>
	      </conclusion>
	    </chapitre>
	  
	</chapitres>
	<conclusion>
	  <![CDATA[J'espère que cela vous aura servi !]]>
	</conclusion>
      </partie>
    
      <partie id="204320">
	<titre>
	  <![CDATA[Annexes]]>
	</titre>
	<avancement>
	  <![CDATA[0]]>
	</avancement>
	<difficulte>
	  <![CDATA[0]]>
	</difficulte>
	<introduction>
	  <![CDATA[Si guelque chose  n'est pas vraiment en rapport du tutoriel mais que je juge important de vous expliquer, ca sera ici  :D]]>
	</introduction>
	<chapitres>
	  
	    <chapitre id="204321">
	      <titre>
		<![CDATA[Présentation des Outils]]>
	      </titre>
	      <avancement>
		<![CDATA[100]]>
	      </avancement>
	      <difficulte>
		<![CDATA[1]]>
	      </difficulte>
	      <introduction>
		<![CDATA[]]>
	      </introduction>
	      <sousparties>
		
		  <souspartie id="204322">
		    <titre>
		      <![CDATA[Les Outils installées avec AutoIt v3 et Scite]]>
		    </titre>
		    <texte>
		      <![CDATA[Vous êtes en train de vous dire :"Le moment est venu de le démarrer. :D"
Et bien non!, il me reste à vous présenter succinctement les outils que vous venez d'installer.
Tous les outils ci-dessous sont installés avec les 2 packages: Autoit v3 et Scite4AutoItv3. Si vous ne les avez pas tous, c'est que vous n'avez pas installé Scite4AutoItv3. Faites un bon en arrière et téléchargez le, c'est ultra-utile.
<information>Cette partie sera très utile quand vous commencerez a programmer. Si vous souhaitez juste démarrer a programmer en Autoit sans se faciliter la vie, ou en utilisant un autre éditeur que Scite, vous pouvez sauter</information>
<attention>Pour faciliter votre compréhension,les outils sont cachés.</attention>
<titre2>Voici les outils disponibles suite à l'installation de AutoIt (Groupe AutoIt V3) dans le menu démarrer :</titre2>
<secret><liste><puce><gras>AutoIt Help File</gras>
      Le fichier d'aide (Aussi accessible avec la touche F1 à partir de Scite)</puce><puce><gras>Check For Updates</gras>
      Cet utilitaire vous permettra de voir si vous avez la dernière version de AutoIt, ou de télécharger et installer une version bêta.</puce><puce><gras>AutoIt Window Info</gras>
      Utilitaire, qui permet de trouver les informations sur des contrôles graphiques (Fenêtre, bouton, champs ...) afin de pouvoir les piloter, ou de lire les données à partir de votre script.</puce><puce><gras>Exemples</gras>
      Répertoire contenant plusieurs scripts au3.
      Il peut être des plus intéressent de consulter ces scripts, pour comprendre l'utilisation de certaines commandes.</puce><puce><gras>Compile Script to .exe</gras>
      Utilitaire, qui vous permet de créer à partir de votre script au3, un exécutable, ou script compiler (a3x), avec l'icône de votre choix, et la possibilité de compiler pour rendre le script compatible avec Windows 98 (Option : Compile for ANSI)</puce><puce><gras>Run Script</gras>
      Bon ben le programme AutoIt lui même en personne. o_O </puce><puce><gras>SciTE Script Editor</gras>
      L'éditeur avec coloration syntaxique du code AutoIt.
      Scite permet aussi de travailler sur d'autre langage, puisque ce n'est qu'un éditeur de texte, mais il intègre une gestion de la coloration de la syntaxe, et de lancer des commande pour créer, lancer, faire des actions diverses et variée.
      La version de Scite installée avec AutoIt est vraiment super light, c'est pour cela que je conseille l'installation de Scite4AutoIt.
</puce></liste>

Dans la partie Extra, vous trouverez encore quelques petits outils :

<liste><puce><gras>AutoItX</gras>
      Pour utiliser l'activeX AutoIt dans d'autres scripts (VBS, Batch, ...)</puce><puce><gras>Browse Extras</gras>
      Pour accédez au répertoire des extras.</puce><puce><gras>Decompile .exe to Script</gras>
      Utilitaire pour décompiler des EXE antérieurs à la version 3.2.5.1 de AutoIt.
      Obsolète pour les nouvelles versions de AutoIt.</puce><puce><gras>v2 to v3 Converter</gras>
      Si jamais, vous tombez sur des scripts créer avec AutoIt V2, vous pouvez les mettre à jour avec ce soft.</puce></liste></secret>

<titre2>Maintenant les outils installés avec Scite4Autoit3:</titre2>

Pour commencer, voyons les outils disponibles dans le menu démarrer (Groupe AutoIt V3/SciTE) :

<secret><liste><puce><gras>GettingStarted</gras>
      Aide de Scite. Contient les informations relative à Scite, et aux outils intégrés (AutoItWrapper, Tidy, ...)</puce><puce><gras>SciTe</gras>
      The programme. Et oui encore lui !!! C'est l'éditeur en lui-même.</puce><puce><gras>SciteConfig (CTRL+1 dans Scite)</gras>
      Utilitaire de configuration de Scite.
      Permet de modifier la coloration syntaxique, de choisir les outils disponibles dans le menu Outils, et bien évidement de configurer une partie de Scite.
      Cela permet de paramétrer la sauvegarde automatique des scripts modifiés, et de conserver un certains nombres de versions par exemple.
      Vous pouvez aussi tester vos scripts sur des versions bêta, histoire de voir si il n'y à pas un bug corrigé depuis la dernière version finale.</puce><puce><gras>ScriptWriter (ALT+F6 dans Scite)</gras>
      Utilitaire qui enregistre les actions faites au clavier et à la souris, de manière à les reproduire automatiquement ultérieurement. Ultra utile pour reproduire des actions simples. Un petit exemple, vous lancer cet utilitaire, puis:
Aller sur internet, puis sur un site, taper son pseudo et mot de passe, cliquer sur Ok.
Enregistrez , lancer le script .au3 et magique, votre souris bouge toute seule et reproduit vos actions!</puce><puce><gras>Switch-Definitions</gras>
      Permet de 'Switcher' entre les définitions de la version courante, et la version bêta de AutoIt.</puce><puce><gras>Tidy (CTRL+T dans Scite)</gras>
      Magnifique utilitaire, qui permet de contrôler, nettoyer et de bien présenter votre script pendant l'écriture de celui-ci.
      Cet utilitaire est aussi accessible dans le menu Outils de Scite.</puce></liste></secret>

      Voilà pour les outils accessibles facilement.
      Mais ce n'est pas fini (Loin s'en faut), car Scite4AutoIt regorge d'utilitaires tous plus utiles les uns que les autres.

      Pour cela, rendez vous dans le répertoire d'installation de Scite4AutoIt :
      C:\Program Files\AutoIt3\SciTE



<secret><liste><puce><gras>Répertoire api</gras>
      Répertoire dans lequel on peut rajouter la liste des commandes d'un langage, afin d'avoir l'auto-complétion du code.</puce><puce><gras>Répertoire AutoIt3Wrapper</gras>
      Répertoire qui contient le fameux Resource Hacker, et les outils qui vont bien pour modifier les ressources de votre exe à la compilation.
      Notez au passage que le fichier Directives.au3 contient la liste des directives exploitables dans la saisie de votre code pour agrémenté votre compilation.</puce><puce>Répertoire AutoItMacroGenerator (CTRL+A dans Scite)
      Contient un utilitaire pour enregistrer des macros pour AutoIt (Et oui encore un).</puce><puce><gras>Répertoire CodeWizard (ALT+W dans Scite)</gras>
      Vous cherchez comment faire pour créer une MsgBox bien particulière, un SplashScreen, ou un InputBox à mot de passe, ou encore quel est le code pour telle couleur, etc ...
      Et bien CodeWizard est là.</puce><puce><gras>Répertoire cSnippet (CTRL+ALT+S dans Scite)</gras>
      Vous en avez marre de faire du copier coller de vos anciens scripts, pour récupérer des lignes de code que vous utilisez régulièrement.
      Code Snippet est là pour vous sauver la mise (Accessible aussi par le menu outil de Scite).

      Sélectionner votre code dans AutoIt, puis dans la fenêtre de Code Snippet cliquer sur le deuxième bouton (Copy from Scite), puis remplissez le champ Snippet Name (Le nom de votre bout de code), et classé le dans une catégorie.
      Pour finir de sauvegarder ce bout de code, un clique sur Save Snippet (En bas à gauche), et le tour est joué.

      Pour récupérer un code; deux cliques sur le code que vous désiré, puis 'Insert Into Scite'.</puce><puce><gras>Répertoire Defs</gras>
      Les définitions de Scite (Pour l'auto complétion, les abréviations, ...)
      Faire : Menu Options puis Ouvrir fichier d'abréviation, pour avoir la liste des abréviations disponibles.</puce><puce><gras>Répertoire FuncPopUp (Shift +F1 Dans Scite)</gras>
      Affiche les explications des fonctions disponibles en cour de frappe, ou à la sélection.</puce><puce><gras>Répertoire GUIBuilder</gras>
      Utilitaire pour créer une GUI avec ses contrôles (Préférer Koda).</puce><puce><gras>Répertoire Koda (ALT+M dans Scite)</gras>
      Utilitaire pour créer une GUI avec ses contrôles,dans le style des meilleurs logiciel de développement.
      Je ne détaillerais pas dans ce post l'utilisation de Koda, car il est tellement complet, que ce serait bien trop long.</puce><puce><gras>Répertoire Obfuscator</gras>
      Utilitaire qui permet de rendre le code AutoIt quasiment illisible pour un être humain, mais tout à fait fonctionnel pour la machine.
      Cet utilitaire était destiner à la base, à rendre un code décompiler inexploitable par une personne tiers.
      Obsolète pour des scripts compilés après la version 3.2.5.1.</puce><puce><gras>Répertoire OrganizeIncludes</gras>
      Utilitaire qui est sensé analyser votre code, pour voir si vous n'avez pas oublié les Includes nécessaires (Pas tester).</puce><puce><gras>Répertoire ScriptWriter</gras>
      Utilitaire de création de macro (Le troisième).
      Cela dit, ScriptWriter possède des fonctions uniques, que les autres n'ont pas.</puce><puce><gras>Répertoire Tidy (CTRL+T Dans Scite)</gras>
      Déjà vu précédemment.</puce></liste></secret>


Voilà pour ce petit tour d'horizon des utilitaires fournis avec Scite4AutoIt.
Je n'ai pas décrit toutes les fonctionnalités supplémentaires, que vous trouverez entre autre dans le menu options, mais n'hésitez pas à les testées, et à fouiller.

Vous constatez que ce produit est riche, et surtout complet.
Alors n'hésitez pas à l'installer avec AutoIt, car il vous rendra bien des services. :diable:]]>
		    </texte>
		  </souspartie>
		
	      </sousparties>
	      
	      <conclusion>
		<![CDATA[]]>
	      </conclusion>
	    </chapitre>
	  
	</chapitres>
	<conclusion>
	  <![CDATA[Maintenant, tout est bien qui finit bien  :p]]>
	</conclusion>
      </partie>
    
  </parties>
  <conclusion>
    <![CDATA[Maintenant, vous avez tout pour voler de vos propres ailes.
Je crois que le moment est venu... de se quitter  :'( .
Mais, n'oubliez pas, si lors de votre progression quelque chose vous pose problème , on peut toujours se revoir sur le forum d'entraide de la <lien url="http://autoitscript.fr">communauté Française d'Autoit</lien>.

<position valeur="centre"><gras><barre>Adieu !</barre>  Au revoir !</gras></position>]]>
  </conclusion>
</bigtuto>
