Comment "mettre" GetKeyState "à zéro" ? [Résolu]

Messages postés
13
Date d'inscription
dimanche 1 juin 2003
Dernière intervention
21 juin 2006
- - Dernière réponse : Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 1 juin 2006 à 08:04
hello,

je débute en c# et j'ai importé la dll qui me permet d'utiliser GetKeyState.
Voilà le probleme:
Je veux que mon prg affiche une messagebox lorsque l'utilisateur presse la touche ESPACE (QUELQUE SOIT L'ENDROIT , donc pas forcement sur une form).
J'ai donc ecrit:

if(GetKeyState(0x20) == 1)  MessageBox.Show("espace enfoncé");

Le probleme c'est que ça ne marche qu'une fois sur 2 car celà ne signifie pas " si l'utilisateur presse la touche espace" mais " si la touche espace est enfoncée".
Si je presse la touche espace avant de lancer le prg, 1 fois sur 2 windows  m'affiche "espace enfoncé" car il garde cette pression en mémoire.
Comment faire ? j'ai lu un truc sur SetKeyboardState mais je ne vois pas comment faire

Merci !
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
13
Date d'inscription
dimanche 1 juin 2003
Dernière intervention
21 juin 2006
3
Merci
aillait j'ai trouvé !!!!!!

il suffisait d'ecrire:
if(GetAsyncKeyState(0x20) != 0)  MessageBox.Show("espace enfoncé");
et non
if(GetKeyState(0x20) == 1)  MessageBox.Show("espace enfoncé");

Ca me semble tres important car bcp de gens ont du avoir ce probleme et il n'y a pas de reponse sur le net !!! du moins tres difficilement trouvable...

Merci hibouman 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de hibouman
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
Pour être précis il faut tester le bit le plus élèvé, sachant que le bit le plus faible peut aussi avoir une signification pour les touches commes CapsLock qui reste vérouillée.

if ( ( GetKeyState( 0x20 ) & 0x8000 ) == 0x8000 )
Commenter la réponse de Lutinore

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.