[..] Probléme dans l'appel de plusieurs fonctions
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] Probléme dans l'appel de plusieurs fonctions
Bonjour,
j'ai un petit probléme dans le call de fonctions.
je donne un petit exemple :
je met 2hotkeys, a qui call la fonction "a", b qui call la fonction "b".
"a" et "b" durent 5sec chaqune.
j'apuie sur a, aprés 2sec j'apuie sur b
la fonction a n'est pas achevée, le script pause "a" et fait la fonction "b", aprés il reviens finir la fonction a.
il y a pas un moyen, que quand j'apuie a, aprés 2sec j'apuie b => le script attend que a finis pour commencer b.
merci et bonne journée
j'ai un petit probléme dans le call de fonctions.
je donne un petit exemple :
je met 2hotkeys, a qui call la fonction "a", b qui call la fonction "b".
"a" et "b" durent 5sec chaqune.
j'apuie sur a, aprés 2sec j'apuie sur b
la fonction a n'est pas achevée, le script pause "a" et fait la fonction "b", aprés il reviens finir la fonction a.
il y a pas un moyen, que quand j'apuie a, aprés 2sec j'apuie b => le script attend que a finis pour commencer b.
merci et bonne journée
- roselito13
- Niveau 4

- Messages : 93
- Enregistré le : ven. 07 août 2009 23:39
- Localisation : Entre le Pôle Nord et le Pôle Sud
- Status : Hors ligne
Re: [..] probléme dans call de plusieurs fonctions
L'autoit de base ne peut faire que une action a la fois.
Pour executer deux action a la fois renseigne tois sur la fonction "Adlib"
http://www.autoitscript.com/autoit3/doc ... gister.htm
Il existe un UDF dans sur se forum pour exécuter encore plus de chose en même temps.
Pour executer deux action a la fois renseigne tois sur la fonction "Adlib"
http://www.autoitscript.com/autoit3/doc ... gister.htm
Il existe un UDF dans sur se forum pour exécuter encore plus de chose en même temps.
\ 1337 /
Re: [..] probléme dans call de plusieurs fonctions
Je connais bien pour l'adlib.
c'est pas vraiment ce que je demande.
je demande si je call une fonction "b" lorsque une fonction "a" est en cours (avec hotkey par exemple), "a" s'arrétera, "b" se déclanchera, a la fin de "b", le script finis "a".
je voudrais savoir s'il y a un moyen, pour que quand "a" est en cours, et il y a eu un call de la fonction "b", le script attend que "a" finis pour commencer "b".
je crois pas que c'est trés dur a comprendre sa ^^)
merci et bonne journée
c'est pas vraiment ce que je demande.
je demande si je call une fonction "b" lorsque une fonction "a" est en cours (avec hotkey par exemple), "a" s'arrétera, "b" se déclanchera, a la fin de "b", le script finis "a".
je voudrais savoir s'il y a un moyen, pour que quand "a" est en cours, et il y a eu un call de la fonction "b", le script attend que "a" finis pour commencer "b".
je crois pas que c'est trés dur a comprendre sa ^^)
merci et bonne journée
- zeshrek
- Niveau 10

- Messages : 984
- Enregistré le : mer. 17 nov. 2010 09:31
- Localisation : Sur ma chaise
- Status : Hors ligne
Re: [..] probléme dans call de plusieurs fonctions
ma foi, y a une solution, c'est d'utiliser un flag pour chaque fonction
Je détaille pas trop mais un truc du genre :
Ca devrait venir a bout de ton probleme
Je détaille pas trop mais un truc du genre :
Code : Tout sélectionner
[le début de ton script]
$EnCours_A = false
$EnCours_B = false
[le corps du script]
func _funcA()
if $EnCours_B = true then
msgbox(1,"Du calme","on attend que B soit fini !!!")
else
$EnCours_A = true
[ta fonction]
$EnCours_A = true
endif
endfunc
func _funcB()
if $EnCours_A = true then
msgbox(1,"Du calme","on attend que A soit fini !!!")
else
$EnCours_B = true
[ta fonction]
$EnCours_B = true
endif
endfuncSi vis pacem para bellum
Re: [..] probléme dans call de plusieurs fonctions
J'ai pensé a sa, mais c'est pas totalement ce que je veux.
je donne un exemple :
chaque fonction mettera 4secondes pour le send (1lettre par secondes)
on dis que j'apuie sur a, et aprés 2secondes j'apuie sur b
quand j'aurais apuié sur b le script aura deja écris 2 "a" seulement.
je veux qu'il : finis les 2 "a" qu'il reste dans la fonction "a".
lancer la fonction b (écrire 4 "b") sans que je re-apuie sur b.
sa veut dire au moment ou j'apuie sur b lorsque que a est en cours, il enregistre l'action et attend jusqu'a ce que "a" s'acheve pour commencer "b".
merci et bonne journée
je donne un exemple :
Code : Tout sélectionner
opt ("sendkeydelay", 1000)
func a()
send ("aaaa")
endfunc
func b()
send ("bbbb")
endfunc
hotkeyset ("a", "a")
kotkeyset ("b", "b")
while 1
sleep (1000)
wendon dis que j'apuie sur a, et aprés 2secondes j'apuie sur b
quand j'aurais apuié sur b le script aura deja écris 2 "a" seulement.
je veux qu'il : finis les 2 "a" qu'il reste dans la fonction "a".
lancer la fonction b (écrire 4 "b") sans que je re-apuie sur b.
sa veut dire au moment ou j'apuie sur b lorsque que a est en cours, il enregistre l'action et attend jusqu'a ce que "a" s'acheve pour commencer "b".
merci et bonne journée
- roselito13
- Niveau 4

- Messages : 93
- Enregistré le : ven. 07 août 2009 23:39
- Localisation : Entre le Pôle Nord et le Pôle Sud
- Status : Hors ligne
Re: [..] probléme dans call de plusieurs fonctions
Voila je pense que c'est la Solution que tu chercher.
Je t'ais fait le script complet a partir de se que tu nous as donner
Il existe surement mieux, mais c'est le matin, et puis sa peut te débloque 
Je t'ais fait le script complet a partir de se que tu nous as donner
Code : Tout sélectionner
opt ("sendkeydelay", 1000)
hotkeyset ("a", "a")
hotkeyset ("b", "b")
$A = False
$B = False
Func a()
If $B = False
exec_a()
Else
AdlibRegister("a", 100)
EndIf
EndFunc
Func exec_a()
$A = True
Send("aaaa")
$A = False
AdlibUnRegister("a")
EndFunc
Func b()
If $A = False
exec_b()
Else
AdlibRegister("b", 100)
EndIf
EndFunc
Func exec_b()
$B = True
Send("aaaa")
$B = False
AdlibUnRegister("b")
EndFunc
While 1
sleep (1000)
Wend\ 1337 /
Re: [..] probléme dans call de plusieurs fonctions
Euhh, je pense que c'est un code bugué ^^
ce que je veux c'est une commande qui change le systéme de traitement de fonctions par exemple. Sinon c'est peut être possible comme ceci :
Bon voila l'exemple d'un travail manuel beugué 
sa marche trés mal ^^
quelqu'un a une bonne solution?
merci et bonne journée
ce que je veux c'est une commande qui change le systéme de traitement de fonctions par exemple. Sinon c'est peut être possible comme ceci :
► Afficher le texte
sa marche trés mal ^^
quelqu'un a une bonne solution?
merci et bonne journée
- zeshrek
- Niveau 10

- Messages : 984
- Enregistré le : mer. 17 nov. 2010 09:31
- Localisation : Sur ma chaise
- Status : Hors ligne
Re: [..] probléme dans call de plusieurs fonctions
A ce moment là il te faut une gestion de file d'attente.
Donc en début de script tu crées 2 variables :
Puis qqpart dans une section de ton script qui tourne non stop (par ex dans la boucle ou tu attend les retour de ta GUI, ou bien celle ou tu attends que tes users appuient sur le clavier) tu mets le test suivant :
Ensuite il ne te reste qu'a créer 3 fonctions :
Les 2 premières sont appelées par les hotkey. Elles remplissent juste la file d'attente sur pression des touches.
La 3eme traite la file d'attente en mode FIFO, cad elle la vide par la gauche alors qu'elle se remplit par la droite. Donc les traitement se font dans l'ordre ou les touches ont été tapées.
Donc en début de script tu crées 2 variables :
Code : Tout sélectionner
$EnCours = false
$FileDAttente = ""Code : Tout sélectionner
If $EnCours = false and StringLen($FileDattente) > 0 then
_traitement(StringLeft($FileDattente,1))
endif Code : Tout sélectionner
func _funcA()
$FileDAttente = $FileDAttente & "A"
endfunc
func _funcB()
$FileDAttente = $FileDAttente & "B"
endfunc
func _traitement($Touche)
$EnCours = true
switch $Touche
case "A"
[ton traitement de la touche A]
case "B"
[ton traitement de la touche B]
EndSwitch
$EnCours = false
$FileDAttente = FileRight($FileDAttente , StringLen($FileDattente) - 1)
endfuncLa 3eme traite la file d'attente en mode FIFO, cad elle la vide par la gauche alors qu'elle se remplit par la droite. Donc les traitement se font dans l'ordre ou les touches ont été tapées.
Si vis pacem para bellum
Re: [..] probléme dans call de plusieurs fonctions
c'est presque le même truc que mon code (ajout de cas de plusieurs demande dans la liste d'attente d'une seule fonction)
cependant, il y a pas une opt ou un udf qui fait cela? . . .
parce que ce sera assés lent pour écrire un code pour 30+ de fonctions comme sa et sa posera quelques problémes quand les fonctions ne seront pas, simples (comme a et b) ^^
merci et bonne journée
cependant, il y a pas une opt ou un udf qui fait cela? . . .
parce que ce sera assés lent pour écrire un code pour 30+ de fonctions comme sa et sa posera quelques problémes quand les fonctions ne seront pas, simples (comme a et b) ^^
merci et bonne journée
- roselito13
- Niveau 4

- Messages : 93
- Enregistré le : ven. 07 août 2009 23:39
- Localisation : Entre le Pôle Nord et le Pôle Sud
- Status : Hors ligne
Re: [..] probléme dans call de plusieurs fonctions
A mas connaissance, il existe pas d'UDF ou de Commande toute prête pour faire cela.
Tu devras donc prendre le temps de la crée, et pourquoi pas la publier
Tu devras donc prendre le temps de la crée, et pourquoi pas la publier
\ 1337 /
Re: [..] probléme dans call de plusieurs fonctions
ok, je j'aissaierai de le faire dés que j'aurais du temp.
bonne journée
bonne journée

