IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

vérifier si une touche est enfoncée


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 059
    Par défaut vérifier si une touche est enfoncée
    Bonjour

    Je cherche à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (touche Z enfoncée){
    }
    j'ai trouvé des trucs qui décrivaient ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Keyboard.IsKeyDown(Key.A) )
                {
    mais même en déclarant using System.Windows.Input;
    keyboard n'est pas reconnu...

    Comment puis-je vérifier que la touche Z est enfoncée ? (je n'ai pas besoin d'un évènement)

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu peux utiliser la classe System.Windows.Input.Keyboard (il faut ajouter une référence à PresentationCore.dll)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Windows.Input.Keyboard.IsKeyDown(Key.Z)
    Ou tu peux utiliser la méthode GetKeyState

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
            [Flags]
            private enum KeyStates
            {
                None = 0,
                Down = 1,
                Toggled = 2
            }
     
            [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
            private static extern short GetKeyState(int keyCode);
     
            private static KeyStates GetKeyState(Keys key)
            {
                KeyStates state = KeyStates.None;
     
                short retVal = GetKeyState((int)key);
     
                //If the high-order bit is 1, the key is down
                //otherwise, it is up.
                if ((retVal & 0x8000) == 0x8000)
                    state |= KeyStates.Down;
     
                //If the low-order bit is 1, the key is toggled.
                if ((retVal & 1) == 1)
                    state |= KeyStates.Toggled;
     
                return state;
            }
     
            public static bool IsKeyDown(Keys key)
            {
                return KeyStates.Down == (GetKeyState(key) & KeyStates.Down);
            }
    Dernière modification par Invité ; 29/10/2013 à 15h54.

  3. #3
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 059
    Par défaut
    Outch, c'est bien la première fois que je vois C# obligé de sortir si compliqué pour si peu ! J'ai pris l'habitude d'avoir presque rien à écrire pour faire des trucs de fou...

    Je vais essayer ca, ca va prendre un moment, je ne comprends même pas la syntaxe pour l'exemple 2

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si tu utilises la première méthode, je ne vois pas ce qu'il y a de compliqué.

  5. #5
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 059
    Par défaut
    il faut ajouter une DLL au projet si je comprends bien la première solution.

    Une fois que l'on a installé un framework de je sais pas combien de Mo, ça surprend de devoir ajouter une lib, pour une si petite chose.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Cette Dll est incluse dans le framework (à partir de la version 3). Il faut juste spécifier que ton projet l'utilise en l'ajoutant dans les références.

    Si tu ne veux pas ajouter de référence supplémentaire, tu peux utiliser la deuxième méthode.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment vérifier qu'une date est nulle
    Par stressy dans le forum Access
    Réponses: 7
    Dernier message: 09/12/2005, 15h41
  2. vérifier qu'une valeur est numérique
    Par kopofb dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/11/2005, 14h02
  3. Comment savoir si le bouton d'une fenêtre est enfoncé ?
    Par Lecerf dans le forum Composants VCL
    Réponses: 7
    Dernier message: 21/09/2005, 19h38
  4. Vérifier si une form est ouverte
    Par nivet dans le forum Langage
    Réponses: 6
    Dernier message: 23/11/2004, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo