如何丢弃 window 的一些消息?

How to discard some messages for a window?

我的目标是在另一个进程的 window 中禁用一些类似工具提示的东西。如果鼠标移动的坐标在 window.

的某个矩形内,我的想法是阻止 WM_MOUSEMOVE

我可以使用 SetWindowsHookEx 来接收消息(WH_CALLWNDPROCWH_GETMESSAGE),但它不允许阻止它们。我可以 return 1 而不是调用 CallNextHookEx,但它不会阻止 window 的 WndProc 接收消息。但是,此方法适用于 MOUSE_LL/KEYBOARD_LL.

中的阻止事件

SetWindowsHookEx 也不好,因为它安装了挂钩到整个系统的所有 windows。

如何防止另一个进程的 window 接收某些 windows 消息?

WH_GETMESSAGE 消息挂钩不允许您 "block" 或取消消息,但您可以修改它。所以只需将 lpMsg->message 更改为 WM_NULL 即可防止鼠标移动消息被目标 window.

处理