我正在制作一个将自身连接到目标应用程序的应用程序,并且在被用户激活时,会阻止所有键盘和鼠标窗口消息到达目标应用程序的窗口进程。我的应用程序通过将传入的输入消息(例如 , WM_MOUSEMOVE
)转换为 来做到这WM_NULL
一点,以便窗口 proc 不知道发生了输入。
问题是当鼠标输入发生时,Windows 也会自动发送WM_SETCURSOR
和WM_NCHITTEST
到窗口进程(例如,当应用程序调用时)。PeekMessage
这些消息不会发布到窗口的消息队列中,因此我无法将它们更改为 WM_NULL。
我最初通过子类化窗口 proc 并简单地忽略WM_SETCURSOR
and来解决这个WM_NCHITTEST
问题,但是子类化似乎与我所迷恋的一些应用程序存在兼容性问题。
我的问题是:我如何首先防止WM_SETCURSOR
和WM_NCHITTEST
生成,或者如何防止它们到达应用程序的窗口过程。