我在 Delphi 中有以下问题(但它可能被视为一般编程问题)。
我想以某种方式处理多个非修饰键组合的按键事件,例如像A+D或D+F或D+ F+这样的快捷键G。
我知道如何使用修饰键处理快捷键,例如CTRL+D或CTRL++或ALT+ ,但我如何检测非修饰键组合?DALTD
我在 Delphi 中有以下问题(但它可能被视为一般编程问题)。
我想以某种方式处理多个非修饰键组合的按键事件,例如像A+D或D+F或D+ F+这样的快捷键G。
我知道如何使用修饰键处理快捷键,例如CTRL+D或CTRL++或ALT+ ,但我如何检测非修饰键组合?DALTD
每个单独的击键都会生成单独OnKeyDown
的OnKeyPress
、 和OnKeyUp
事件。所以你有三个选择:
跟踪当前按下的每个键。对于您收到的每个键,在事件中为其设置一个标志,并在OnKeyDown
相应的事件中为它清除标志OnKeyUp
。当您收到 的OnKeyDown
事件时D,检查您是否已经标记了A、F、G等。and事件还会告诉您、OnKeyDown
和键的状态。OnKeyUp
CTRLALTSHIFT
使用 Win32 API或GetKeyboardState()
函数。当您收到 的事件时,询问操作系统当前是否按下了、、、等。GetKeyState()
GetAsyncKeyState()
OnKeyDown
DAFGCTRL
对于某些序列,您可以使用RegisterHotKey()
并让操作系统为您跟踪密钥。当检测到注册序列时,您将收到一条WM_HOTKEY
消息。