GetAsyncKeyState

G__D Messages postés 18 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 13 mai 2008 - 22 oct. 2007 à 16:09
G__D Messages postés 18 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 13 mai 2008 - 23 oct. 2007 à 12:39
Bonjour,

J'utilise l'Api GetAsyncKeyStatedans un timer pour capter la pression des touches du clavier.

La différence entre GetAsyncKeyState et GetKeyState est que GetAsyncKeyState indique si la touche a été enfoncée depuis le dernier appel de la fonction alors que  GetKeyState indique que la touche est enfoncée au moment de l'appel de la fonction.

GetAsyncKeyState fonctionne très bien avec la plupart des touches de A à Z par exemple.
PAr contre, avec les touches F1 à F12 GetAsyncKeyState fonctionne comme GetKeyState.

C'est à dire que si j'appel ma fonction toute les 5 secondes dans un timer, si entre 2 coups de timer, j'ai appuyé sur A à la seconde 2, çà va être détecté, mais si j'ai appuyé sur F1 à la seconde 2, je ne le voit pas. Je ne le voit que si lors de l'appel de la fonction la touche est enfoncée.

Quelqu'un à déjà eu le soucis... et la solution qui va avec ????

Voici un petit code pour illustrer

Dans une  Form  avec command1, command2 , text1, timer1, list1
Il faut activer le timer...

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer



Private Sub Command1_Click()
    List1.Clear
End Sub



Private Sub Command2_Click()
    Timer1.Interval = Text1.Text
End Sub



Private Sub Timer1_Timer()
    stext = ""
'Touche F1 à F12
    For ncpt = 1 To 12
        If GetAsyncKeyState(112 + (ncpt - 1)) < 0 Then
            stext = stext & "F" & ncpt
        End If
    Next ncpt
    For ncpt = 65 To 90
        toto = GetAsyncKeyState(ncpt)
        If toto <> 0 Then
            stext = stext & Chr(ncpt)
        End If
    Next ncpt
    If stext <> "" Then List1.AddItem stext
End Sub
A voir également:

1 réponse

G__D Messages postés 18 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 13 mai 2008
23 oct. 2007 à 12:39
Est-ce que quelqu'un y en a comprendre ma question ?
0
Rejoignez-nous