想要在使用SetWindowsHookEx读取后停止进入OS /应用程序的数据

时间:2011-10-03 14:34:37

标签: setwindowshookex

我正在开发一个简单的应用程序,它正在读取操作系统的击键。我使用API​​“SetWindowsHookEx”来读取击键数据。

当前钩子读取数据并将其发送到OS或应用程序中。

我想阻止这些数据进入操作系统或其他应用程序。使用“SetWindowsHookEx”读取后,有没有办法阻止数据进入Windows 7操作系统?

2 个答案:

答案 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并返回一个非零值,以防止它被传递到链中。

相关问题