Bonjour,
Quelqu'un serait-il comment réaliser une zone input mais dans lequel ne s'affiche uniquement des sequences de touches sélectionnées à partir de _isPressed, mais aucune autre touche que celles sélectionnées ? Existe-t-il une fonction pour ?
[R] Zone input de capture de touche
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.
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Zone input de capture de touche
Pourriez-vous être plus explicite ?
Des exemples ?
Des exemples ?
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é".
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é".
Re: [..] Zone input de capture de touche
Je ne sais pas si vous connaissez fraps ? ca permet de faire des captures d'écran ou vidéo.
Il y a des zones input, mais ces zones sont des configurations pour lancer les actions, or dans ces zones lorsqu'on clique dedans ca sélectionne ce qu'il y a dedans, qui plus est ca ne réagit pas comme une zone input ca a affiche la touche que l'on a appuyé si on tape du texte ca ne gardera que la dernière lettre tapée, est-ce juste une zone input modifiée par des fonctions ?

Il y a des zones input, mais ces zones sont des configurations pour lancer les actions, or dans ces zones lorsqu'on clique dedans ca sélectionne ce qu'il y a dedans, qui plus est ca ne réagit pas comme une zone input ca a affiche la touche que l'on a appuyé si on tape du texte ca ne gardera que la dernière lettre tapée, est-ce juste une zone input modifiée par des fonctions ?

Re: [..] Zone input de capture de touche
Bon voilà , j'ai bidouillé un truc, une zone input controlée, ne sont acceptées que les touches définies ici les touches du clavier numérique. Je ne laisse pas passer les autres touches, enfin malheureusement elles entrent mais la donnée est automatiquement remise à la dernière valeur correcte tapée. Quelqu'un aurait quelques chose de plus propre ?
Pour reprendre l'exemple de fraps il me manque une chose, c'est que tout le texte dans la zone input soit toujours sélectionnée, il y a une fonction pour ça ?
Pour reprendre l'exemple de fraps il me manque une chose, c'est que tout le texte dans la zone input soit toujours sélectionnée, il y a une fonction pour ça ?
Code : Tout sélectionner
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
Global $lastSelect
$lastSelect = "Choix de la touche"
$dll = DllOpen("user32.dll")
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("KeyInput", 288, 91, 192, 124)
$keyInput = GUICtrlCreateInput("", 80, 32, 113, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
KeySelect()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
sleep(100)
WEnd
Func KeySelect()
If _IsPressed("60", $dll) Then
$keyPressed = "0 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("61", $dll) Then
$keyPressed = "1 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("62", $dll) Then
$keyPressed = "2 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("63", $dll) Then
$keyPressed = "3 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("64", $dll) Then
$keyPressed = "4 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("65", $dll) Then
$keyPressed = "5 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("66", $dll) Then
$keyPressed = "6 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("67", $dll) Then
$keyPressed = "7 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("68", $dll) Then
$keyPressed = "8 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("69", $dll) Then
$keyPressed = "9 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6A", $dll) Then
$keyPressed = "* [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6B", $dll) Then
$keyPressed = "+ [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6D", $dll) Then
$keyPressed = "- [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6E", $dll) Then
$keyPressed = ", [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6F", $dll) Then
$keyPressed = "/ [Keypad]"
setKey($keyPressed)
Else
setkey($lastSelect)
EndIf
EndFunc
Func setKey($key)
if $key <> "" Then
$lastSelect = $key
EndIf
GUICtrlSetData($keyInput,$key)
EndFunc
DllClose($dll)
Re: [..] Zone input de capture de touche
Ok, c'est bon j'ai trouvé ce que je cherchais à faire :
Code : Tout sélectionner
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
Global $lastSelect
$lastSelect = "Choix de la touche"
$dll = DllOpen("user32.dll")
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("KeyInput", 288, 91, 192, 124)
$keyInput = GUICtrlCreateInput("", 80, 32, 113, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
KeySelect()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
sleep(100)
WEnd
Func KeySelect()
If _IsPressed("60", $dll) Then
$keyPressed = "0 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("61", $dll) Then
$keyPressed = "1 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("62", $dll) Then
$keyPressed = "2 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("63", $dll) Then
$keyPressed = "3 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("64", $dll) Then
$keyPressed = "4 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("65", $dll) Then
$keyPressed = "5 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("66", $dll) Then
$keyPressed = "6 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("67", $dll) Then
$keyPressed = "7 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("68", $dll) Then
$keyPressed = "8 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("69", $dll) Then
$keyPressed = "9 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6A", $dll) Then
$keyPressed = "* [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6B", $dll) Then
$keyPressed = "+ [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6D", $dll) Then
$keyPressed = "- [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6E", $dll) Then
$keyPressed = ", [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6F", $dll) Then
$keyPressed = "/ [Keypad]"
setKey($keyPressed)
Else
setkey($lastSelect)
EndIf
EndFunc
Func setKey($key)
if $key <> "" Then
$lastSelect = $key
EndIf
GUICtrlSetData($keyInput,$key)
GUICtrlSetState($keyInput,$GUI_FOCUS)
EndFunc
DllClose($dll)
Re: [R] Zone input de capture de touche
Je vois que le sujet est passé à résolu tout seul 
pour info, pour les personnes que ça peut intéresser un jour, j'ajoute une modification importante.
Effectivement l'utilisation de $GUI_FOCUS, fais un select de la zone (tres bien) mais aussi va forcer le focus sur votre control (pas forcément pratique) et donc plus moyen d'utiliser les autres.
Je présente donc une méthode plus intéressante, c'est de créer notre zone de control en ReadOnly comme l'utilisateur ne peut rien rentrer directement tout est controlé par notre fonction _isPressed selon ce qu'on a autorisé.
Voici le code :
pour info, pour les personnes que ça peut intéresser un jour, j'ajoute une modification importante.
Effectivement l'utilisation de $GUI_FOCUS, fais un select de la zone (tres bien) mais aussi va forcer le focus sur votre control (pas forcément pratique) et donc plus moyen d'utiliser les autres.
Je présente donc une méthode plus intéressante, c'est de créer notre zone de control en ReadOnly comme l'utilisateur ne peut rien rentrer directement tout est controlé par notre fonction _isPressed selon ce qu'on a autorisé.
Voici le code :
Code : Tout sélectionner
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
Global $lastSelect
$lastSelect = "Choix de la touche"
$dll = DllOpen("user32.dll")
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("KeyInput", 288, 91, 192, 124)
$keyInput = GUICtrlCreateInput("", 80, 32, 113, 21,$ES_READONLY)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
KeySelect()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
sleep(100)
WEnd
Func KeySelect()
If _IsPressed("60", $dll) Then
$keyPressed = "0 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("61", $dll) Then
$keyPressed = "1 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("62", $dll) Then
$keyPressed = "2 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("63", $dll) Then
$keyPressed = "3 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("64", $dll) Then
$keyPressed = "4 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("65", $dll) Then
$keyPressed = "5 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("66", $dll) Then
$keyPressed = "6 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("67", $dll) Then
$keyPressed = "7 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("68", $dll) Then
$keyPressed = "8 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("69", $dll) Then
$keyPressed = "9 [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6A", $dll) Then
$keyPressed = "* [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6B", $dll) Then
$keyPressed = "+ [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6D", $dll) Then
$keyPressed = "- [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6E", $dll) Then
$keyPressed = ", [Keypad]"
setKey($keyPressed)
ElseIf _IsPressed("6F", $dll) Then
$keyPressed = "/ [Keypad]"
setKey($keyPressed)
Else
setkey($lastSelect)
EndIf
EndFunc
Func setKey($key)
if $key <> "" Then
$lastSelect = $key
EndIf
GUICtrlSetData($keyInput,$key)
EndFunc
DllClose($dll)

