Bonjour.
Mon tuto portera aujourd'hui sur les UDF's.
Mais d'abord, qu'est-ce que c'est un UDF ?
DESCRIPTION
Un UDF(User Defined Fonction), ça ressemble à ça :
;~ ================================================================================================
;~ Objet : Fonction _ColorClick
;~ Auteur : HabibSbib
;~ Contact : habibsbib@hotmail.fr
;~ Langue : Français
;~ Version : 1.0
;~ Licence : Aucune
;~ Année de production : 2009
;~ Description : Une fonction permettant de combler partiellement les lacunes du PixelSearch de la version 3.0 d'AutoIt.
;~ ================================================================================================
Func _ColorClick ($color, $button, $number, $speed)
$scan = 0
If (@DesktopWidth>@DesktopHeight) Then
Do
$coord = PixelSearch ($scan, 0, $scan, @DesktopHeight, $color)
If not @error Then
MouseClick ($button, $coord[0], $coord[1], $number, $speed)
Else
sleep(0)
EndIf
$scan+=2
Until ($scan=@DesktopWidth)
EndIf
If (@DesktopHeight>@DesktopWidth) Then
Do
$coord = PixelSearch ($scan, 0, $scan, @DesktopWidth, $color)
If not @error Then
MouseClick ($button, $coord[0], $coord[1], $number, $speed)
Else
sleep(0)
EndIf
$scan+=2
Until ($scan=@DesktopHeight)
EndIf
EndFunc
Func _Color_GetNumber($colorcheck, $format)
Global $getnumber
$scan = 0
If (@DesktopWidth>@DesktopHeight) Then
Do
$coord = PixelSearch ($scan, 0, $scan, @DesktopHeight, $colorcheck)
If not @error Then
$getnumber+=1
Else
sleep(0)
EndIf
$scan+=2
Until ($scan=@DesktopWidth)
EndIf
If (@DesktopHeight>@DesktopWidth) Then
Do
$coord = PixelSearch ($scan, 0, $scan, @DesktopWidth, $colorcheck)
If not @error Then
$getnumber+=1
Else
sleep(0)
EndIf
$scan+=2
Until ($scan=@DesktopHeight)
EndIf
$total_pixels=(@DesktopWidth*@DesktopHeight)
$getnumber_1 = ($getnumber/=$total_pixels)
$getnumber_2 = ($getnumber_1*=100)
Select
Case $format ="0"
Return $getnumber_2
Case $format = "1"
Return $getnumber
EndSelect
EndFunc
:shock: ...Sale tronche, pas vrai ^^
Un UDF, à la base, c'est un groupe de fonctions de même utilité générale, qui servent à de multiples tâches, comme par exemple :
- Modifier rapidement des images
- Etablir 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 vôtre programme
- Ajouter des animations de fenêtre à vios programems
- Envoyer automatiquement des mails
- Détecter une insertion de périphériques
... et la liste et très longue ! Avec toutes les fonctions que certains programmeurs partagent sur le NET, elle ne cesse de s'agrandir !
UTILISATION
Il vous suffit de le mettre en #include ! Oui, vous avez bien entendu !
Vous allez commencer par copier\coller le code sans SciTE. Vous l'enregistrez sous le nom "MyFunc.au3", puis vous placez ce fichier .au3 dans le dossier de votre script.
Il y a plusieurs manières d'appeler une fonction, mais je préfère vous la faire mettre en #include, pour plus d'originalité.
Voilà comment procéder. A la première ligne de votre script, vous avez l'habitude de déclarer vos #includes comme cela :
#include <GUIConstantsEX.au3>
...mais ce n'est pas comme cela que nous allons procéder ! Pour les UDF's intégrés à AutoIt, on indique seulement les petits croissants d'encadrement, cependant pour les focntions non-intégrées, on mettra le nom de la focntion entre guillemets, comme ceci :
Attention !!
En supposant que la fonction est située dans l'arborescence "C:\Scripts\Include\MyFunc.au3", et que votre script est dans le dossier "Scripts", alors indiquez :
#include "\Include\MyFunc.au3"
Autrement, mettez l'arborescence entière si la fonction n'est pas en dossier ou sous-dossier par rapport à votre script.
EXEMPLE
Un petit exemple d'une fonction que j'aime bien.
Vous avez sûrement déja créé une GUI, et dépprécié leur affichage brusque et violent à l'écran lors de leur création ?
_WinAnimate.au3 permet par exemple un affichage en fondu !
Un exemple :
#include <WindowsConstants.au3>
Global Const $AW_FADE_IN = 0x00080000 ;fade-in
Global Const $AW_FADE_OUT = 0x00090000;fade-out
Global Const $AW_SLIDE_IN_LEFT = 0x00040001 ;slide in from left
Global Const $AW_SLIDE_OUT_LEFT = 0x00050002 ;slide out to left
Global Const $AW_SLIDE_IN_RIGHT = 0x00040002 ;slide in from right
Global Const $AW_SLIDE_OUT_RIGHT = 0x00050001 ;slide out to right
Global Const $AW_SLIDE_IN_TOP = 0x00040004 ;slide-in from top
Global Const $AW_SLIDE_OUT_TOP = 0x00050008 ;slide-out to top
Global Const $AW_SLIDE_IN_BOTTOM = 0x00040008 ;slide-in from bottom
Global Const $AW_SLIDE_OUT_BOTTOM = 0x00050004 ;slide-out to bottom
Global Const $AW_DIAG_SLIDE_IN_TOPLEFT = 0x00040005 ;diag slide-in from Top-left
Global Const $AW_DIAG_SLIDE_OUT_TOPLEFT = 0x0005000a ;diag slide-out to Top-left
Global Const $AW_DIAG_SLIDE_IN_TOPRIGHT = 0x00040006 ;diag slide-in from Top-Right
Global Const $AW_DIAG_SLIDE_OUT_TOPRIGHT = 0x00050009 ;diag slide-out to Top-Right
Global Const $AW_DIAG_SLIDE_IN_BOTTOMLEFT = 0x00040009 ;diag slide-in from Bottom-left
Global Const $AW_DIAG_SLIDE_OUT_BOTTOMLEFT = 0x00050006 ;diag slide-out to Bottom-left
Global Const $AW_DIAG_SLIDE_IN_BOTTOMRIGHT = 0x0004000a ;diag slide-in from Bottom-right
Global Const $AW_DIAG_SLIDE_OUT_BOTTOMRIGHT = 0x00050005 ;diag slide-out to Bottom-right
Global Const $AW_EXPLODE = 0x00040010 ;explode
Global Const $AW_IMPLODE = 0x00050010 ;implode
Func _WinAnimate($v_gui, $i_mode, $i_duration = 2000)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", WinGetHandle($v_gui), "int", $i_duration, "long", $i_mode)
Local $ai_gle = DllCall('kernel32.dll', 'int', 'GetLastError')
If $ai_gle[0] <> 0 Then
SetError(1)
Return 0
EndIf
Return 1
EndFunc
$fenêtre = GUICreate ("Tuto UDF's", 379, 530)
GUISetBkColor(0xFFFFFF)
_WINANIMATE($fenêtre, $AW_FADE_IN, 500)
GUISetState(@SW_SHOW)
sleep(10000)
Rhooooo ! maziiiie ! Votre fenêtre est apparue dans un parfait fondu :)
Il existe, comme je l'ai déja dit, des centaines d'UDF's AutoIt disponibles sur le Web. Quelques liens pour en télécharger :
Site Américain
Site Français
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
J'espère que ce tutoriel aura servi.
RedBust