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

hibouman 13 Messages postés dimanche 1 juin 2003Date d'inscription 21 juin 2006 Dernière intervention - 31 mai 2006 à 20:10 - Dernière réponse : Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention
- 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
hibouman 13 Messages postés dimanche 1 juin 2003Date d'inscription 21 juin 2006 Dernière intervention - 31 mai 2006 à 21:04
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de hibouman
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 1 juin 2006 à 08:04
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.