鼠标点击使用SendMessage()没有被移交给窗口

时间:2018-04-25 18:27:50

标签: c++ windows sendmessage

简单地说:

我有2个模拟器,我使用SendMessage()

模拟点击

我可以发送给它的模拟器是Nox

窗口层次结构和窗口句柄我将消息传递给:

Window hierarchy

它的工作方式与它的目的一样 (使用spy ++收听消息) 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播放器"

的模拟器

窗口层次结构和窗口句柄我将消息传递给:

MEmu hierarchy

但是当传递与以前相同的代码时:

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 ++听取正常的鼠标点击看起来像消息的方式,并得到了这个:

MEmu

作为参考,这是没有模拟的相同点击在Nox播放器上的样子:

Nox player message

我使用错误的代码发送模拟鼠标点击还是我将其传递给了错误的窗口?

1 个答案:

答案 0 :(得分:0)

好的......

通过做一件简单的事情来解决我遇到的问题。

以管理员权限运行我的程序

由于我使用Microsoft Visual Studio进行所有编程,因此我只需以管理员模式启动Visual Studio。

修复了问题,同时仍保留鼠标单击模拟的原始SendMessage()方法