Multiple fonctions (Adlib)

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Leplayze

Frite...euse (jeu de mot)
V
Ancien staff
Dec 4, 2009
12,647
5
1,303
30
www.youtube.com
merci d'avance a bouh2 pour ce magnifique tutoriel

Bonjour,

Je me suis toujours demander comment faire tourner plusieurs fonctions en même temps, j'ai trouvé la solution :

La fonction Adlib.
Son utilisation est très simple :

Faire une fonction
...
AdlibEnable ("la fonction", la fréquence)
...
AdlibDisable

Voici un code qui montre comment il marche

Code:
AdlibEnable ("BoucleMessage", 2000) ;lance la fonction BoucleMessage toute les 2 secondes
Global $count = 1
While 1
	Sleep (250)
	If $count > 6 Then
		MsgBox (0,"","C'est fini")
		AdlibDisable ()
		Exit
	Endif
Wend

Func BoucleMessage()
	ToolTip("On est à la boucle" & $count,$count*100, 0)
	$count += 1
EndFunc

Le programme va afficher un message toute les 2 secondes tout en étant dans la boucle.

Mais le problème c'est que c'est léger heureusement un anglais à fait une include pour ajouter les fonctions manquantes
L'include est téléchargeable ci dessous (fichier joint)
L'include est à mettre dans le dossier AutoIt\Include

Voici comment elle marche :

_AdlibEnable ( "la fonction" [, tout les x ms [, nombre de fois [, autre paramètre]]] ) retourne l'ID
_AdlibDisable (ID) Désactive l'Adlib de l'ID
_AdlibPause (ID) Met en pause l'Adlib de l'ID
_AdlibResume (ID) Enleve la pause de l'ID
_AdlibMainFreq ( )
_AdlibFreq (ID) Redéfini la frequence de l'ID
_AdlibFunc(ID) Trouve la fonction de l'ID
_AdlibID ( func ) Trouve l'ID de la fonction
_AdlibParams (ID) Donne les informations de l'ID sous le code ci dessous
_AdlibActive (ID) retourne activer ou stopper de l'ID

Param retourne :
$array[0] = (More or less) proper function name incl. parenthesis and parameters (if given and not an array). ??
$array[1] = Status ,1 pour activer, 0 pour stopper, 2 pour en pause.
$array[2] = la fonction qui correspond ("" si stopper)
$array[3] = la frequence (0 si stopper
$array[4] = nombre de fois ?
$array[5] = paramètres défini

Toute les fonctions sont visibles dans l'exemple suivant :

Code:
#cs
    ;#=#INDEX#===================================================#
    ;#  Title .........: _AdlibExample.au3
    ;#  Description ...: Example script for _Adlib.au3 UDF
    ;#  Date ..........: 6.11.08
    ;#  Author ........: jennico (jennicoattminusonlinedotde)
    ;#===========================================================#
#ce

#Include <_Adlib.au3>

Dim $b[11],$l[11]
$name="_AdlibEnable,_AdlibDisable,_AdlibPause,_AdlibResume,_AdlibMainFreq,"
$name&="_AdlibFreq,_AdlibFunc,_AdlibID,_AdlibParams,_AdlibActive"
$name=StringSplit($name,",")

GUICreate("_Adlib Test")

GUICtrlCreateLabel("ID 1:",10,10,30,20)
GUICtrlCreateLabel("ID 2:",10,40,30,20)
GUICtrlCreateLabel("ID 3:",10,70,30,20)
GUICtrlCreateLabel("ID 4:",10,100,30,20)
GUICtrlCreateLabel("ID 5:",10,130,30,20)
GUICtrlCreateLabel("ID 6:",10,160,30,20)
GUICtrlCreateLabel("ID 7:",10,190,30,20)
GUICtrlCreateLabel("ID 8:",10,220,30,20)
GUICtrlCreateLabel("ID 9:",10,250,30,20)
GUICtrlCreateLabel("ID 10:",10,280,30,20)
$l[1]=GUICtrlCreateLabel("",50,10,50,20)
$l[2]=GUICtrlCreateLabel("",50,40,50,20)
$l[3]=GUICtrlCreateLabel("",50,70,50,20)
$l[4]=GUICtrlCreateLabel("",50,100,50,20)
$l[5]=GUICtrlCreateLabel("",50,130,50,20)
$l[6]=GUICtrlCreateLabel("",50,160,50,20)
$l[7]=GUICtrlCreateLabel("",50,190,50,20)
$l[8]=GUICtrlCreateLabel("",50,220,50,20)
$l[9]=GUICtrlCreateLabel("",50,250,50,20)
$l[10]=GUICtrlCreateLabel("",50,280,50,20)
$b[1]=GUICtrlCreateButton($name[1],200,10,100,20)
$b[2]=GUICtrlCreateButton($name[2],200,40,100,20)
$b[3]=GUICtrlCreateButton($name[3],200,70,100,20)
$b[4]=GUICtrlCreateButton($name[4],200,100,100,20)
$b[5]=GUICtrlCreateButton($name[5],200,130,100,20)
$b[6]=GUICtrlCreateButton($name[6],200,160,100,20)
$b[7]=GUICtrlCreateButton($name[7],200,190,100,20)
$b[8]=GUICtrlCreateButton($name[8],200,220,100,20)
$b[9]=GUICtrlCreateButton($name[9],200,250,100,20)
$b[10]=GUICtrlCreateButton($name[10],200,280,100,20)

GUISetState()

_AdlibEnable("_1",1000)
_AdlibEnable("_2",2000)
_AdlibEnable("_3",3000)
_AdlibEnable("_4",4000)
_AdlibEnable("_5",5000)
_AdlibEnable("_6",6000)
_AdlibEnable("_7",7000)
_AdlibEnable("_8",8000)
_AdlibEnable("_9",9000)
_AdlibEnable("_0",10000)

Do
    $msg=GUIGetMsg()
    For $i=1 To 10
        If $msg=$b[$i] Then Main($i)
    Next
Until $msg=-3

Func Main($i)
    SoundPlay(@WindowsDir&"\Media\start.wav")
    If $i=1 Or $i>5 Then
        If $i=10 Then
            $t1=_AdlibActive()
            $t2=@extended
            $ret="active: "&$t1[0]&" instance(s)"&@CRLF&"( "
            For $j=1 To $t1[0]
                $ret&=$t1[$j]&" "
            Next
            $ret&=")"&@CRLF&"paused: "&$t2&" instance(s)"
        Else
            $func=InputBox($name[$i],"Choose Instance (0-9, 0=10)",""," 1")
            SoundPlay(@WindowsDir&"\Media\start.wav")
            If @error Then Return
            If $func="0" Then $func=10
            $func=Number($func)
            If $i=1 Then
                $time=Number(InputBox($name[$i],"Choose Frequency"))
                SoundPlay(@WindowsDir&"\Media\start.wav")
                If $time=0 Then Return
                $count=InputBox($name[$i],"Choose Count (Enter 0 or nothing for continuous)")
                SoundPlay(@WindowsDir&"\Media\start.wav")
                If @error Then Return
                $count=Number($count)
                If $count=0 Then $count=10
                $ret=_AdlibEnable("_"&$func,$time,$count)
            ElseIf $i=9 Then
                If $func="" Then Return
                $ret=""
                $res=_AdlibParams($func)
                For $j=0 To 4
                    $ret&=$res[$j]&@CRLF
                Next
            EndIf
            If $i=6 Then $ret=_AdlibFreq($func)
            If $i=7 Then $ret=_AdlibFunc($func)
            If $i=8 Then $ret=_AdlibID("_"&$func)
        EndIf
        MsgBox(0,$name[$i],$ret)
    ElseIf $i=5 Then
        MsgBox(0,$name[$i],_AdlibMainFreq())
    Else
        $func=InputBox($name[$i],"Choose Instance (0-9, 0=10)"&@CRLF _
                &"Enter nothing for all instances",""," 1")
        If @error Then Return
        If $func="0" Then $func=10
        $func=Number($func)
        If $i=2 Then
            _AdlibDisable($func)
            If $func=0 Then
                For $j=1 To 10
                    GUICtrlSetData($l[$j],"")
                Next
            Else
                GUICtrlSetData($l[$func],"")
            EndIf
        EndIf
        If $i=3 Then _AdlibPause($func)
        If $i=4 Then _AdlibResume($func)
    EndIf
    SoundPlay(@WindowsDir&"\Media\start.wav")
EndFunc

Func _1()
    GUICtrlSetData($l[1],@SEC)
EndFunc

Func _2()
    GUICtrlSetData($l[2],@SEC)
EndFunc

Func _3()
    GUICtrlSetData($l[3],@SEC)
EndFunc

Func _4()
    GUICtrlSetData($l[4],@SEC)
EndFunc

Func _5()
    GUICtrlSetData($l[5],@SEC)
EndFunc

Func _6()
    GUICtrlSetData($l[6],@SEC)
EndFunc

Func _7()
    GUICtrlSetData($l[7],@SEC)
EndFunc

Func _8()
    GUICtrlSetData($l[8],@SEC)
EndFunc

Func _9()
    GUICtrlSetData($l[9],@SEC)
EndFunc

Func _0()
    GUICtrlSetData($l[10],@SEC)
EndFunc

Voilà, c'est très facile à utiliser et très pratique !

Source : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!

Faire un don à cadernis pour le soutenir : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
 

drave

Membre
Dec 21, 2009
40
0
571
Dans la nouvelle version AdlibEnable n'existe plus il est replacer par AdlibRegister et AdlibDislab par AdlibUnregister !