Oui mais si j'ai une centaine de fonctions dans mon script, je ne vais pas me casser la tête à toutes les copier/coller dans mon script !!!
Eh bien, les
#include sont là pour ça !!! Je vais commencer par vous montrer que vous savez pratiquement déjà utiliser un include.
Créez tout d'abord un nouveau script .au3, dans lequel vous mettrez uniquement votre fonction. Un exemple visuel, on crée notre fichier
fonctions.au3, il contient ce code :
Code : Autre1
2
3
| Func calcule_minutes()
Return (@Hour*60)+@Min
EndFunc |
Ce code ne devrait pas poser de problèmes. La fonction n'a besoin d'aucun paramètre pour fonctionner. Le Return permet de retourner une valeur, qui ici est @Hour, une macro qui retourne l'heure multipliée par 60 et additionée à @Min qui retourne la minute. En gros, s'il est 16h59, la fonction nous retourne le nombre de minutes soit 16 * 60 + 59 = 1019 minutes.
Maintenant, on va utiliser cette fonction dans notre script principal. On aurait pu mettre cette fonction directement dans le script principal, mais imaginez que vous souhaitez coder une grosse application, vous risquez de vous perdre parmi vos quelques 100 fonctions. Si vous regroupez par exemple toutes les fonctions concernant la date dans un fichier, toutes les fonctions concernant les fichiers d'un autre, vous vous y retrouverez plus facilement.
Vous enregistrez la fonction dans le dossier de votre choix, puis vous mettez au début de votre script principal ceci :
#include "Chemin d'accès de la fonction\fonctions.au3"
Ensuite, vous pouvez appeler à tout moment dans votre script principal les fonctions présentes dans le fichier fonctions.au3, comme si elles étaient dans votre script. Pour vous expliquer, lors de l'exécution de votre programme, Autoit va simplement copier/coller toutes vos fonctions incluses grâce à #include en haut de votre script.
En bref, les includes servent à rendre votre script plus court en séparant les fonctions de votre script principal, qui a besoin du fichier pour marcher. En effet, si vous supprimez le fichier fonctions.au3, alors votre script principal ne marchera plus.
Les UDF
Il existe bien entendu des librairies déjà écrites, comme en C++ ou en Java, qui sont des listes de fonctions déjà écrites par les développeurs d'Autoit, et c'est ce que nous appelons UDF. Un UDF est un regroupement de plusieurs fonctions très utiles que certains développeurs ou utilisateurs d'Autoit ont partagé pour éviter que vous ayiez à les réécrire.
Ces UDF (User Defined Functions) sont des fichiers .au3 contenant une multitude de fonctions et il vous suffira d'inclure ce fichier pour utiliser la fonction. Les librairies de base d'Autoit sont déjà inclues dans votre code. Par exemple, en C, vous avez pris l'habitude de toujours inclure les Includes de bases.
Code : C | #include <stdio.h>
#include <stdlib.h>
|
En Autoit, tout est déjà fait. C'est pour cela que vous avez pu utiliser
MsgBox et
InputBox par exemple sans vous soucier de savoir d'où elles venaient.
Par exemple, si on regarde dans le dossier
include\ de l'installation Autoit (Pour la plupart : C:\Program Files\AutoIt3\Include\) on voit plusieurs fichiers .au3 qui sont remplis de fonctions. Il y a 2 sortes de fichiers, ceux qui ont 'constant' écrit dans leur nom, et les autres. Les premiers nous sont pour l'instant inutiles, vous pouvez les ouvrir vous verrez qu'ils ne comportent que des déclarations de variables en Global, ils servent en fait pour construire des interfaces utilisateurs (vous verrez comment dans la deuxième partie de ce tutoriel).
Les autres sont plus intéressants. Je vous propose d'ouvrir le fichier
String.au3 qui comme vous pouvez le penser contient
les différentes culottes répertoriées à ce jour les fonctions de "chaîne de charactère".
Vous voyez qu'il contient 9 fonctions, très bien documentées, avec le nom de leur auteur.
Citation : String.au3;_HexToString
;_StringBetween
;_StringEncrypt
;_StringExplode
;_StringInsert
;_StringProper
;_StringRepeat
;_StringReverse
;_StringToHex
J'ai choisi de vous montrer _StringBetween qui est très utile. Si vous avez compris ce que j'ai raconté plus haut, le code qui suit ne devrait pas vous poser de problèmes:
Code : Autre1
2
3
4
5
6
7
8
9
| #include <String.au3>
#include <Array.au3>
_Main()
Func _Main()
Local $aArray1 = _StringBetween('[18][20][3][5][500][60]', '[', ']')
_ArrayDisplay($aArray1, 'Default Search')
EndFunc ;==>_Main |
Ce code utilise 2 includes, le premier
String.au3 qui contient la fonction
_StringBetween comme vous venez de le voir, et
Array.au3 qui contient
_ArrayDisplay
N'hesitez pas à aller voir l'aide pour voir comment marche _StringBetween et _ArrayDisplay
Vous remarquerez que j'ai utilisé les signes <> pour include Array.au3, alors qu'auparavant j'ai utilisé "". La raison est simple : quand vous incluez des UDF contenus dans l'installation d'Autoit, vous utilisez <> pour annoncer à Autoit que le fichier est dans le dossier /includes/ de son installation. En utilisant "", Autoit prend le chemin courant, c'est-à-dire qu'il part de l'emplacement du script. Si votre fichier à inclure est au même emplacement que votre script principal, vous utiliserez donc "". Pour tous les includes basiques, vous utiliserez <>.
Utilisation d'UDF
Les UDFs sont relativement nombreux et permettent des choses diverses et variées, comme par exemple :
- modifier rapidement des images ;
- établir des connexions réseau abouties (serveur/client) ;
- modifier intelligemment la base de registres ;
- déterminer toutes les caractéristiques d'un ordinateur en réseau ;
- redémarrer votre LiveBox (et oui, tout peut exister
) ;
- récupérer les fichiers présents sur votre serveur de connexion privé (FreeBox, modem personnel, serveur...) ;
- créer des interfaces graphiques très abouties pour votre programme ;
- ajouter des animations de fenêtre à vos programmes ;
- envoyer automatiquement des mails ;
- détecter une insertion de périphériques
... et la liste est très longue ! Avec toutes les fonctions que certains programmeurs partagent sur le net, elle ne cesse de s'agrandir !
Par exemple, il existe une fonction très utile pour vérifier vos tableaux pendant le développement de votre application : _ArrayDisplay(). Elle affiche le contenu de votre Array. Vous constaterez que son nom commence par le signe _ . C'est une convention pour signifier qu'elle fait partie d'un UDF, vous avez deviné qu'il s'agit de <Array.au3>.
Elle accepte plusieurs paramètres mais un seul est obligatoire : le nom de la variable.
Vous pouvez tester l'exemple ci-dessous.
Code : Autre1
2
3
4
5
| #include <Array.au3>
Dim $Tableau[2][4] = [[1,3,5,7],[2,4,6,8]]
_ArrayDisplay($Tableau) |
Bien entendu, comme je vous l'ai montré en tout début de ce chapitre, vous pouvez créer vos UDF vous même, et certains francais ont essayés, et certaines de leur fonction sont souvent très utilisées.
Si cela vous intéresse, vous pouvez vous-même en télécharger quelques-unes via le lien suivant :
http://www.autoitscript.fr/forum/viewforum.php?f=21