c++ - 使用 SendMessage() 的鼠标单击未移交给窗口
问题描述
简单地说:
我有 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 播放器上没有模拟的相同点击的样子:
我是使用错误的代码发送模拟鼠标点击还是将其传递到错误的窗口?
解决方案
好的,所以...
通过做一件简单的事情来解决我遇到的问题。
以管理员权限运行我的程序
由于我使用 Microsoft Visual Studio 进行所有编程,因此我只需要以管理员模式启动 Visual Studio。
修复了仍然保留鼠标点击模拟的原始 SendMessage() 方法的问题
推荐阅读
- c# - 如何在 C# 中使用带有字符串的 switch-case?
- laravel-5 - Laravel 5 生产迁移——无法禁用迁移警告
- react-native - 尝试在本机反应中使用此功能更改文本颜色
- php - SQL 查找特定日期在 dateTimeStart 和 dateTimeFinish 之间或之间的条目
- node.js - Nodejs只有4个远程http请求同时执行
- excel - 将同一工作簿中的 650 个工作表合并为一页
- sql - SQL 查询中的通配符替换
- c# - 使用 C# MVC 解析日期时间字符串
- c - Curl:如何在程序运行时清除存储的数据
- ruby-on-rails - Heroku 在资产预编译上部署失败