Er.KT
Er.KT

Reputation: 2860

key combination c# other than hotkeys

I am implementing shortcut key combination logic like

Ctrl + A

Ctrl + Alt + D

but now I am looking for a trick to implement keyboard key combination without hotkey combination like : A + D but not getting any right things.

So please help to implement it.

Updated

Currently I am not able to add key combination other than hotkey combination.because whenever I am pressing two keys like : **A + D** it returns only single keys ascii so I am not getting two keys combination.

I have used following stuff http://www.codeproject.com/Articles/442285/Global-Shortcuts-in-WinForms-and-WPF

Upvotes: 0

Views: 250

Answers (2)

Me.Name
Me.Name

Reputation: 12544

In the past I used the GetKeyState Api (inside a similar class for catching system wide shortcuts). Perhaps new variants are available nowadays (WPF has a KeyBoard.IsKeyDown I believe), but this should still work:

    [DllImport("user32", CharSet = CharSet.Auto,
    ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
    static extern short GetKeyState(int keyCode);

    public static bool CheckKeysPressed(params Keys[] keys)
    {
        for (int i = 0; i < keys.Length; i++)
            if (!CheckKeyPressed((int)keys[i])) return false;
        return true;
    }
    public static bool CheckKeyPressed(Keys key)
    {
        return CheckKeyPressed((int)key);
    }
    public static bool CheckKeyPressed(int vkey)
    {
        short ks = GetKeyState(vkey);
        return ks == 1;
    }

Usage: if(CheckKeysPressed(Keys.A, Keys.D)) {/*...*/}

Upvotes: 1

Jam
Jam

Reputation: 339

Declare 2 bool variable (say IsADown and IsDDown) and "true" them on events of both A and D. Also detect on both events if other bool is down or not. If it is, then do what you have to do with both button pressed.

Upvotes: 0

Related Questions