我正在实现像
这样的快捷键组合逻辑Ctrl + A
Ctrl + Alt + D
但是现在我正在寻找一种技巧来实现没有热键组合的键盘组合,例如: A + D 但没有得到任何正确的东西。
所以请帮助实施它。
更新
目前我无法添加除热键组合之外的组合键。因为每当我按下两个键时,例如:**A + D**
它只返回单键ascii,所以我没有得到两个键组合。
我使用了以下内容 http://www.codeproject.com/Articles/442285/Global-Shortcuts-in-WinForms-and-WPF
答案 0 :(得分:1)
在过去,我使用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)) {/*...*/}
答案 1 :(得分:0)
在 A 和的事件中声明2 bool
变量(比如IsADown
和IsDDown
)和“true
” d 即可。如果其他bool
已关闭,也会检测两个事件。如果是,那么按下两个按钮就可以做你要做的事。