![](/img/trans.png)
[英]How i can simulate a double mouse click on window ( i khow handle) on x, y coordinate, using SendInput?
[英]How can I simulate a button click given the handle to the button's window?
我想模拟对话框中的按钮单击。
我有那个窗口的句柄。 这是一个中止/重试/忽略窗口。
我不想模拟具有X和Y坐标的点击,因为它不符合我的需要。
将BM_CLICK
消息发送到按钮的HWND:
SendMessage(hButton, BM_CLICK, 0, 0);
这会导致按钮接收WM_LBUTTONDOWN
和WM_LBUTTONUP
消息,并且父接收BN_CLICKED
通知,就像用户实际点击按钮一样。
找到要单击的按钮的句柄(通过使用FindWindowEx
),然后发送单击消息:
SendMessage(hButton, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(0, 0));
SendMessage(hButton, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(0, 0));
SendMessage(hParent, WM_COMMAND, MAKEWPARAM(IdOfButton, BN_CLICKED), (LPARAM)hwndOfButton);
通常你可以在没有hwndOfButton
情况下hwndOfButton
,如果你不知道它 - 取决于对话框的实现!
它可以是SendMessage
或PostMessage
,具体取决于您的用例。
试试这个OK:
SendMessage(hWnd, WM_COMMAND, 1, NULL);
这是一个完整的功能:
void clickControl(HWND hWnd, int x, int y)
{
POINT p;
p.x = x; p.y = y;
ClientToScreen(hWnd, &p);
SetCursorPos(p.x, p.y);
PostMessage(hWnd, WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
PostMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
PostMessage(hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(x, y));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.