Le seul soucis avec _ispressed, c'est qu'il est moins réactif que hotkeyset, donc il faudra peut-être que tu tiennes le bouton
(contrairement à hotkeyset qui réagit instantanément.
Idéalement, le mieux serait d'utiliser hotkeyset...
mais sinon, la solution de tlem fonctionne très bien.
Voiçi ma version, qui fait le même travail
J'ai ajouté un consolewrite qui va te permettre de voir un peu comment l'activation/désactivation du script fonctionne.
C'est la fonction _switch qui va changer ton flag...
Ce script contient 2 boucles.
la boucle
permet à ton script principal de rester ouvert pour pouvoir détecter en tout temps quand tu appuies sur le bouton
central de la souris.
Par défaut, ton script secondaire, celui qui exécute un code spécifique (par exemple cliquer à des endroits spécifiques sur
une page internet) sera activé seulement quand tu appuieras sur le bouton central de la souris.
Il est représenté par
_switch : Cette fonction vérifie la variable flag.
Si flag est égale à zéro, elle est mise à 1, si elle était à 1, elle est mise à 0. La fonction fait ensuite
une pause de 1000 ms afin de ne pas pouvoir être déclenchée à nouveau pendant ce bref laps de temps
(afin d'éviter la désactivation/réactivation du script trop rapidement)
Ensuite vient la boucle la plus importante
Cette boucle se déclenche uniquement si la variable $flag est égale à un.
Dans ce script-ci, le seul moyen d'y parvenir est d'appuyer sur le bouton central de la souris.
Tant que $flag est égal à un, cette boucle s'exécutera. Pour l'arrêter, il suffit d'appuyer sur la touche
définie par ton script...
Voilà pourquoi _switch() apparaît une seconde fois à l'intérieur de cette boucle.
En gros, le script fait la même chose que celui de tlem...
Code : Tout sélectionner
#include <Misc.au3>
$dll = DllOpen("user32.dll")
HotKeySet("{Esc}", "quitter")
Dim $Flag = 0
While 1 ; Boucle qui permet à ton script d'être activé en tout temps (cette boucle ne se quitte qu'avec ESC)
_switch()
While $Flag = 1
; ton code quand _ispressed("04") est déclenché
;******************** Code *****************
_switch()
WEnd
; ton code quand _ispressed("04") est pressé à nouveau pour arrêter le script
Sleep(250)
WEnd
Func _switch()
If _IsPressed("04", $dll) Then
Switch $Flag
Case 0
$Flag = 1
ConsoleWrite("Script activé" & @CRLF)
Case 1
$Flag = 0
ConsoleWrite("Script désactivé" & @CRLF)
EndSwitch
Sleep(1000)
EndIf
EndFunc ;==>_switch
Func quitter()
Exit
EndFunc ;==>quitter