0

我正在尝试在属于另一个进程的窗口中模拟简单的鼠标移动。我的应用程序使用全局挂钩将 DLL 注入目标进程 ( WH_CBTand WH_GETMESSAGE),并且注入工作就像一个魅力。目的是欺骗目标进程,使其认为鼠标经过了屏幕的一部分。当我用物理鼠标移动时,这会触发特定的应用程序行为(例如,正在显示工具提示)。当我执行“技巧”时,我希望实际鼠标指针保持在其当前位置。

我已经用 Spy++ 建立了消息监控。向目标 HWND 发送(或发布)普通 WM_MOUSEMOVE 消息已由 Spy++ 注册,但没有预期的效果。当鼠标被物理移动时,应用程序会做它的事情。我曾尝试将其他一些消息与 WM_MOUSEMOVE(例如 WM_SETCURSOR)一起发送,但情况并没有改善。我什至在目标进程中劫持了GetCursorPos以返回与 WM_MOUSEMOVE 中发布的相同坐标(前者是屏幕,后者是客户端),但这也无济于事。

当我做一个简单的SetCursorPos时,应用程序会做它应该做的事情。我还错过了 SetCursorPos 正在做什么的其他魔法?Spy++ 捕获的消息在这两种情况下看起来或多或少相同。

欢迎任何有关如何发送鼠标移动的建议。我不想使用 SendInput、mouse_event 或其他 API。我需要在很短的时间内针对特定的 HWND。

4

1 回答 1

0

通常会显示一个工具提示作为消息的结果,该WM_NOTIFY消息与TTN_SHOW通知代码一起发送。你试过了吗?

于 2013-10-05T14:00:32.770 回答