Page 1 sur 1

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

Posté : mer. 30 mars 2022 10:18
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 ?

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

Posté : mer. 30 mars 2022 12:03
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

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

Posté : dim. 03 avr. 2022 21:47
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

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

Posté : lun. 04 avr. 2022 03:05
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).

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

Posté : jeu. 14 avr. 2022 13:28
par cortx
Bonjour.

Merci pour les informations.