我正在尝试使用SendMessage
将鼠标点击发布到背景窗口(Chrome),这样可以正常工作,但每次点击后都会将窗口置于正面。有没有办法避免这种情况?
在有人说这是一个重复的问题之前,请确保其他主题实际上提到没有激活目标窗口,因为我找不到任何问题。
更新:啊哈,几乎可以隐藏窗口。它按预期接收模拟的鼠标/键盘事件,并且不会显示在屏幕上。但是,我几乎不能用自己的鼠标在电脑周围导航,键盘输入完全中断。
所以我的问题是,向窗口发送消息会如何影响其他应用程序?由于我实际上并不是模拟鼠标/键盘事件,其他窗口是否应该完全不知道呢?
是否可能与收到SetCapture
时调用WM_LBUTTONDOWN
的窗口有关?除了挂钩API调用之外我该如何避免这种情况(这对于这么小的任务来说会非常非常难看)?
答案 0 :(得分:0)
系统提供的默认处理(通过DefWindowProc
)会导致窗口显示在前面(点击时)作为对WM_MOUSEACTIVATE
消息的响应,而不是WM_LBUTTONDOWN
。< / p>
Chrome响应WM_LBUTTONDOWN
而出现在前面这一事实表明Chrome是专门做的事情,而不是您可能以某种方式阻止的默认系统行为。
Chrome的源代码可用;我建议你看看它,看看它确实是Chrome正在做的事情。如果是这样,你能够阻止它的唯一实用方法(没有编译你自己的Chrome版本)就是将代码注入Chrome的进程并将其子类编入主窗口过程。