1

当将 WM_MOUSEMOVE 消息发送到应用程序的客户区(在本例中为 Open Office Writer)时,图像会闪烁,就像鼠标在指定坐标上一样,但不会停留在该状态。代码是:

PostMessage(hWndClient, WM_MOUSEMOVE, 0, MAKEWORD(x, y))

其中 x 和 y 是相对于客户区的。

在循环中发送它仍然不起作用,因为鼠标悬停事件突出显示的区域只会闪烁。

任何帮助,将不胜感激。

4

2 回答 2

1

该应用程序可能会触发各种其他事件。也许它想看到 WM_MOUSEHOVER 等......已经有一段时间了,但我记得关于这些事件中的一些是如何实现的真的很麻烦 - 就像有一个单独的线程轮询鼠标并在鼠标时生成 WM_MOUSELEAVE 事件不再是窗外。你也可能被类似的东西咬伤。应用程序本身也有可能在收到事件时轮询鼠标以获取其真实位置。

根据您要执行的操作,也许您可​​以以编程方式移动鼠标,而不仅仅是尝试伪造事件。不幸的是,我不记得这个 API,但我确信这是可能的。

于 2010-10-22T01:38:36.400 回答
1

我在我的主窗口中使用了这样的东西,看起来有帮助......在 WM_MOUSEMOVE 中:

POINT Point;
GetCursorPos(&Point);
ScreenToClient(hHwnd, &Point);
int X = Point.x;
int Y = Point.y;
于 2011-12-03T04:16:01.397 回答