SendMessage WM_MOUSEMOVE无法按预期工作

时间:2010-10-22 01:29:50

标签: c windows-vista sendmessage

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

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

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

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

POINT Point;
GetCursorPos(&Point);
ScreenToClient(hHwnd, &Point);
int X = Point.x;
int Y = Point.y;