Dom*_*gri 6 delphi textbox keyboard-shortcuts onkeypress keyboard-events
我在Delphi中遇到以下问题(但它可能被视为一般编程问题).
我想以某种方式处理多个非修饰键组合的按键事件,例如对于A+ D或D+ F或D+ F+ 这样的快捷方式G.
我知道如何处理带有修饰键的快捷键,例如CTRL+ D或CTRL+ ALT+ D或ALT+ D,但是如何检测非修饰键按键组合?
每个单独的按键产生独立的OnKeyDown
,OnKeyPress
和OnKeyUp
事件.所以你有三个选择:
跟踪当前按下的每个键.对于您收到的每个键,在OnKeyDown
事件中为它设置一个标志,并在相应的事件中清除它的标志OnKeyUp
.当你得到一个OnKeyDown
事件D,请检查您是否已经标记A,F,G,等OnKeyDown
和OnKeyUp
事件也将告诉你的状态CTRL,ALT和SHIFT键.
使用Win32 API GetKeyboardState()
,GetKeyState()
或GetAsyncKeyState()
功能.当你得到一个OnKeyDown
事件D,询问OS如果A,F,G,CTRL,等目前在低水平上.
对于某些序列,您可以使用RegisterHotKey()
并让操作系统为您跟踪密钥.检测到已注册的序列时,您将收到一条WM_HOTKEY
消息.