<?xml version="1.0" encoding="utf-8"?>
<bigtuto id="56261" generator="zEditor">
	<titre>
	<![CDATA[La programmation avec Autoit]]>
	</titre>
	<avancement>
	<![CDATA[50]]>
	</avancement>
	<licence>
	<![CDATA[6]]>
	</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 d'Autoit.

C'est parce qu'il existe très peu de tutoriels complets sur le web que nous avons décidé de créer un tutoriel complet pour les nouveaux utilisateurs.

Tout D'abord, Autoit est un langage très 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 de 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 qu'elle 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 </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 l'appui sur des touches de votre clavier (ce langage est à la base conçu pour cela)</puce>
<puce>Possibilité de simuler des mouvements, clics et des sélections avec la souris (ce langage est à la base conçu pour cela)</puce>
</liste>

Envie d'essayer ? C'est gratuit et la progression est rapide. 

Suivez le guide! :magicien:]]>
	</introduction>
	<parties>
		<partie id="56262">
		<titre>
		<![CDATA[Bien commencer : Les Bases]]>
		</titre>
		<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>
		<avancement>
		<![CDATA[30]]>
		</avancement>
		<difficulte>
		<![CDATA[1]]>
		</difficulte>
			<chapitres>
				<chapitre id="56263">
					<titre>
					<![CDATA[Autoit, enfin!]]>
					</titre>
					<avancement>
					<![CDATA[100]]>
					</avancement>
					<difficulte>
					<![CDATA[0]]>
					</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="56264">
							<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'embuches, c'est devenu un langage capable de supporter les expressions complexes, les UDF (fonctions crées par les utilisateurs), les boucles, et tout ce que 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 (c'est à dire creer un executable qui sera compris par tous les ordinateurs sans aucune installation préalable. Les Executables ont une extension en .exe) un programme très facilement.

L'avantage 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 noyeau Linux. Il a été concu 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="56265">
							<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> super programmateur a creé un Programme D'Installation Francais 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 ? :-°
Autoit est compatible avec Windows 95, 98, ME, NT 4 dans sa version antérieure à la v3.2.12 qui peut être téléchargé <b><lien url="http://www.autoitscript.com/autoit3/files/archive/">ici</lien></b>, et avec Windows 2000, XP, 2003, Windows Vista et Windows Server 2008 pour les nouvelles versions.



Si votre OS est dans la liste, 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ébugage, 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 Francais (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> Ajout de l'addon OrganizeInclude (faire SHIFT+CTRL+ALT+I sous scite).</puce>
    <puce> Mise à jour de la dernière version de Koda.</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 dans les UDF Date.au3 et GuiMonthCal.au3.</puce>

</liste>
<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 (15Mo).</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» apparait normalement dans vos programmes...


]]>
							</texte>
						</souspartie>
						<souspartie id="56266">
							<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é Scite4Autoitv3. Faites un bon en arrière et téléchargez le, c'est ultra-utile.

<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.</attention>

Cliquer ici pour acceder à la présentation des Outils


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>
						<souspartie id="56267">
							<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.
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 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 guand 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 rapidements 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>
						<souspartie id="56268">
							<titre>
							<![CDATA[Votre premier script]]>
							</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>
<liste>
<puce>Pour commencer, ouvrez un dossier dans lequel vous désirez créer votre script. Faites un clic droit dans le dossier et sélectionnez Nouveau puis AutoIt v3 Script.</puce>
<image>uploads/fr/files/133001_134000/133543.png</image>
<puce>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.</puce>
<image>uploads/fr/files/133001_134000/133544.png</image>

<puce>Maintenant que nous avons créé le fichier que nous voulons l'éditer afin d'en faire quelque chose d'utile. Faites un clic droit sur helloworld.au3 et sélectionnez Edit Script. </puce>
<image>uploads/fr/files/133001_134000/133548.png</image>
<puce>L'éditeur SciTE s'ouvrira et vous verrez quelque chose comme ceci :</puce>
<image>uploads/fr/files/133001_134000/133545.png</image>

<puce>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.</puce>
</liste>

<information><gras>;</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 commentaire ou plus fréquement <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> si vous avez beaucoup de texte à commenter.
<liste>
<puce>Maintenant, nous allons dire à AutoIt d'afficher une boite de dialogue - Pour cela nous allons utiliser la fonction <gras>MsgBox</gras>.</puce>

<puce>En dessous des lignes de commentaires, tapez ceci :</puce>


<code type="vbnet">
MsgBox(0, "Tutoriel", "Hello World!")
</code>
 

<puce>Toutes les fonctions ont des paramètres, MsgBox en a trois - un flag (indicateur), un titre et un message. Le flag est un nombre qui change la manière d'afficher la MsgBox - nous utiliserons 0 pour l'instant. Le titre et le message sont tous deux une String (chaîne de caractères) - quand on utilise des Strings dans AutoIt il faut encadrer le texte avec de simples (Apostrophe) ou doubles guillemets. "Ceci est du texte" ou 'Ceci est du texte' - les deux fonctionneront parfaitement.</puce>

<information><gras>Astuces : </gras>
pour inclure une apostrophe dans une chaîne encadrée par des guillemets simple, il faut la doubler.
<code type="vbnet">
MsgBox(0, "Tutoriel", 'Ceci est une partie d''un texte')
</code>
pour inclure des doubles guillemets dans une chaîne encadrée par des guillemets doubles, il faut le doubler.
<code type="vbnet">
MsgBox(0, "Tutoriel", MsgBox(0,"", "Avec AutoIt c'est ""simple"""))
</code></information>

<puce>Maintenant enregistrez le script et quittez l'éditeur. Vous venez d'écrire votre tout premier script AutoIt ! 
Pour lancer, double-cliquez simplement sur le fichier helloworld.au3 (vous pouvez aussi faire un clic droit et sélectionner Run Script).</puce>

<puce>Vous devriez voir ceci :</puce>
<image>uploads/fr/files/133001_134000/133546.png</image>

<puce>Maintenant, examinons le paramètre flag pour la fonction MsgBox. Dans la page d'aide de AutoIt, nous pouvons voir différentes valeurs listées qui changent la manière d'afficher la MsgBox. La valeur 0 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.</puce>

<puce>Éditez le script (un clic de droite sur le fichier helloworld.au3, puis Edit Script), et remplacez le 0 par 64. Vous avez donc :
</puce>
<code type="vbnet">
MsgBox(64, "Tutoriel", "Hello World!")
</code>

<puce>Enregistrez le script puis lancez le (vous pouvez aussi appuyer sur F5 dans la fenêtre d'édition pour lancer le script à partir de l'éditeur) :</puce>
<image>uploads/fr/files/133001_134000/133547.png</image>

<puce>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.</puce>
<attention>Attention : Si vous voulez combiner plusieurs valeurs de flag, vous n'avez qu'à tout simplement additionner les valeurs souhaitées. Vous pouvez aussi les écrire comme ceci :
</attention>

<code type="vbnet">
MsgBox(4 + 32, "Tutoriel", "Vous allez bien ?")
</code>

</liste>
<information>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é, 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>]]>
							</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="56277">
					<titre>
					<![CDATA[[Théorie] Les Bases du langage [40%] Chapitre Important]]>
					</titre>
					<avancement>
					<![CDATA[50]]>
					</avancement>
					<difficulte>
					<![CDATA[0]]>
					</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 grâce juste pour que vous en baviez dans 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="56278">
							<titre>
							<![CDATA[Les Variables]]>
							</titre>
							<texte>
							<![CDATA[<question>Tout d'abord, c'est quoi une variable?</question>
Une variable est un endroit ou l'on stock une donnée en mémoire afin de pouvoir y acceder 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 creer 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 ( De même pour une boîte aux lettres ), doit commencer par le caractère $, et ne peut contenir que des lettres, des nombres et le caractère _ .

Par exemple:

    <couleur nom="rouge"><liste><puce>$var1</puce>
    <puce>$my_variable</puce>
   <puce> $ce_tuto_est_vraiment_genial</puce></liste></couleur>	

Quand vous creez une variable, son nom doit etre significatif . Si vous creez des centaines de variable dans un code est que vous ne savez pas se que représente chaque variable, vous pouvez abandonner :)


Il y a trois différentes méthodes pour déclarer une variable:
Une déclaration s'effectue grâce aux mots-clefs <gras>Dim</gras>, <gras>Global</gras> et <gras>Local</gras>

La différence entre Dim, Local et Global est leur portée dans le script :
<liste><puce>Dim = Portée locale si la variable n'existe pas déjà globalement (Dans ce cas ré-utilise la variable globale !).</puce>
<puce>Global = Force la création d'une variable de portée Globale.</puce>
<puce>Local = Force la création d'une variable de portée locale ou interne à une fonction.</puce></liste>
<titre2>Pour simplifier</titre2>

Dim = Création d'une variable (re-définissable) dont la valeur ce retrouve uniquement dans le script en cours (Cette variable ne peut être récupérée dans un Include, ou par un Include).

Local = 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).

Global = Création d'une variable (re-définissable) dont la valeur ce retrouve partout, y compris dans les Includes.

Vous pouvez ajouter le mot Const après Local, Global, ou Dim. Dans ce cas, la variable devient une constante, c'est à dire qu'elle ne changera jamais.



<titre1>Exemples</titre1>

<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>
Ici, on déclare les 2 variables $var1 et $myvariable</puce>

<puce><attention>Dans la plupart des langages,une Variable doit être déclarée. Cependant, avec Autoit, on peut s'en passer.</attention>
<couleur nom="rouge">$var1</couleur> = "create and assign"
On assigne une chaine de caractère à la variable $var1 sans l'avoir déclarée premièrement. Certaines personnes préfèrent les déclarations prealables pour rester habituer à ne pas les oublier.</puce>

<puce><couleur nom="bleu">Global Const</couleur> <couleur nom="rouge">$const1</couleur> = 1
La variable $const1 aura maintenant pour valeur 1 et tout le long du code elle ne  pourra pas en changer.</puce></liste>]]>
							</texte>
						</souspartie>
						<souspartie id="56279">
							<titre>
							<![CDATA[Les opérateurs & les conditions]]>
							</titre>
							<texte>
							<![CDATA[<titre1>Les Actions Sous Conditions</titre1>
<question>Comment fonctionnent les actions sous condition ?</question>

Un des piliers de la programmation 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
    ...
FINSI</code>
 

Toute la profondeur d'un programme est basée sur cette architecture.
En autoit on a :


<code>
If (proposition-à-verifier est vraie ou fausse) Then
    ; Actions à effectuer
 
Else
    ; Actions à effectuer
 
EndIf
</code>

<titre2>Afficher un message personnalisé en fonction du jour</titre2>


Essayez de faire ce programme tout seul, sinon voilà la solution : 

<liste type="1"><puce>On demande à l'utilisateur de rentrer le jour d'aujourd'hui</puce>
<puce>On récupère la variable $jour</puce></liste>

<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","Bonne semaine !")
    Else
        msgbox(0,"Tutorial","Comment se passe la semaine ?")
    EndIf
EndIf</code>


<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 "Bonne 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.

<titre1>Les Opérateurs</titre1>

Nous avons vu le = dans l'exemple précédent, mais il y'en a d'autres :

Image

<titre2>Exemple 1 :</titre2>
L'utilisateur doit rentrer le bon mot de passe pour lancer le programme.

Code:
<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>

<titre2>Exemple 2 :</titre2>
Notre programme vérifie si le nombre entré par l'utilisateur est bien positif ou nul.

Code:
<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 AND , OR.

<titre2>Exemple 3 :</titre2>
L'utilisateur doit rentrer un bon mot de passe parmi 2 possibles.

Code:<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 !")
Else
    MsgBox(0,"Tutorial", "Le mot de passe est correct !")
EndIf
</code>

<titre2>Exemple 4:</titre2>
Notre programme vérifie si le nombre entré par l'utilisateur est bien compris entre 0 et 10.

Code:<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>Astuce pour l'action sous Conditions
</titre1>
Si une proposition est dure à trouver, essayez la technique suivante : (lire attentivement, ce n'est pas forcement très clair à la première lecture:))
Vous n'arrivez pas à trouver la proposition (1) à mettre pour que l'action s'effectue,
essayez alors de trouver la proposition (2) à mettre pour que l'action NE s'effectue PAS
Il suffira alors d'un peu d'astuce pour trouver la (1) à partir de la (2)

<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 fournit par l'utilisateur correspond à l'un des 2 mots de passes enregistrés dans le programme.

On aurait donc la proposition suivante : If ( ($input = $pass1) OR ($input = $pass2) ) )(2)
Cette proposition peut être plus facile à trouver.

La proposition (1) se trouve en inversant la (2), en utilisant la correspondance suivante :

Image

( ($input = $pass1) OR ($input = $pass2) ) (2) ==> ( ($input <> $pass) AND ($input <> $pass1) ) (1)
On retrouve bien notre proposition

On aurait donc pu écrire notre exemple 3 de la manière suivante :

Code:
<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>]]>
							</texte>
						</souspartie>
						<souspartie id="56280">
							<titre>
							<![CDATA[Les Boucles]]>
							</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:
<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 : 0,1,2,3,4,5,6,7,8,9,10 successivement.

<question>Et si je ne veux afficher que 0,2,4,6,8 10, je fais comment?</question>
Il suffit de rajouter un "Step 1" à la fin de la ligne For 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 ;))
Tres 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 apparaitra... Magique? Non! (Oh,Oh,Oh, It's Magic, you know...)

Finis? Ca devrait ressembler à quelque chose comme ca:

Code:


<code>$depart = InputBox("Tutorial", "Entrez un nombre :")
 
For $i = $depart To 1 Step -1
    MsgBox(0,"Tutorial", $i)
Next
MsgBox(0,"Tutorial", "ZERO !")</code>


<titre1>Boucle de type "Tant que" :</titre1>

<question>What is this?</question>

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:
<code>Tant que (condition est vraie)

     On effectue ces actions

Fin</code>


Ce qui se traduit en Autoit par :

Code:
<code>While (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 ;)

<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:
<code>While ( $quitter <> 1 )
 
    ;Actions du programme
 
WEnd</code>
 

Très souvent, on va utiliser une boucle sans fin, c'est à dire que theroriquement elle ne s'arretera jamais.
Pour faire une boucle sans fin, on peut déclarer une boucle tant-que de la manière suivante :

Code:
<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 If Valables (Cf Actions Sous Conditions) Va faire différentes Actions.

<information>Ne Copiez Pas tel quel le code ci-dessus, en effet, le programme va surement 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 pleindre! Pour Info, </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 conseille de faire  une pause après), mais voilà le code que j'ai utilisé afin de savoir combien de tours faisaient 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. Ces derniers s'utilisent de cette manière:
Quand on le veux, on Initialise le temps. Puis On demande par une boucle le temps ecoulé depuis l'initialisation. Si vous ne voulez pas tout retenir, ne retenez pas ca.
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 litteralement 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écedant.

<question>Et alors , c'est pas 10 malheureuses milli-secondes 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 liberer de la puissance pour l'ordinateur en restant tout à fait competitif. Ne vous inquietez pas, l'utilisateur ne va pas s'apercevoir du changement, mais l'ordinateur si!
Donc, à partir de maintenant, vous allez me faire 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" de cette manière :</titre2>

Code:
<code>$i = <valeur de départ>
While ($i <> <valeur d arrivée>)
 
    ;actions à effectuer
 
    $i = $i + <pas>
WEnd</code>


<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 inconnu, mais que l'action doit être effectuée AU MOINS une fois.
<titre2>Fonctionnement :</titre2>
Code:
<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 reels 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>
						<souspartie>
							<titre>
							<![CDATA[Les Fonctions]]>
							</titre>
							<texte>
							<![CDATA[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 paremè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>

<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 :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-clé 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>
						<souspartie id="56281">
							<titre>
							<![CDATA[Les Macros]]>
							</titre>
							<texte>
							<![CDATA[AutoIt utilise un certain nombre de Macros qui sont des variables spéciales en lecture seule.  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, 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ée.</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 @CRLF afin de revenir à la ligne, ainsi qu'un nouveau moyen 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 :      '& _ '
]]>
							</texte>
						</souspartie>
					</sousparties>
					<conclusion>
					<![CDATA[Je crois qu'après tant d'efforts vous méritez une petite récompense ...
 
Vous méritez que je vous parle d' une petite fonction s'intitulant  <code>
Beep ( [ Frequency [, Duration ]] )
</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, 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="56285">
					<titre>
					<![CDATA[[Pratique] TP: Automatisation de l'Installation de Winzip  [10%] Je m'en occupe ce week-end]]>
					</titre>
					<avancement>
					<![CDATA[25]]>
					</avancement>
					<difficulte>
					<![CDATA[0]]>
					</difficulte>
					<introduction>
					<![CDATA[Ce Tp tout simple va vous permettre d'automatiser l'installation de Winzip. Ceci me permettra de vous apprendre à vous servir d'un outil installé avec Autoit Genial: Autoit Windows Info.]]>
					</introduction>
					<sousparties>
						<souspartie id="56286">
							<titre>
							<![CDATA[Ce dont vous aurez besoin]]>
							</titre>
							<texte>
							<![CDATA[]]>
							</texte>
						</souspartie>
						<souspartie id="56287">
							<titre>
							<![CDATA[Correction]]>
							</titre>
							<texte>
							<![CDATA[]]>
							</texte>
						</souspartie>
					</sousparties>
					<conclusion>
					<![CDATA[Vous avez Réussi? Bravo ! Maintenant on va pouvoir analiser un code !
Le but est que vous commenciez par prendre les bonnes habitudes ]]>
					</conclusion>
				</chapitre>
				<chapitre id="56269">
					<titre>
					<![CDATA[[Théorie] Analisons un script de base [A Tlem ]QCM non créé mais plus que necessaire]]>
					</titre>
					<avancement>
					<![CDATA[50]]>
					</avancement>
					<difficulte>
					<![CDATA[0]]>
					</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, à 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="56270">
							<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 type="vbnet">
; ----------------------------------------------------
; -------------------- 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="56271">
							<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
; Autheur    :        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 plate-forme 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 dis 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 lorsques 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 passé aux choses sérieuses... (Ou pas :ange: )]]>
							</texte>
						</souspartie>
						<souspartie id="56272">
							<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 icone, 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 cliquer 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>

Les explications sont incluses dans le texte sous forme de commentaire (; Le commentaire).

<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="56273">
							<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.

Toute 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écedant, ceci ne devrait pas vous poser trop de problèmes pour l'instant.]]>
							</texte>
						</souspartie>
						<souspartie id="56274">
							<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 ce faire, on crée d'abord la fenêtre principale, puis on rajoute les différents éléments à utilisés.

Pour vous aider, un très bon addon à été ajouter : 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 ce 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 ###

Ce code vous affichera une fenêtre vide, du nom de : Form1.

- La première ligne indique que nous allons utiliser des fonctions de l'UDF : GUIConstants.au3.

- 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).

- La troisième ligne se compose de deux choses :
$Form1, qui récupère le handle de la fenêtre et l'instruction de la création de la fenêtre.
Le fait de récupérer le handle de la fenêtre, nous permettra d'intervenir sur celle-ci plus tard dans le code.

- La quatrième ligne se compose aussi de deux choses :
$Button1, qui récupère le controlID (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 controlID du bouton, nous permettra d'intervenir sur celui-ci, ou d'intercepter des messages d'actions en provenance de celui-ci.

- La cinquième ligne est la commande qui affiche la GUI.
Vous pouvez grâce à cette commande, afficher ou masquer votre GUI.

- 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).*]]>
							</texte>
						</souspartie>
						<souspartie id="56275">
							<titre>
							<![CDATA[Section V boucle d'attente d'une action sur la GUI]]>
							</titre>
							<texte>
							<![CDATA[Section V : Boucle d'attente d'une action sur la GUI

Cette partie, est aussi 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 aillé 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

Nous avons donc dans cette section une boucle While / WEnd dans laquelle, on vient lire les messages venant de l'interface graphique par la commande GUIGetMsg(), et on attribue cette valeur, à la variable $Msg.
A chaque retour de boucle (WEnd), on recommence à lire GUIGetMsg(), et ainsi de suite.

A l'intérieur de cette boucle While / WEnd, nous utilisons la fonction Switch / EndSwitch pour faire une action en fonction de la valeur de $Msg (Nous aurions pu aussi utiliser la fonction : Select / EndSelect)
Switch $Msg permet de dire au programme : Selon la valeur de $Msg, traite le cas (Case) concerné.

Autrement dit :
- 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.

- Si vous cliquez sur le bouton Ok, alors la valeur de retour de GUIGetMsg() est $Button1, et donc la boucle effectue donc le traitement de Case $Button1, qui est en l'occurrence, l'affichage d'une boite de dialogue "Info".


Il existe une autre méthode de traitement, qui consiste à gérer les actions sur l'interface selon une mode dit : Événementiel.
Ne maîtrisant pas cette partie, je laisserais le soin à d'autres de fournir les explications nécessaires.]]>
							</texte>
						</souspartie>
						<souspartie id="56276">
							<titre>
							<![CDATA[Section VI Définition des fonctions utilisées dans le script]]>
							</titre>
							<texte>
							<![CDATA[Section VI : Définition des fonctions utilisées dans le script

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 revenir faire la suite du script (Comme un Call en Batch pour ceux qui connaisse).
Une fonction peut être appelée de n'importe ou dans le script, et revenir à l'endroit ou l'on étais pour exécuter la suite du code (Si on est pas sortit du code entre temps).

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 ###################

Je ne détaillerais pas la fonction Fin() car elle est suffisamment commentée.

Ce qu'il faut retenir, c'est que si on a besoin de faire une tache 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.]]>
							</texte>
						</souspartie>
					</sousparties>
					<conclusion>
					<![CDATA[Voilà, maintenant vous n'avez plus aucune excuse pour presenter un script propre et lisible.
Ne lésignez 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 les bonnes habitudes tout de suite.
]]>
					</conclusion>
				</chapitre>
				<chapitre id="56288">
					<titre>
					<![CDATA[[Pratique] TP: Le Jeu Du Plus ou Moins]]>
					</titre>
					<avancement>
					<![CDATA[25]]>
					</avancement>
					<difficulte>
					<![CDATA[0]]>
					</difficulte>
					<introduction>
					<![CDATA[]]>
					</introduction>
					<sousparties>
						<souspartie id="56289">
							<titre>
							<![CDATA[Présentation Du Jeu]]>
							</titre>
							<texte>
							<![CDATA[]]>
							</texte>
						</souspartie>
						<souspartie id="56290">
							<titre>
							<![CDATA[Ce dont vous aurez besoin]]>
							</titre>
							<texte>
							<![CDATA[]]>
							</texte>
						</souspartie>
						<souspartie id="56291">
							<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

    * Premièrement, notre programme devra tirer un nombre au hasard.
    * On va répéter ces actions tant que l'utilisateur n'a pas trouvé le bon nombre
          o Il demande à l'utilisateur un nombre
          o Si le nombre entré est supérieur au nombre caché, on l'indique à l'utilisateur
          o Si le nombre entré est inférieur au nombre caché, on l'indique à l'utilisateur


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="56292">
							<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 !]]>
							</texte>
						</souspartie>
						<souspartie id="56293">
							<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. Code : Console

      	

      Vous avez trouve le nombre cache en 8 coups !


    * Demandez à l'utilisateur s'il veut recommencer le jeu.
    * Demandez donc à l'utilisateur la valeur maximale que peut prendre le nombre mystère. Cela pourra augmenter (ou bien diminuer) la difficulté.]]>
							</texte>
						</souspartie>
						<souspartie id="56294">
							<titre>
							<![CDATA[Une facon de coder le jeu]]>
							</titre>
							<texte>
							<![CDATA[]]>
							</texte>
						</souspartie>
					</sousparties>
					<conclusion>
					<![CDATA[]]>
					</conclusion>
				</chapitre>
			</chapitres>
		<conclusion>
		<![CDATA[]]>
		</conclusion>
		</partie>
		<partie id="56305">
		<titre>
		<![CDATA[L'Interface graphique (GUI)]]>
		</titre>
		<introduction>
		<![CDATA[]]>
		</introduction>
		<avancement>
		<![CDATA[0]]>
		</avancement>
		<difficulte>
		<![CDATA[0]]>
		</difficulte>
			<chapitres>
			</chapitres>
		<conclusion>
		<![CDATA[]]>
		</conclusion>
		</partie>
		<partie id="56295">
		<titre>
		<![CDATA[Quelques Approfondissements]]>
		</titre>
		<introduction>
		<![CDATA[]]>
		</introduction>
		<avancement>
		<![CDATA[0]]>
		</avancement>
		<difficulte>
		<![CDATA[0]]>
		</difficulte>
			<chapitres>
				<chapitre id="56296">
					<titre>
					<![CDATA[[Théorie] Fonctions utiles]]>
					</titre>
					<avancement>
					<![CDATA[0]]>
					</avancement>
					<difficulte>
					<![CDATA[0]]>
					</difficulte>
					<introduction>
					<![CDATA[]]>
					</introduction>
					<sousparties>
						<souspartie id="56297">
							<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>
						<souspartie id="56298">
							<titre>
							<![CDATA[Simuler l'appui d'une touche sur le clavier]]>
							</titre>
							<texte>
							<![CDATA[La simulation de frappes de clavier avec AutoIt utilise la fonction Send

Que peut-faire cette fonction ?
simuler toutes les touches du clavier, donc toutes les lettres/chiffres/caractères spéciaux mais également simuler des combinaisons de touches (ex : "CTRL + C" pour copier)

Send peut également simuler des touches optionnelles sur les claviers, que vous n'avez peut-être pas comme augmenter le volume, contrôler le media player, etc..

L'utilisation peut se faire touche par touche, mais également avec tout un texte :

Code:
Send("b")
Send("o")
...
Send("Bonjour comment ça va ?")



Pour faire les combinaisons de touches les commandes à utiliser sont un peu différentes :
! : remplace ALT dans une combinaison (exemple : Send("!f") fera ALT+f)
^ : remplace CTRL dans une combinaison (exemple : Send("^c") fera CTRL+C (copier))
+ : remplace SHIFT
# : remplace la touche Windows (placée entre CTRL et ALT)

pour écrire un point d'exclamation, comment faire puisque cela fait une combinaison ?
il suffit de le mettre entre accolades : {!}, pareil pour {^},{+},{#}

Liste des commandes les plus utilisées :
(pour le reste aller dans l'aide Autoit et faire une recherche de "Send")
ce qui est indiqué en dessous doit être mis entre les guillemets : Send("")


{TAB} : touche TAB
{ENTER} : Touche ENTREE
{UP}, {DOWN}, {LEFT}, {RIGHT} : Flèches
{BS} : Backspace
{F1} - {F12}
{LWIN} : Touche Windows gauche.

voici un petit script utilisant à peu près tout ce que l'on vient de voir :

Code:
Run ( "notepad.exe" ) ; Lance le bloc note
 WinWaitActive ( "Sans titre - Bloc - notes" ) ; Attend que la fenêtre nommée "Sans titre - Bloc - notes" apparaisse
 
 Send ( "Texte à copier" ) ; Tape le texte : "Texte à copier"
 Sleep ( 500 ) ; Ne fait rien pendant 500ms pour que le script ne soit pas trop rapide
 
 Send ( "^a" ) ; Appuie sur CTRL + a ( selectionne tout )
 Sleep ( 500 )
 Send ( "^c" ) ; Appuie sur CTRL + c ( copie la sélection )
 Sleep ( 500 )
 
 Send ( "{RIGHT}" ) ; Appuie sur la flèche de droite, pour remettre le curseur au bout de la ligne
 Sleep ( 500 )
 
 Send ( "{ENTER}" ) ; Appuie sur ENTREE pour passer à la ligne suivante
 sleep ( 500 )
 
 Send ( "^v" ) ; Appuie sur CTRL + v ( colle )
 Sleep ( 500 )
 
 Send ( "{ENTER}" ) ; Appuie sur ENTREE pour aller à la ligne
 Sleep ( 500 )
 
 Send ( "La date et l'heure sont : {F5}" ) ; Tape le texte "La date et l'heure sont :", puis appuie sur F5 ( F5 est une fonction du bloc note qui insère la date et l'heure )
 Sleep ( 500 )
 
 Send ( "!f" ) ; Appuie sur ALT + f : ouvre le fichier menu
 Sleep ( 500 )
 
 Send ( "q" ) ; Appuie sur q : pour Quitter
 Sleep ( 500 )
 
 Send ( "n" ) ; Appuie sur n ( ne pas sauvegarder )]]>
							</texte>
						</souspartie>
						<souspartie>
							<titre>
							<![CDATA[Simuler les mouvements de la souris]]>
							</titre>
							<texte>
							<![CDATA[La simulation des mouvements et clics de souris par Autoit peuvent s'avérer plus délicats que les frappes de clavier dans la mesure où les coordonnées ne sont pas absolues et varient d'un ordinateur à l'autre, en fonction de la taille de l'écran, de la résolution.
Le principe reste tout de même très simple.

2 fonctions seront utilisées principalement : MouseClick et MouseMove.

MouseMove sert à bouger la souris sans cliquer.
L'aide nous indique comment utiliser la fonction :

MouseMove ( x, y [, speed] )
x est la coordonnée horizontale à atteindre
y la coordonnée verticale à atteindre
Pour connaître les coordonnées d'un point sur votre écran, nous utiliserons l'outil fournit par AutoIt : "Autoit Window Info", dans l'onglet "Mouse"

Speed se trouve entre crochets, cela signifie qu'il est optionnel.
Dans le cas où vous ne le spécifiez pas, Autoit utilisera la valeur par défaut, c'est-à-dire 10, qui correspond à une vitesse proche de laquelle un humain bouge la souris.
Speed peut varier de 0 à 100. 0 est un mouvement instantané alors que 100 est très lent.


La fonction MouseClick est beaucoup plus utile car elle bouge la souris à x,y puis clic à cet endroit. Si vous devez cliquer, la fonction MouseMove ne vous servira à rien, car MouseClick assure le mouvement et le clic.

L'aide nous indique que MouseClick s'utilise de la manière suivante :
MouseClick ( "button" [, x, y [, clicks [, speed ]]] )

Seul le paramètre "button" n'est pas optionnel.

"button" doit être remplacé par "left" pour un clic gauche, "right" pour un clic droit et "middle" pour un clic de la molette.

x et y sont les coordonnées à atteindre avant de faire le clic, si non précisées le clic se fait à la position actuelle de la souris.

Clicks doit être remplacé par un nombre et correspond au nombre de clics à faire. 1 par défaut

Speed est la vitesse de la souris (0 instantané à 100 très lent) avec 10 comme valeur par défaut.

Exemple :
Code:
MouseClick("left", 367, 62, 1, 5)

Va cliquer (pour moi) 1 fois dans la barre d'adresse de Firefox avec une vitesse de 5.


Enfin une dernière fonction moins utilisée va permettre de faire une sélection par exemple
MouseClickDrag ( "button", x1, y1, x2, y2 [, speed] )

Exemple :
A utiliser sur le bureau :
Code:
MouseClickDrag ( "left", 0, 0, @DesktopWidth, @DesktopHeight )

Va sélectionner tout ce qu'il y a sur le bureau à une vitesse de 10.]]>
							</texte>
						</souspartie>
					</sousparties>
					<conclusion>
					<![CDATA[]]>
					</conclusion>
				</chapitre>
				<chapitre id="56299">
					<titre>
					<![CDATA[Chapitre3]]>
					</titre>
					<avancement>
					<![CDATA[0]]>
					</avancement>
					<difficulte>
					<![CDATA[0]]>
					</difficulte>
					<introduction>
					<![CDATA[]]>
					</introduction>
					<sousparties>
						<souspartie id="56300">
							<titre>
							<![CDATA[SousPartie10]]>
							</titre>
							<texte>
							<![CDATA[]]>
							</texte>
						</souspartie>
						<souspartie id="56301">
							<titre>
							<![CDATA[SousPartie11]]>
							</titre>
							<texte>
							<![CDATA[]]>
							</texte>
						</souspartie>
					</sousparties>
					<conclusion>
					<![CDATA[]]>
					</conclusion>
				</chapitre>
				<chapitre id="56302">
					<titre>
					<![CDATA[Chapitre4]]>
					</titre>
					<avancement>
					<![CDATA[0]]>
					</avancement>
					<difficulte>
					<![CDATA[0]]>
					</difficulte>
					<introduction>
					<![CDATA[]]>
					</introduction>
					<sousparties>
						<souspartie id="56303">
							<titre>
							<![CDATA[SousPartie12]]>
							</titre>
							<texte>
							<![CDATA[]]>
							</texte>
						</souspartie>
						<souspartie id="56304">
							<titre>
							<![CDATA[SousPartie13]]>
							</titre>
							<texte>
							<![CDATA[]]>
							</texte>
						</souspartie>
					</sousparties>
					<conclusion>
					<![CDATA[]]>
					</conclusion>
				</chapitre>
			</chapitres>
		<conclusion>
		<![CDATA[]]>
		</conclusion>
		</partie>
		<partie id="57077">
		<titre>
		<![CDATA[Annexes]]>
		</titre>
		<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>
		<avancement>
		<![CDATA[50]]>
		</avancement>
		<difficulte>
		<![CDATA[2]]>
		</difficulte>
			<chapitres>
				<chapitre id="57084">
					<titre>
					<![CDATA[Présentation des Outils]]>
					</titre>
					<avancement>
					<![CDATA[0]]>
					</avancement>
					<difficulte>
					<![CDATA[2]]>
					</difficulte>
					<introduction>
					<![CDATA[]]>
					</introduction>
					<sousparties>
						<souspartie id="57087">
							<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. N'oubliez pas, si lors de votre progression quelque chose vous pose problème , un forum d'entraide est à votre disposition.]]>
	</conclusion>
</bigtuto>
