【发布时间】:2018-03-30 03:19:51
【问题描述】:
我希望模拟鼠标左键单击另一个窗口,并按住按钮约 2 秒。我试过以下代码:
int WM_LBUTTONDOWN = 0x0201;
int WM_LBUTTONUP = 0x0202;
SendMessage(hd, WM_LBUTTONDOWN, new IntPtr(1), lParam);
Thread.Sleep(2000);
SendMessage(hd, WM_LBUTTONUP, new IntPtr(1), lParam);
参数“hd”是另一个窗口的句柄,“lParam”包含坐标信息。但这并没有达到我的预期。我使用断点来调试代码。当“WM_LBUTTONDOWN”消息被发送到另一个窗口时,另一个窗口中的按钮被立即点击,而不是被按住等待消息“WM_LBUTTONUP”。
当我使用真正的鼠标单击并按住按钮时,spy++ 显示“WM_LBUTTONDOWN”和“WM_LBUTTONUP”之间除了“WM_MOUSEMOVE”之外没有任何其他消息。 Picture of Spy++ showed
那么,如何在 C# 中模拟鼠标按下并按住?任何建议都会有所帮助,谢谢!
【问题讨论】:
-
想做一件很奇怪的事……为什么?
-
@DonBoitnott 我想在安卓模拟器上模拟鼠标点击,以便自动玩安卓网络游戏。但是游戏会通过测量游戏中的按钮被按住的时间来判断是不是人在玩游戏。人用手指或鼠标点击一个按钮大约需要100毫秒,而模拟点击的软件只需2毫秒。