雷电模拟器中控实现,直通&源码

时间:2024-06-09 20:13:32

目录

前言

开发

需求

初始环境

UI搭建

功能实现


前言

        本篇为易语言雷电模拟器中控项目实现操作,一般用于:脚本开发多线程模拟操作等起始模板框架,使用易语言原因为其前后端一体化,对于脚本开发而言更为方便。


开发

需求

        以下为雷电模拟器中控项目的需求:

  1. 一键启动、关闭所有模拟器以及单个模拟器的操作
  2. 前端界面展示所有模拟器信息,包含:模拟器名称、顶层句柄、绑定句柄

初始环境

        代码编写环境如下:易语言5.9加密狗版、精益模块、雷电模块、乐玩模块,接下来新建Windows窗口程序开始编写代码。


UI搭建

       现在进行简单的UI页面搭建,UI页面如下:

  • 超级列表框_窗口信息:展示序号、模拟器名称、顶层、绑定句柄、信息
  • 按钮_一键启动:点击按钮后启动编辑框_启动模拟器对应数量的模拟器,间隔时间为编辑框_启动模拟器间隔时间
  • 按钮_一键关闭:一键关闭所有正在运行的模拟器
  • 按钮_刷新:刷新超级列表框_窗口信息的信息
  • 编辑框_启动模拟器数量:输入整数型数据,默认为3
  • 编辑框_启动模拟器间隔时间:输入整数型数据,默认为5
  • 编辑框_模拟器起始路径:输入文本型数据,内容为雷电模拟器起始路径,默认为:D:\雷电模拟器\leidian\LDPlayer9\


功能实现

        首先针对需求一:一键启动、关闭所有模拟器以及单个模拟器的操作进行功能实现,相关UI如下:

  • 编辑框_模拟器起始路径:用于读取模拟器信息,通过雷电模块相关命令实现
  • 按钮_一键启动:点击按钮后执行一键启动模拟器命令
  • 按钮_一键启动:点击按钮后执行一键关闭模拟器命令
  • 按钮_选中启动:选中对应模拟器,点击按钮后启动该模拟器
  • 按钮_选中关闭:选中对应模拟器,点击按钮后关闭该模拟器
  • 编辑框_启动模拟器间隔时间:如名

        针对需求二:前端界面展示所有模拟器信息,包含:模拟器名称、顶层句柄、绑定句柄,我们通过雷电相关模块将获取的返回值进行操作,相关UI如下:

  • 超级列表框_窗口信息:展示序号、模拟器名称、顶层、绑定句柄、信息

        以下为实现代码:

        全局变量

.版本 2

.全局变量 雷电, 雷电dnconsole操作

        窗口程序集_启动窗口

.版本 2

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕

' 雷电模拟器路径
雷电.置模拟器目录 (_启动窗口.编辑框_模拟器路径.内容)

.子程序 _按钮_全部启动_被单击

' 一键启动模拟器,并刷新界面信息
模拟器_一键启动 ()

.子程序 _按钮_全部关闭_被单击

' 一键关闭模拟器,并刷新界面信息
模拟器_一键关闭 ()

.子程序 _按钮_选中启动_被单击

' 启动选中模拟器,并刷新界面信息
模拟器_选中启动 ()

.子程序 _按钮_选中关闭_被单击

' 关闭选中模拟器,并刷新界面信息
模拟器_选中关闭 ()

.子程序 _按钮_刷新_被单击

' 刷新窗口信息
模拟器_取模拟器信息 ()

        功能_模拟器程序集

.版本 2
.支持库 iext

.程序集 功能_模拟器

.子程序 模拟器_取模拟器信息, , 公开
.局部变量 局_数据, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 局_单分割, 文本型, , "0"

' 清楚当前窗口信息
_启动窗口.超级列表框_窗口信息.全部删除 ()
' 取全部模拟器数据
雷电.取全部模拟器 (局_数据)
' 展示模拟器信息
.计次循环首 (取数组成员数 (局_数据), i)
    局_单分割 = 分割文本 (局_数据 [i], “,”, )
    _启动窗口.超级列表框_窗口信息.插入表项 (, , , , , )
    _启动窗口.超级列表框_窗口信息.置标题 (i - 1, 0, 到文本 (i))
    _启动窗口.超级列表框_窗口信息.置标题 (i - 1, 1, 到文本 (局_单分割 [2]))
    _启动窗口.超级列表框_窗口信息.置标题 (i - 1, 2, 到文本 (局_单分割 [3]))
    _启动窗口.超级列表框_窗口信息.置标题 (i - 1, 3, 到文本 (局_单分割 [4]))
    .如果真 (到整数 (局_单分割 [3]) ≠ 0)
        _启动窗口.超级列表框_窗口信息.置标题 (i - 1, 4, “启动”)
    .如果真结束
    .如果真 (到整数 (局_单分割 [3]) = 0)
        _启动窗口.超级列表框_窗口信息.置标题 (i - 1, 4, “未启动”)
    .如果真结束

.计次循环尾 ()

.子程序 模拟器_一键启动, , 公开
.局部变量 i, 整数型
.局部变量 模拟器_数量, 整数型
.局部变量 间隔时间, 整数型

' 获取要启动模拟器的数量和间隔时间
模拟器_数量 = 到整数 (_启动窗口.编辑框_模拟器启动数量.内容)
间隔时间 = 到整数 (_启动窗口.编辑框_模拟器启动间隔时间.内容) × 1000
' 一键启动模拟器,并刷新窗口信息
.计次循环首 (模拟器_数量, i)
    雷电.启动模拟器 (i - 1, )
    程序_延时 (间隔时间, )
.计次循环尾 ()
程序_延时 (5000, )
' 刷新窗口信息
模拟器_取模拟器信息 ()

.子程序 模拟器_一键关闭

' 一键关闭模拟器,并刷新窗口信息
雷电.关闭所有模拟器 ()
程序_延时 (5000, )
' 刷新窗口信息
模拟器_取模拟器信息 ()

.子程序 模拟器_选中启动
.局部变量 索引, 整数型

' 启动模拟器
索引 = _启动窗口.超级列表框_窗口信息.现行选中项
雷电.启动模拟器 (索引, )
程序_延时 (5000, )
' 刷新窗口信息
模拟器_取模拟器信息 ()

.子程序 模拟器_选中关闭
.局部变量 索引, 整数型

' 关闭模拟器
索引 = _启动窗口.超级列表框_窗口信息.现行选中项
雷电.关闭模拟器 (索引)
程序_延时 (5000, )
' 刷新窗口信息
模拟器_取模拟器信息 ()

效果演示

        上述就是针对雷电模拟器中控实现的代码了,最后看看成品效果:

        下图为启动程序,刷新窗口信息后的效果图:

        下图为点击一键启动后的效果图:

          其他按钮的功能就不继续演示了,感兴趣可以复制粘贴,获取相关模块进行操作

注意点

        最后针对几个疑问点进行解答:

  • 各个模块发挥的作用?
    • 乐玩模块在改处实际上并未使用
    • 精益模块只进行了一些延时等简单功能
    • 雷电模块是本项目最重要的模块了,用于读取模拟器、操作模拟器等等功能
  • 顶层句柄和绑定句柄是什么意思?有什么区别?
    • 顶层句柄:其实就是电脑打开雷电模拟器,这个雷电模拟器的窗口句柄
    • 绑定句柄:在雷电模拟器内,其实还有一个内置窗口,一般的操作也是在这个窗口执行,所以叫做绑定句柄,绑定句柄也就是这个窗口的句柄