[R] Enfoncement et relachement

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Stigmate
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 26 déc. 2008 11:54
Status : Hors ligne

[R] Enfoncement et relachement

#1

Message par Stigmate »

Bonjours,
Je souhaiterais qu'une partie de mon script s'exécute lorsque j'enfonce le bouton gauche de ma souris et qu'il s'arrête lorsque je le relâche. Cela est il possible sous Autoit :?:
J'ai bien sur regardé du coté des mousedown/up, mouseclickdowndelay, _ispressed ect...
Peut être qu'il y a une façon particulière de les utiliser pour arriver à se résultat ?
Merci d'avance, Stig.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Enfoncement et relachement

#2

Message par Tlem »

Oui cela est possible, mais avec quelques restrictions.
Comme AutoIt n'est pas vraiment multitache, une fois votre code lancé, celui-ci ne pourra s'arrêter qu'à la fin.

Je vais essayé de m'exprimer un peut mieux.
Si vous faites une fonction de ce genre :

Code : Tout sélectionner

Func _Test1()
   Sleep(5000)
   Sleep(5000)
EndFunc
Une fois ce code lancé, AutoIt va attendre 2 fois 5 secondes quoi qu'il arrive.
Si vous voulez pouvoir arrêter la fonction entre temps, vous pouvez insérer un contrôle entre les deux Sleep pour voir si la touche à été relâchée ...

Après, selon ce que vous devez faire, rien ne vous empêche de créer un second exécutable contenant le code à exécuter que vous lancerez en récupérant son handle, ce qui vous permettra de faire une boucle de contrôle de l'état de la touche sans aucun blocage quelconque et le moment venu, grâce au handle vous arrêtez le processus du second exécutable (ce qui reviendrait à faire du 'vrais multitache')
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Enfoncement et relachement

#3

Message par sylvanie »

Bonsoir,
+1 sur la mise en garde de Tlem sur les action monolignes qui peuvent "bloquer" le script sur une duré xe comme les sleep.

Sinon, une façon de faire, sans parler encore de plusieur process se renvoyant des infos (à chaque fois que je la sors celle là, ça fait un peu grand père Simpson), serai de faire un while 1 tout bête, et de lancer parallèlement la fonction principale par un adlibenanble. Seulement on teste toujours entre deux ligne de code si la ouris est préssée :

Code : Tout sélectionner

#Include <Misc.au3>


AdlibEnable("_main",500)

While 1
    Sleep(250)
WEnd

Func _main()
    Local $ind
    If  _IsPressed("01")<>1 Then Return
    For $ind=0 to 30
        If  _IsPressed("01")<>1 Then Return
        Sleep(1000)
        If  _IsPressed("01")<>1 Then Return
        ConsoleWrite($ind&@CRLF)
        If  _IsPressed("01")<>1 Then Return
    Next
    
EndFunc
 
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre