[英]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
变量(例如IsADown
和IsDDown
),并在A和D的事件上都将它们声明为“ true
”。 这两项活动同时检测是否有其他bool
关闭或无法。 如果是这样,则在按下两个按钮的同时进行操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.