C++ 使用修改器处理热键

C++ 使用修改器处理热键,c++,winapi,hotkeys,C++,Winapi,Hotkeys,我正在使用RegisterHotKey修改某些组合键。例如,我想用“A”替换Alt+Q,我只需注册Alt+Q热键,然后用SendInput发送“A'-up/'A'-down”来处理它。但是Alt仍然被按住,因此目标窗口接收Alt+A。诸如AutoHotkey之类的程序如何处理它,它们是否在每次处理Alt+键时都向上发送Alt?在Win32 API中,窗口的消息泵对Alt+键组合的处理是不同的。按下Alt键时,按键会发送WM\u SYSKEYDOWN和WM\u syskeydup事件,而不是传统的

我正在使用
RegisterHotKey
修改某些组合键。例如,我想用“A”替换Alt+Q,我只需注册Alt+Q热键,然后用SendInput发送“A'-up/'A'-down”来处理它。但是Alt仍然被按住,因此目标窗口接收Alt+A。诸如AutoHotkey之类的程序如何处理它,它们是否在每次处理Alt+键时都向上发送Alt?

在Win32 API中,窗口的消息泵对Alt+键组合的处理是不同的。按下Alt键时,按键会发送
WM\u SYSKEYDOWN
WM\u syskeydup
事件,而不是传统的
WM\u KEYDOWN
WM\u keydup
。这可能是相关的。我怀疑使用
RegisterHotKey()
生成额外的键盘输入是否是一个非常常见的用例。如果您知道Alt键已关闭,则只需为该键发送一个向上事件。好的,我检查了AHK实际发送的键,它确实会发送Alt向上,然后是所需的键,然后是Alt向下。除了alt,它还发送control up/control down以防止alt激活菜单。