【发布时间】:2018-04-25 18:27:50
【问题描述】:
简单地说:
我有 2 个模拟器,我正在模拟使用 SendMessage() 的点击
我可以发送这个的模拟器是 Nox
我将消息传递给的窗口层次结构和窗口句柄:
还有代码:
SendMessage(NoxPlayer, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(width, height));
SendMessage(NoxPlayer, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(width, height));
SendMessage(NoxPlayer, WM_MOUSEMOVE, 0, MAKELPARAM(width, height));
我在最后添加了 WM_MOUSEMOVE,因为 noxplayer 认为我在没有它的情况下按住 L_Mouse 点击。
现在我的问题出在这里...我有另一个模拟器,叫做“MEmu player”
我将消息传递给的窗口层次结构和窗口句柄:
但是当传递与之前相同的代码时:
SendMessage(MEmu, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(width, height));
SendMessage(MEmu, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(width, height));
SendMessage(MEmu, WM_MOUSEMOVE, 0, MAKELPARAM(width, height));
我没有在应用程序上获得模拟点击。我尝试收听我传递的任何消息,但在使用 spy++ 查看所有可见窗口时没有发现任何消息。
然后我尝试使用 spy++ 聆听正常的鼠标单击作为消息的样子,并得到了这个:
作为参考,这是在 Nox 播放器上没有模拟的相同点击的样子:
我是否使用了错误的代码来发送模拟的鼠标点击,或者我是否将它传递到了错误的窗口?
【问题讨论】:
-
据我记得,您不应该尝试使用 WM_LBUTTONDOWN、WM_LBUTTONUP 等来模拟鼠标点击。这些消息是由 Windows 操作系统生成的,供您的应用程序处理,而不是让您尝试伪造。通常使用的函数是(据我记得,
SendInput或类似的)。 -
@PaulMcKenzie 我刚刚看到这个:stackoverflow.com/a/12363393/7346067 我设法获得了让我的鼠标右键单击的代码,但它并没有移动我的鼠标,它只是右键单击。同样从我读到的,它说它会将我的鼠标指针移到屏幕上?不过我不希望这种情况发生
标签: c++ windows sendmessage