作为低于 VB/VBS 的业余爱好者(C++ WINAPI 对我有经验的人来说是一场噩梦),我不知道如何在 C++ 中为简单的 KEYDOWN 消息构建长 lParam,并且可能花了更多时间寻找体面的解释比值得,有人能够准确地描述如何去做吗?
似乎其他论坛上几乎所有对这个问题的回答都是“为什么”或“改用 SendInput”,而没有真正回答这个问题;我猜它太简单了,人们无法解释。无论如何,这是来自 msdn 的描述,非常感谢一个体面的解释或链接,如果可能的话,还有一个工作示例:
重复计数、扫描码、扩展键标志、上下文代码、前一个键状态标志和转换状态标志,如图所示……
0-15 当前消息的重复计数。该值是由于用户按住键而自动重复击键的次数。如果击键时间足够长,则会发送多条消息。但是,重复计数不是累积的。16-23 扫码。该值取决于 OEM。
24 指示该键是否为扩展键,例如出现在增强型 101 或 102 键键盘上的右手 ALT 和 CTRL 键。如果是扩展键,则值为 1;否则为0。 25-28 保留;不使用
29 上下文代码。如果 ALT 键在按下时按下,则值为 1;如果 WM_SYSKEYDOWN 消息发布到活动窗口,则为 0,因为没有窗口具有键盘焦点。
30 前一个键状态。如果在发送消息之前 key 处于 down 状态,则值为 1,如果 key 处于 up 状态,则值为 0。
31 过渡状态。对于 WM_SYSKEYDOWN 消息,该值始终为 0。