1

我正在尝试使用 SendMessage 向 Windows Calculator 发送一些简单的鼠标向下/向上消息。我已经能够通过将消息直接发送到按钮来按下按钮。但是,我无法成功地将相同的消息发送到主计算器窗口句柄。鉴于 hWnd 是计算器的窗口句柄,这是我的代码。

IntPtr fiveKey = FindWindowEx(hWnd, IntPtr.Zero, "Button", "5"); 

int x = 5; // X coordinate of the click
int y = 5; // Y coordinate of the click

IntPtr lParam = (IntPtr)((y << 16) | x); // The coordinates
IntPtr wParam = IntPtr.Zero; // Additional parameters for the click (e.g. Ctrl)
const uint downCode = 0x201; // Left click down code
const uint upCode = 0x202; // Left click up code
SendMessage(fiveKey, downCode, wParam, lParam); // Mouse button down
SendMessage(fiveKey, upCode, wParam, lParam); // Mouse button up

谁能向我解释为什么将 x/y 偏移量更改为“5”键位置的消息发送到 hWnd 而不是 FiveKey 不起作用?我想最终使用这段代码来模拟鼠标点击另一个没有像计算器这样的按钮的应用程序。

4

1 回答 1

1

我不确定我是否跟随你。您是否尝试将 WM_LBUTTONDOWN 与 5 按钮所在的坐标一起发送到主窗口,希望 5 按钮将被“点击”?如果是这样,那就行不通了。WM_LBUTTONDOWN 只会发送到鼠标光标下的窗口。理论上,主窗口可以处理 WM_LBUTTONDOWN 并查看它的任何子窗口是否在该位置,但没有人这样做,因为这不是 WM_LBUTTONDOWN 设计的工作方式。

于 2010-08-09T19:35:14.993 回答