繁体   English   中英

热键以外的其他C#组合键

[英]key combination c# other than hotkeys

我正在实现快捷键组合逻辑,例如

Ctrl + A

Ctrl + Alt + D

但是现在我正在寻找一种技巧来实现没有热键组合的键盘键组合: A + D但没有得到任何正确的东西。

因此,请帮助实施它。

更新

目前我无法添加除热键组合以外的其他组合键,因为每当我按下两个键时,例如: **A + D**它仅返回单键ascii,因此我无法获得两个键组合。

我使用了以下内容http://www.codeproject.com/Articles/442285/Global-Shortcuts-in-WinForms-and-WPF

过去,我使用GetKeyState Api(在类似的类中用于捕获系统范围的快捷方式)。 也许现在有新的变体可用(我相信WPF有一个KeyBoard.IsKeyDown),但这应该仍然有效:

    [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;
    }

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

声明2个bool变量(例如IsADownIsDDown ),并在AD的事件上都它们声明为“ true ”。 这两项活动同时检测是否有其他bool关闭或无法。 如果是这样,则在按下两个按钮的同时进行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM