使用 SendMessage() 的鼠标单击未移交给 window
Mouse click using SendMessage() not getting handed over to the window
简单来说:
我有 2 个模拟器,我正在使用 SendMessage() 模拟点击
我可以发送的模拟器是 Nox
window 层次结构和 window 句柄 我将消息传递给:
它按照预期的方式工作
(使用spy++监听消息)
代码:
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"
window 层次结构和 window 句柄 我将消息传递给:
但是当传递与之前相同的代码时:
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++ 遍历所有可见 windows 时发现 none。
然后我尝试使用 spy++ 聆听正常的鼠标点击作为消息的样子,并得到了这个:
作为参考,这是没有模拟的相同点击在 Nox Player 上的样子:
我是否使用了错误的代码来发送模拟的鼠标点击,或者我是否将其传递给了错误的 window?
好吧...
通过做一件简单的事情设法解决了我遇到的问题。
运行我的程序有管理员权限
因为我使用 Microsoft Visual Studio 进行所有编程,所以我只需要在管理员模式下启动 Visual Studio。
修复了问题,同时仍然保留了鼠标单击模拟的原始 SendMessage() 方法
简单来说:
我有 2 个模拟器,我正在使用 SendMessage() 模拟点击
我可以发送的模拟器是 Nox
window 层次结构和 window 句柄 我将消息传递给:
它按照预期的方式工作
(使用spy++监听消息)
代码:
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"
window 层次结构和 window 句柄 我将消息传递给:
但是当传递与之前相同的代码时:
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++ 遍历所有可见 windows 时发现 none。
然后我尝试使用 spy++ 聆听正常的鼠标点击作为消息的样子,并得到了这个:
作为参考,这是没有模拟的相同点击在 Nox Player 上的样子:
我是否使用了错误的代码来发送模拟的鼠标点击,或者我是否将其传递给了错误的 window?
好吧...
通过做一件简单的事情设法解决了我遇到的问题。
运行我的程序有管理员权限
因为我使用 Microsoft Visual Studio 进行所有编程,所以我只需要在管理员模式下启动 Visual Studio。
修复了问题,同时仍然保留了鼠标单击模拟的原始 SendMessage() 方法