VC键盘钩子 模拟键盘输入 输出2遍如何解决

2025-05-24 04:34:08
推荐回答(1个)
回答(1):

lParam: 30位 如果是按键按下后发送的消息,30位为1,如果是按键抬起后30位为0;
KeyboardProc你只判断了wParam,因此按下和抬起消息都会接收并处理,这样就是两次。

另外,你处理的过于简单,更安全的处理应该判断参数1:
code大于等于0,并且钩子处理函数没有处理消息,强烈建议您 返回CallNextHookEx()的返回值,否则当您安装WH_KEYBOARD钩子时,钩子将不会得到通知,并返回错误结果。如果钩子处理的消息,您可以返回一个非0值,防止系统把消息传递给钩子链中的下一个钩子,或者把消息发送到目标窗口。