我试图在属于另一个进程的窗口中模拟简单的鼠标移动。我的应用程序使用全局钩子将DLL注入目标进程(WH_CBT
和WH_GETMESSAGE
),注入就像一个魅力。目的是愚弄目标进程,使鼠标超越屏幕的一部分。当我使用物理鼠标进行移动时,这会触发某种应用行为(例如,正在显示工具提示)。我更喜欢当我执行“技巧”时,实际鼠标指针是否保持在当前位置。
我已经使用Spy ++建立了消息监控。向目标HWND发送(或发布)普通WM_MOUSEMOVE消息由Spy ++注册,但没有预期效果。当鼠标被物理移动时,应用程序会做它的事情。我已经尝试将一些其他消息与WM_MOUSEMOVE(例如WM_SETCURSOR)一起发送,但事情没有改善。我甚至在目标进程中劫持GetCursorPos以返回与WM_MOUSEMOVE中发布的相同的坐标(前者是屏幕,后者是客户端),但这也无济于事。
当我做一个简单的SetCursorPos时,该应用程序会执行它应该执行的操作。我错过了SetCursorPos正在做的其他什么魔法?在两种情况下,Spy ++捕获的消息看起来大致相同。
欢迎任何有关如何发送鼠标移动的建议。我不想使用SendInput,mouse_event或其他API。我需要在很短的时间内针对特定的HWND。
答案 0 :(得分:0)
通常,工具提示会显示为WM_NOTIFY
消息的结果,该消息与TTN_SHOW
通知代码一起发送。你试过吗?