目录
前言
本篇为易语言雷电模拟器中控项目实现操作,一般用于:脚本开发多线程模拟操作等起始模板框架,使用易语言原因为其前后端一体化,对于脚本开发而言更为方便。
开发
需求
以下为雷电模拟器中控项目的需求:
- 一键启动、关闭所有模拟器以及单个模拟器的操作
- 前端界面展示所有模拟器信息,包含:模拟器名称、顶层句柄、绑定句柄
初始环境
代码编写环境如下:易语言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, )
' 刷新窗口信息
模拟器_取模拟器信息 ()
效果演示
上述就是针对雷电模拟器中控实现的代码了,最后看看成品效果:
下图为启动程序,刷新窗口信息后的效果图:
下图为点击一键启动后的效果图:
其他按钮的功能就不继续演示了,感兴趣可以复制粘贴,获取相关模块进行操作
注意点
最后针对几个疑问点进行解答:
- 各个模块发挥的作用?
- 乐玩模块在改处实际上并未使用
- 精益模块只进行了一些延时等简单功能
- 雷电模块是本项目最重要的模块了,用于读取模拟器、操作模拟器等等功能
- 顶层句柄和绑定句柄是什么意思?有什么区别?
- 顶层句柄:其实就是电脑打开雷电模拟器,这个雷电模拟器的窗口句柄
- 绑定句柄:在雷电模拟器内,其实还有一个内置窗口,一般的操作也是在这个窗口执行,所以叫做绑定句柄,绑定句柄也就是这个窗口的句柄