Détecter quelle touche du clavier a été appuyée [Résolu]

benji2000 78 Messages postés samedi 26 août 2006Date d'inscription 25 novembre 2016 Dernière intervention - 11 janv. 2009 à 17:57 - Dernière réponse : benji2000 78 Messages postés samedi 26 août 2006Date d'inscription 25 novembre 2016 Dernière intervention
- 13 janv. 2009 à 19:18
Bonsoir les développeurs. Voilà mon petit problème, je cherche à savoir quelle touche du clavier est appuyé, mais non pas à partir d'un KeyDown, KeyUp, KeyPress etc... Mais directement à partir du clavier où l'information sera récupérée dans un Timer qui tournera en boucle.
J'ai déjà pensé à la fonction Keyboard mais sans résultat concluant. Meme un simple appuie sur n'importe quelle touche.
Merci d'avance pour vos solutions.

DOVAX
Afficher la suite 

6 réponses

Répondre au sujet
ciberrique 591 Messages postés lundi 25 août 2003Date d'inscription 18 juillet 2010 Dernière intervention - 11 janv. 2009 à 22:37
+3
Utile
Bonsoir, si je me trompe pas cette api devrait te convenir :
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

En esperant t'avoir un peu aidé.

<hr />www.e-fitz.com
Encore plus de sources et de tutoriels.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ciberrique
ciberrique 591 Messages postés lundi 25 août 2003Date d'inscription 18 juillet 2010 Dernière intervention - 13 janv. 2009 à 01:50
+3
Utile
Bonsoir
Hum msdn :

The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState

Return Value

If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior; for more information, see the Remarks.

Donc en gros cette fonction retourne si la touche vKey est appuyé ou relaché et si depuis le dernier appel la touche à était appuyé :
Exemple avec un timer nommé Timer1 :
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Timer1_Timer()
   
    If GetAsyncKeyState(vbKeyEscape) = -32767 Then      'Si la touche echape est appuyé
          MsgBox
"
Touche echap enfoncé
"
    End If
   
End Sub

Si cela ne correspond pas a ta demande alors precise un peu mieu.

<hr />www.e-fitz.com
Encore plus de sources et de tutoriels
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ciberrique
benji2000 78 Messages postés samedi 26 août 2006Date d'inscription 25 novembre 2016 Dernière intervention - 12 janv. 2009 à 19:11
0
Utile
Merci pour ta participation Ciberrique mais convertir est une chose secondaire pour moi, ce que je cherche en priorité c'est savoir quelle touche a été appuyée.


Bonne soirée


Benji2000



DOVAX
Commenter la réponse de benji2000
benji2000 78 Messages postés samedi 26 août 2006Date d'inscription 25 novembre 2016 Dernière intervention - 13 janv. 2009 à 19:06
0
Utile
C'est presque çà, mais il n'y aurait pas un moyen plus simple, car si l'on souhaite faire çà pour toute les touches du clavier, on a pas fini ... :s
Cependant j'accepte cette réponse.
Et merci beaucoup.

Benji2000

DOVAX
Commenter la réponse de benji2000
ciberrique 591 Messages postés lundi 25 août 2003Date d'inscription 18 juillet 2010 Dernière intervention - 13 janv. 2009 à 19:16
0
Utile
Bonsoir,

Declare Function GetKeyboardState Lib "user32" Alias "GetKeyboardState" (pbKeyState As Byte) As Long

Cette fonction te copie dans un tableau (pbKeyState) l'etat de toute les touches du clavier au moment de l'appel.
En esperant que cela t'aidera.


<hr />

Encore plus de sources et de tutoriels.
Commenter la réponse de ciberrique
benji2000 78 Messages postés samedi 26 août 2006Date d'inscription 25 novembre 2016 Dernière intervention - 13 janv. 2009 à 19:18
0
Utile
Ok merci beaucoup je vais tout de suite tester et merci beaucoup pour ton aide précieuse.
Je te répondrais par message privé si j'ai des nouvelles. Bonne soirée

DOVAX
Commenter la réponse de benji2000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.