我正在开发一个简单的应用程序,它正在读取操作系统的击键。我使用API“SetWindowsHookEx”来读取击键数据。
当前钩子读取数据并将其发送到OS或应用程序中。
我想阻止这些数据进入操作系统或其他应用程序。使用“SetWindowsHookEx”读取后,有没有办法阻止数据进入Windows 7操作系统?
答案 0 :(得分:0)
通常,为了防止任何消息移动到其目标,请不要从钩子回调函数调用CallNextHookEx。默认情况下,钩子回调调用CallNextHookEx。
小心谨慎使用此功能并仅停止某些特定消息。例如,有时调用此函数可禁用某些标准键,如Alt + F4,Alt + Tab等。
答案 1 :(得分:0)
如果您使用的是“普通”键盘挂钩,您会在https://msdn.microsoft.com/en-us/ms644984.aspx上找到答案:
如果代码小于零,则钩子过程必须返回该值 CallNextHookEx返回。
如果代码大于或等于零,则钩子程序执行 不处理消息,强烈建议您拨打电话 CallNextHookEx并返回它返回的值;否则,其他 已安装WH_KEYBOARD挂钩的应用程序将无法接收 钩子通知,结果可能表现不正确。如果钩 过程处理了消息,它可能返回非零值 阻止系统将消息传递给其余的挂钩 链或目标窗口程序。
如果您使用的是低级别的键盘挂钩,请写在https://msdn.microsoft.com/en-us/ms644985.aspx上:
如果nCode小于零,则钩子过程必须返回该值 CallNextHookEx返回。
如果nCode大于或等于零,并且钩子程序没有 不处理消息,强烈建议您拨打电话 CallNextHookEx并返回它返回的值;否则,其他 已安装WH_KEYBOARD_LL挂钩的应用程序将无法接收 钩子通知,结果可能表现不正确。如果钩 过程处理了消息,它可能返回非零值 阻止系统将消息传递给其余的挂钩 链或目标窗口程序。
要点:
如果你想拦截一条消息 - 不要调用CallNextHookEx并返回一个非零值,以防止它被传递到链中。