递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 22|回复: 1
打印 上一主题 下一主题

[AI开发] 雷电模拟器操作模块

[复制链接]

3

主题

39

帖子

502

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
502
跳转到指定楼层
楼主
发表于 4 小时前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. 一、模块简介
  2. 本模块把雷电模拟器9 自带的 ldconsole.exe 命令行接口封装为火山视窗全中文方法, 提供实例管理、应用管理、ADB 控制、截图、点击输入等能力,用于开发多开群控、 自动化测试等工具。

  3. 重要说明:经实测,雷电9(v9.5.29)安装目录中不存在 ldconsole.dll, ldconsole.exe 本身也不导出任何函数(无法 LoadLibrary 调用)。因此本模块采用 "进程 + 管道"方式调用 ldconsole.exe——这也是雷电官方提供的唯一自动化接口。 对使用者来说封装后都是中文方法调用,没有区别。

  4. 二、文件清单

  5. text
  6. 雷电模拟器操作模块\
  7. ├── 雷电操作.wsv              模块源码(唯一必需文件)
  8. ├── 雷电操作.vgrp             模块定义文件(按模块方式安装时需要)
  9. ├── 使用说明.md               本文件
  10. └── 示例工程\
  11.     ├── 雷电操作示例.vsln     解决方案(编译入口)
  12.     └── 雷电操作示例\
  13.         ├── 雷电操作示例.vprj 项目文件
  14.         └── 主程序.wsv       示例窗口程序
  15. 三、安装方法(二选一)
  16. 方式A(推荐,模块化):

  17. 把 雷电操作 整个文件夹(含 雷电操作.wsv 和 雷电操作.vgrp)复制到 火山安装目录的 plugins\vprj_win\classlib\user\ 下;
  18. 在火山 IDE 中:项目"模块"处右键 → 添加模块 → 选择 雷电操作.vgrp。
  19. 方式B(最简单):直接把 雷电操作.wsv 复制到你的项目源码目录, 并在项目文件列表中加入该文件即可(无需 .vgrp)。

  20. 依赖:仅"视窗基本类"(任何项目默认都有)。界面示例另需 MFC 或 WTL 界面基本类。 Win32 / x64 均可编译,无第三方 DLL。

  21. 四、方法速查
  22. 基础核心
  23. 方法        说明
  24. 自动定位安装目录()        自动从注册表/常见位置定位 ldconsole.exe,返回完整路径
  25. 执行控制命令(命令参数, 是否等待, 输出内容)        执行任意 ldconsole 命令(本模块所有功能的基础,也是扩展命令的入口)
  26. 运行进程(完整命令行, 输出字节集, 是否等待)        通用"运行程序并取输出"(可复用于其它控制台程序)
  27. 实例管理
  28. 取实例列表() / 取实例数量() / 取实例标题(序号) / 取实例信息(序号, 信息) / 是否运行中(序号) / 启动实例(序号, 是否等待) / 重启实例 / 关闭实例 / 关闭全部实例() / 复制实例(源序号, 新标题) / 删除实例(序号) / 重命名实例 / 修改实例配置(序号, 配置项, 配置值) / 限制CPU占用(序号, 百分比) / 排列模拟器窗口()

  29. 修改实例配置 常用配置项: resolution = "1280,720,240"、cpu = 1~4、memory = 256~8192、 imei/imsi/simserial/androidid/mac = auto 或指定值、pnumber、manufacturer、 model、root = 0/1、autorotate = 0/1、lockwindow = 0/1

  30. 应用管理
  31. 安装应用(序号, APK路径) / 卸载应用(序号, 包名) / 运行应用(序号, 包名) / 停止应用(序号, 包名) / 备份应用 / 恢复应用

  32. ADB 控制与输入
  33. 方法        对应 adb 命令
  34. 执行ADB命令(序号, 命令, 输出)        任意 ADB 命令(万能入口)
  35. 截图(序号, 保存路径)        screencap + pull,存为 PNG
  36. 点击坐标(序号, x, y)        input tap
  37. 滑动屏幕(序号, x1, y1, x2, y2, 毫秒)        input swipe
  38. 输入文本(序号, 文本)        input text(仅 ASCII,中文见下文常见问题)
  39. 模拟按键(序号, 键码)        input keyevent(3=HOME 4=返回 26=电源…)
  40. 上传文件(序号, 本地, 手机) / 下载文件(序号, 手机, 本地)        push / pull
  41. <font color="#ff0000">五、多线程用法(群控核心)</font>
  42. 每条命令都是独立进程,不同线程操作不同实例互不干扰,直接并行即可:


  43. volcano
  44. 变量 工作线程 <类型 = 线程类>          // 每个实例一个线程,或用线程池
  45. 方法 线程类_线程运行 <接收事件 类型 = 整数>
  46. 参数 来源对象 <类型 = 线程类>
  47. 参数 标记值 <类型 = 整数>
  48. {
  49.     // 本线程专职控制实例1(其它线程控制0、2、3...)
  50.     循环判断首 ()
  51.     {
  52.         雷电操作类.点击坐标 (1, 400, 300)
  53.         雷电操作类.输入文本 (1, "hello")
  54.         如果 (雷电操作类.截图 (1, "D:\\snap\\vm1.png"))
  55.         {
  56.             // 配合 CV图像AI库 做模板匹配找图后点击
  57.         }
  58.     }
  59.     循环判断尾 (来源对象.是否需要退出 (200) == 假)
  60. }
  61. 注意事项:

  62. 窗口控件更新回到主线程(参考官方"多线程"示例:线程里更新控件属性后调 刷新显示());
  63. 多线程写同一文件(如日志、截图文件名)需要区分名字或加互斥锁;
  64. 启动实例 等待完成模式会阻塞到模拟器完全启动,批量启动请放线程或用异步模式;
  65. 运行进程 等待模式无超时上限,正常 ldconsole 命令秒级返回,勿对可能挂死的程序使用。
  66. 六、找图点击的推荐组合

  67. text
  68. 截图(序号, "D:\\snap\\vm0.png")
  69. → CV图像AI库: CV矩阵类 读入图片 → 模板匹配找小图位置
  70. → 得到坐标 → 点击坐标(序号, x, y)
  71. 七、常见问题
  72. Q: 提示找不到 ldconsole.exe? 设置 雷电操作类.控制程序路径 = "D:\\你的目录\\LDPlayer9\\ldconsole.exe"(放启动方法最前面),或确认模块自动定位:注册表 HKCU\SOFTWARE\leidian\LDPlayer9\InstallDir。

  73. Q: 输入文本不支持中文? Android 的 input text 不支持中文。方案一:模拟器内装 ADBKeyboard 输入法后用 执行ADB命令 发广播;方案二:用 模拟按键 + 剪贴板。ASCII 字符可直接用 输入文本。

  74. Q: 想备份/恢复整个模拟器(不只是应用)? 用万能入口:执行控制命令 ("backup --index 0 --file "D:\\bak.lds"", 真, 输出),恢复用 restore。

  75. Q: 想用实例标题而不是序号? 用 取实例列表() 原始文本自行匹配标题列,或继续用序号(群控场景推荐序号)。

  76. 八、依赖与验证状态声明(重要)
  77. 依赖声明:本模块为零第三方依赖——只使用火山官方"视窗基本类"(多字节到文本、 取文本注册项2、文本到整数、字节集类、文本数组类等)与 Windows 系统自带 API (CreateProcessW、匿名管道、注册表)。不包含任何第三方模块的代码或调用, Win32 / x64 通用,无需额外 DLL。

  78. ✅ 已实测验证:ldconsole v9.5.29 全部 44 个命令表(来自本机帮助输出)、 list2/isrunning 输出格式、输出为 GBK 编码、list2 字段含义(未运行状态实例)。
  79. ✅ 纯官方实现:核心方法"运行进程"由标准 Win32 控制台捕获流程 (创建管道→隐藏窗口启动进程→循环读取输出→取退出码)自行编写; 火山侧全部使用官方基础类方法(签名均经视窗基本类源码核对)。
  80. ⚠️ 未编译验证:本模块未在本机 VolDev 中编译(未检测到安装)。首次编译如有 报错,把编译器报错原样发回即可快速修正。
  81. ⚠️ list2 运行中实例的字段(字段5为进程ID)基于未运行状态推断,启动一个实例后 调 取实例列表() 即可核对;运行状态精确判断以 是否运行中() 方法为准。
复制代码
雷电模拟器操作模块.rar (13.84 KB, 下载次数: 3)
回复

使用道具 举报

29

主题

586

帖子

4542

积分

金牌会员

Rank: 9Rank: 9Rank: 9

积分
4542
沙发
发表于 半小时前 | 只看该作者
感谢分享,体力活吖,一直想封装来着,太多命令了,一直没动
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2026-10-30 12:17 , Processed in 0.095066 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表