Question sur les touches du clavier

DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012 - 30 août 2006 à 00:59
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012 - 31 août 2006 à 23:00
Bonjour a tous

je cherche un code simple et cour qui me permet de faire :
afficher dans un msgbox la touche appuie (non le numero)
ex: l'utilisateur appuie sur "D", un msgbox avec D.

j'ai trouver GetKeyState, mais le code est long

Merci
DraaFil

11 réponses

vbPink Messages postés 23 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 30 août 2006
30 août 2006 à 01:15
Sans plus de précisions, je ne peux t'aider plus que ce que je vais faire :

Private Sub Text1_KeyPress(KeyAscii As Integer)
 MsgBox Chr$(KeyAscii)
End Sub
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
30 août 2006 à 01:50
c'est justement ce qu'il me faut. mais peut-on faire pareil mais dans KeyDown, si oui comment

et merci

DraaFil
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
30 août 2006 à 08:58
Salut,

En essayant le code proposé par  vbPink Tu aurais pu trouver toi même.

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) 
Call MsgBox(Chr$(KeyCode)) 
End Sub 

 

<small> Coloration syntaxique automatique [AFCK]</small>
       

En suite peu etre que ceic n'est pas du tout ce que tu cherchais mais dans ce cas il faut etre plus explicite.
Pense a appuyer sur réponse acceptée sur le ou les posts qui t'on aidé si tu estime que ton problème est résolu.

@+,   Ju£i?n
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
30 août 2006 à 09:18
Bonjour,
Si sa reste dans ton appli les réponses données ci-dessus sont ok mais il est clair qu'avant de poser ce genre de question pense à faire une recherche sur le site. Second cas si tu cherchais effectivement a intercepter le status des touches claviers dans l'environement de Windows alors la oui utilise GetKeyState (tu trouveras de nombreux exemples sur google).

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
30 août 2006 à 09:28
Attention, Julien, KeyCode <> KeyAscii...

pour passer de l'un a l'autre, tu peux utiliser l'API ToAscii

j'ai mis une fonction, sur VbFrance :
http://www.vbfrance.com/codes/KEYCODE-ASCII_33577.aspx

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
30 août 2006 à 09:52
Salut,
> Renfield: Merci pour la précision. Pourquoi M$ utilise des variables si "différentes" pour des événements si "proches".
J avais remarqué que c'était un peu différent car un appui sur "a" te renvoie "A" en keydown

@+,   Ju£i?n
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
30 août 2006 à 23:58
merci de vos reponce,

le code donne est bon. je me suis rendu compte d'un prrobleme, je vous explique.
j'ai une listview avec plusieurs element. j'appuis sur "enter" sur celle que je veux mais le probleme c'est que la valeur du "enter" ecrase la valleur de la touche que j'ai de besoin. Donc, j'ai toujours la valeur du "enter". Avez-vous une idee comment resoudre ce probleme.

Merci
code :
Private Sub View1_KeyDown(KeyCode As Integer, Shift As Integer)


    Dim Var() As String
    Dim tmp As String
    Dim mot As String


    mot = Chr$(KeyCode) & ";"


   
   
   
   
    'Quitter le programme
    If KeyCode = vbKeyF12 Then
        Dim Rep As String
        Rep = MsgBox("Voulez-vous quitter?", vbYesNo, "Quitter")
        If Rep = vbYes Then
            End
        End If
    End If


 




    If KeyCode = vbKeyReturn Then


        Open Patch For Input As 1 'on ouvre le fichier à analyser


        Do Until EOF(1) 't'en qu'on est pas à la fin du fichier:
            Line Input #1, tmp 'on lis la ligne et on la stock dans la variable
       
            If Right$(tmp, 1) = ";" Then
                tmp = Left$(tmp, Len(tmp) - 1)
            End If
           
            Var = Split(tmp, ";")
            If ((InStr(tmp, mot)) > 0) Then 'on vérifi si le mot rechercher ne serais pas dans la ligne
                MsgBox (tmp) 'si oui alors on en fait part
                MsgBox (Var(2))
            End If
        Loop
        Close #1
    End If
   
    If KeyCode = vbKeyF1 Then
        MsgBox "Aide"
    End If
   
End Sub
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
31 août 2006 à 08:00
tu pourrais faire ton test avec Entrée et F12 dans les evenements clavier de ta Form (en y ajoutant KeyPreview = True)

ca simplifierai ton problème

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
31 août 2006 à 22:33
pourrias-tu me donne plus de teail, pour savoir sa fait quoi et pkoi dans ma form , explique moi
svp

merci
DraaFil
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
31 août 2006 à 22:57
le plus simple, et le plus pratique, pourl'utilisateur, serais d'ajouter des Menus.

ainsi, les raccourcis F1 et F12 seraient clairement visibles pour l'utilisateur

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
31 août 2006 à 23:00
ok merci pareil
0