我正在编写一个 C# 程序来将点击从一个窗口发送到另一个窗口。我正在使用 winapi 中的 SendMessage 和 PostMessage。SendMessage 适用于键盘事件,但是当我尝试使用它发送鼠标事件时,它总是发送鼠标坐标 0,0。我可以使用 spy++ 验证应用程序正在接收事件,但 x 和 y 位于 (0,0) 并且应用程序认为鼠标在屏幕外 NCHITTEST=NOTCLIENT。
代码如下:
PostMessage(appWin, (int)WMessages.WM_MOUSEMOVE, 0, MakeDword(300, 200));
PostMessage 声明为:
[DllImport("user32.dll", EntryPoint = "PostMessageA", SetLastError = true)]
protected static extern bool PostMessage(IntPtr hwnd, uint Msg, long wParam, long lParam);
其中 appWin 是窗口的句柄(使用 spy++ 验证其接收事件)。该窗口根本没有控件。我还尝试了多个宏 MakeLParam、MakeDword、手工完成等。我使用的是 Windows7。
我昨晚/今天早上大部分时间都在试图找到问题,但我一直没能找到。虽然网上有很多关于 Post/SendMessage 的帖子,但我只能找到一个出现类似问题并且没有答案的帖子。
总结问题:有谁知道为什么 SendMessage 会向应用程序窗口发送正确的消息,而不是传递 x 和 y 坐标,因为它总是传递 (0,0)?
谢谢!