Comment "mettre" GetKeyState "à zéro" ?

Résolu
Signaler
Messages postés
13
Date d'inscription
dimanche 1 juin 2003
Statut
Membre
Dernière intervention
21 juin 2006
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
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 !

2 réponses

Messages postés
13
Date d'inscription
dimanche 1 juin 2003
Statut
Membre
Dernière intervention
21 juin 2006

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...
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
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 )