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

目录

前言

开发

需求

初始环境

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, )
' 刷新窗口信息
模拟器_取模拟器信息 ()

效果演示

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

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

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

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

注意点

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/25348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言详解(联合和枚举)

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥个人主页:奋斗的小羊 💥所属专栏:C语言 🚀本系列文章为个人学习笔记,在这里撰写…

C++ 标准库string

常用函数 函数名说明at 、[]获取单个字符append追加字符串insert插入字符串length、size字符长度empty返回布尔值,判断是否字符串为空capacity字符串容量reserve预分配内存,至少保证能容纳n个字符而不必重新分配find字符串查找replace字符串替换resize改…

论文阅读KAN: Kolmogorov–Arnold Networks

学习了最近大热的KAN网络 论文地址:https://arxiv.org/pdf/2404.19756 按我个人读论文的习惯总结了如下几点: 1,背景: 1)灵感来源:于Kolmogorov-Arnold表示定理,也就是多变量连续函数可以表…

【html】网页设计语言制作竟然是文科?

网页设计与制作可能偏文科,并认为它相对于其他编程语言来说更容易理解,这是一个很有意思的观点。实际上,HTML(超文本标记语言)作为网页设计与制作的基础,确实具有一些特点,使其在某种程度上更易…

【JavaScript脚本宇宙】创造声音的魔法:深入了解Web音频处理库

聆听创意可能性:解锁Web音频库的神奇功能 前言 在Web开发中,处理音频是一个重要且常见的需求。许多JavaScript库和框架旨在简化音频处理和交互式音乐的创建过程。本文将探讨几个流行的Web音频库,介绍它们的概述、主要特性、使用示例以及适用…

【人工智能】第七部分:ChatGPT的未来展望

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

Java基础 - 异常处理

异常处理 异常处理用于处理程序执行过程中可能出现的错误或异常情况。 检查性异常: 这类异常通常使用 try-catch 块来捕获并处理异常,或者在方法声明中使用 throws 子句声明方法可能抛出的异常。 运行时异常: 这些异常在编译时不强制要求…

LeetCode | 1624.两个相同字符之间的最长子字符串

这道题拿到手想法就是去双重遍历暴力解,对于每个字符,从后往前遍历字符串,找到从后往前一直到本次遍历的这个字符串这段子串中和这个字符串相同的字符位置,然后得到子字符串的长度,和ans存储的值做一个比较&#xff0c…

副业赚钱:10个简单创意,轻松实现财务自由

嗨,我是兰若姐姐,我是从4月26号开始日更博客的,之前一直分享的是技术文档,但是在这个过程中,我发现这些文档只是解决了某一个人当下遇到的某个具体问题,但是对于他升值加薪没有任何帮助,所以我中…

GameDriver XR测试自动化工具概述

GameDriver XR是一个测试自动化工具,它主要用于扩展和自动化跨现实(Extended Reality,简称XR)应用的测试。XR是一个总括性术语,包括增强现实(AR)、虚拟现实(VR)和混合现实…

Linux入门学习(2)

1.相关复习新的指令学习 (1)我们需要自己创建一个用户,这个用户前期可以是一个root用户,后期使用创建的普通用户 (2)文件等于文件内容加上文件属性,对于文件的操作就包括对于文件内容的操作和文件属性&…

论文Compiler Technologies in Deep Learning Co-Design: A Survey分享

目录 标题摘要引言背景深度学习软件和硬件的发展不同时期的协同设计深度学习协同设计系统神经网络架构设计和优化协同设计技术 用于协同设计的深度学习系统中的编译技术深度学习编译器TVM 生态系统和MLIR生态系统IR转换和优化代码生成运行时和执行模式 Buddy-Compiler: 一个针对…

如何在 iPhone 上恢复已删除的短信

本文介绍如何检索已删除的短信和 iMessage 以及恢复丢失的消息。说明适用于 iOS 17 及更高版本。 如何在 iOS 17及更高版本中恢复文本 恢复已删除短信的最简单方法是使用 iOS 17。从删除短信到恢复它有 30 到 40 天的时间。 在“信息”的对话屏幕中,选择“过滤器”…

梯度提升决策树(GBDT)

GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,是一种迭代的决策树算法,又叫 MART(Multiple Additive Regression Tree),它通过构造一组弱的学习器(树&am…

Valgo,类型安全,表达能⼒强的go验证器

valgo 是一个为 Go 语言设计的类型安全、表达性强且可扩展的验证库。该库的特点包括: github.com/cohesivestack/valgo 类型安全:利用 Go 语言的泛型特性(从 Go 1.18 版本开始支持),确保验证逻辑的类型安全。表达性&a…

input 的 name 属性的作用?

在HTML中,input元素用于创建可以与用户交互的表单控件。其中,name属性用于定义表单字段的名称,也就是对应字段的标识符。 name属性的作用如下: 表单提交:当用户填写表单并提交时,name属性指定的字段名称将…

Python与其他编程语言(如Java、C++)相比有哪些优势?

一、技术难点 在探讨Python与其他编程语言相比的优势时,技术难点在于如何全面、准确地把握并阐述这些优势。这需要对Python、Java、C等编程语言有深入的理解,包括它们的语法特性、应用领域、性能特点、开发效率等。 首先,Python的语法简洁明…

关于Stream.toList()方法使用小记

对照示例 public static void main(String[] args) {final List<String> list new ArrayList<>();list.add("aa");list.add("bb");list.add("cc");list.remove("cc");System.out.println(list);}结果&#xff1a; Stre…

【谣传】不能完全取代HR

https://arxiv.org/pdf/2405.18113 这份研究论文提出了 MockLLM&#xff0c;一个利用大型语言模型&#xff08;LLM&#xff09;角色扮演能力来促进招聘场景中人和职位匹配的框架。它通过模拟面试过程来生成额外的匹配证据&#xff0c;从而提高匹配的准确性。 主要问题和挑战&am…

《Python程序设计》

python编程题 给定一个年份,判断这一年是不是闰年。def is_leap_year(year): if year % 4 != 0: return False elif year % 100 != 0: return True elif year % 400 != 0: return False else: return True # 测试函数 year = int(input("请输入一个年份: &quo…