none
Lire l'état du clavier RRS feed

  • Question

  • Bonjour,

    Dans une application WPF, sous VS 2017 Community,

    comment connaître l'état du clavier, en particulier celui du verrouillage majuscule/minuscule ?

    Ce verrouillage est commandé par Key.Capital{8}.

    Merci de votre réponse.

    Cordialement


    Alain

    vendredi 25 mai 2018 13:40

Réponses

  • J'ai testé la méthode WPF  pour le vérouillage Majuscules/Minuscules en Winforms et ça fonctionne chez moi (Windows 10) :

    if ((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.Capital) & System.Windows.Input.KeyStates.Toggled) > 0)
    {
       // Code
    }
       


    • Modifié Castorix31 vendredi 25 mai 2018 18:32
    • Marqué comme réponse AchLog vendredi 25 mai 2018 20:01
    vendredi 25 mai 2018 18:32

Toutes les réponses

  • Je n'utilise pas WPF, mais en C#/Winforms (donc applicable certainement en WPF), on peut faire par P/Invoke :

    bool bStatus = (GetKeyState(VK_CAPITAL) & 1) == 1;

    avec :

    [DllImport("User32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern short GetKeyState(int nVirtKey);
    
    public const byte VK_CAPITAL = 0x14;

    vendredi 25 mai 2018 15:58
  • En regardant la doc, il y a en fait en WPF : Keyboard.GetKeyStates

    (je viens de tester, ça marche aussi en Winforms)
    vendredi 25 mai 2018 16:14
  • Oui Castorx31, votre solution fonctionne.

    Je suis quand même surpris de ne pas trouver l'équivalent en WPF.

    La solution WPF Keyboard.GetKeyStates que vous indiquez ci-après, ne fonctionne pas (sauf erreur de ma part) car elle ne fournit que l'état de la touche testée. Or, le verrouillage du clavier en position majuscule/minuscule est indépendant de l'état de la touche correspondante, qui fonctionne comme une bascule : Down-Up change l'état du clavier.

    Grand merci à vous

    Et je reste preneur d'une solution purement WPF.


    Alain

    vendredi 25 mai 2018 17:27
  • J'ai testé la méthode WPF  pour le vérouillage Majuscules/Minuscules en Winforms et ça fonctionne chez moi (Windows 10) :

    if ((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.Capital) & System.Windows.Input.KeyStates.Toggled) > 0)
    {
       // Code
    }
       


    • Modifié Castorix31 vendredi 25 mai 2018 18:32
    • Marqué comme réponse AchLog vendredi 25 mai 2018 20:01
    vendredi 25 mai 2018 18:32
  • Merci beaucoup CastoriX31, oui, en effet ça fonctionne.

    J'étais passé à coté...

    Merci de votre aide.

    Cordialement


    Alain


    • Modifié AchLog vendredi 25 mai 2018 20:03 rectification du nom d'auteur
    vendredi 25 mai 2018 20:01