[R]Détection d'une touche relaché et envoie d'un send

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

[R]Détection d'une touche relaché et envoie d'un send

#1

Message par cortx »

Bonjour.

Je suis en train de chercher à faire un petit script pour m'aider à envoyer un send lors de la détéction de l'appuie sur une touche.
Pour améliorer mon écriture de code et de documentation, je cherche à répondre ] à l'appuie de [, idem pour le couple () ou " ou '

J'ai testé l'exemple donné sur la fonction _IsPressed mais tous les caractères n'y sont pas et elle semble ne pas fonctionner pour DB "[" ou DD "]" par exemple.
#include <Misc.au3>
#include <MsgBoxConstants.au3>

Local $hDLL = DllOpen("user32.dll")

Do
    If _IsPressed("D8", $hDLL) Then
      MsgBox($MB_SYSTEMMODAL, "Title", " ")
    EndIf

Until _IsPressed("1B", $hDLL)

MsgBox($MB_SYSTEMMODAL, "_IsPressed", "Touche Esc enfoncée, l'application va se fermer.")
DllClose($hDLL)
Est ce que vous auriez une petite astuce pour me sortir de ce blocage s'il vous plait ?
Modifié en dernier par cortx le jeu. 14 avr. 2022 13:28, modifié 1 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..]Détection d'une touche relaché et envoie d'un send

#2

Message par jchd »

Attention : D8 <> DB (mais ça ne fcontionne pas non plus).

Voyons ainsi :

Code : Tout sélectionner

HotKeySet("{Esc}", _Exit)
HotKeySet("(", _LP)
HotKeySet("[", _LSB)
HotKeySet("{{}", _LB)

While 1
	Sleep(20)
WEnd

Func _Exit()
	Exit
EndFunc

; left paren
Func _LP()
	HotKeySet("(")
	ConsoleWrite"()")
	HotKeySet("(", _LP)
EndFunc

; left square braket
Func _LSB()
	HotKeySet("[")
	ConsoleWrite("[]")
	HotKeySet("[", _LSB)
EndFunc

; left braket
Func _LB()
	HotKeySet("{{}")
	ConsoleWrite("{}")
	HotKeySet("{{}", _LB)
EndFunc
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [..]Détection d'une touche relaché et envoie d'un send

#3

Message par cortx »

Bonjour.
Désolé pour le délai de réponse.
J'ai remplacé les ConsoleWrite par Send pour pouvoir l'utiliser dans un traitement de texte classique style notepad++

Aucun souci sur le (
Le { ne fonctionne pas du tout
Le [ fonctionne, j'ai bien le double caractère qui se créé mais j'ai un bug de clavier ensuite. Le déclenchement laisse enfoncé les touche ALT et CTRL, je dois donc rappuyer sur chacune d'elle pour que les touches soient considéré comme relâchées.

Par contre dans la console Scite, aucun problème. J'ai bien l'affichage en console ainsi que le clavier fonctionnel totalement sans devoir réappuyer sur ALT ou CTRL
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..]Détection d'une touche relaché et envoie d'un send

#4

Message par jchd »

Oui, les touches CTRL et ALT ont tendance à restées perçues comme enfoncées. Dans ce cas il faut les "relâcher" explicitement, type Send("{{ALT} up}") (de mémoire).
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [..]Détection d'une touche relaché et envoie d'un send

#5

Message par cortx »

Bonjour.

Merci pour les informations.
Répondre