当将 WM_MOUSEMOVE 消息发送到应用程序的客户区(在本例中为 Open Office Writer)时,图像会闪烁,就像鼠标在指定坐标上一样,但不会停留在该状态。代码是:
PostMessage(hWndClient, WM_MOUSEMOVE, 0, MAKEWORD(x, y))
其中 x 和 y 是相对于客户区的。
在循环中发送它仍然不起作用,因为鼠标悬停事件突出显示的区域只会闪烁。
任何帮助,将不胜感激。
当将 WM_MOUSEMOVE 消息发送到应用程序的客户区(在本例中为 Open Office Writer)时,图像会闪烁,就像鼠标在指定坐标上一样,但不会停留在该状态。代码是:
PostMessage(hWndClient, WM_MOUSEMOVE, 0, MAKEWORD(x, y))
其中 x 和 y 是相对于客户区的。
在循环中发送它仍然不起作用,因为鼠标悬停事件突出显示的区域只会闪烁。
任何帮助,将不胜感激。
该应用程序可能会触发各种其他事件。也许它想看到 WM_MOUSEHOVER 等......已经有一段时间了,但我记得关于这些事件中的一些是如何实现的真的很麻烦 - 就像有一个单独的线程轮询鼠标并在鼠标时生成 WM_MOUSELEAVE 事件不再是窗外。你也可能被类似的东西咬伤。应用程序本身也有可能在收到事件时轮询鼠标以获取其真实位置。
根据您要执行的操作,也许您可以以编程方式移动鼠标,而不仅仅是尝试伪造事件。不幸的是,我不记得这个 API,但我确信这是可能的。
我在我的主窗口中使用了这样的东西,看起来有帮助......在 WM_MOUSEMOVE 中:
POINT Point;
GetCursorPos(&Point);
ScreenToClient(hHwnd, &Point);
int X = Point.x;
int Y = Point.y;