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#

  1. #1
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 1 935
    Points : 2 014
    Points
    2 014
    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
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  2. #2
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    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);
            }

  3. #3
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 1 935
    Points : 2 014
    Points
    2 014
    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
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  4. #4
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    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 chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 1 935
    Points : 2 014
    Points
    2 014
    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.
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  6. #6
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    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.

  7. #7
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut
    Je suis avec le Framework 4.5, la simplicité de la solution 1 me va très bien, je ne suis pas à un using prés.

    Mon souci est plus que je n'arrive pas à l'utiliser cette solution 1...

    J'ai ajouté la référence "PresentationCore" dans Projet->ajouter une référence

    j'ai ensuite mis ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Windows.Input.Keyboard; //a mettre pour detection appui sur les touches (il faut ajouter une référence à PresentationCore.dll)
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (System.Windows.Input.Keyboard.IsKeyDown(Key.Z))
                {
    Avant compilation ca me met Key en souligné rouge pui à la compilatio nc'est le using qui se met en défaut
    Une directive d'espace de noms using ne peut être appliquée qu'aux espaces de noms*; 'System.Windows.Input.Keyboard' est un type, pas un espace de noms
    et je n'y comprends rien. Quand je joue avec F1 et que je vais là
    http://msdn.microsoft.com/fr-fr/libr...vs.110%29.aspx
    ça utilise la fonction d'une autre manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Keyboard.IsKeyDown(Key.Return))
    {
    qui met du rouge partout chez moi...

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  8. #8
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    c'est simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Windows.Input;
    J'ai enlevé ".Keyboard"

  9. #9
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut
    J'ai essayé sans le Keybord déjà...ça me met ça
    Le nom 'Key' n'existe pas dans le contexte actuel
    Ca rejoint mon souci initial, le keybord est reconnu maintenant que la référence est ajoutée mais il reste le "Key" qui ne l'est pas

    un F1 dessus me donne rien
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  10. #10
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut
    J'ai trouvé, il faut ajouter la référence "WindowsBase" pour Key

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

+ 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