雷电模拟器中控实现,直通源码
目录
前言
开发
需求
初始环境
UI搭建
功能实现
前言
本篇为易语言雷电模拟器中控项目实现操作,一般用于:脚本开发多线程模拟操作等起始模板框架,使用易语言原因为其前后端一体化,对于脚本开发而言更为方便。
开发
需求
以下为雷电模拟器中控项目的需求:
- 一键启动、关闭所有模拟器以及单个模拟器的操作
- 前端界面展示所有模拟器信息,包含:模拟器名称、顶层句柄、绑定句柄
初始环境
代码编写环境如下:易语言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, )
' 刷新窗口信息
模拟器_取模拟器信息 ()
效果演示
上述就是针对雷电模拟器中控实现的代码了,最后看看成品效果:
下图为启动程序,刷新窗口信息后的效果图:

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

其他按钮的功能就不继续演示了,感兴趣可以复制粘贴,获取相关模块进行操作
注意点
最后针对几个疑问点进行解答:
- 各个模块发挥的作用?
- 乐玩模块在改处实际上并未使用
- 精益模块只进行了一些延时等简单功能
- 雷电模块是本项目最重要的模块了,用于读取模拟器、操作模拟器等等功能
- 顶层句柄和绑定句柄是什么意思?有什么区别?
- 顶层句柄:其实就是电脑打开雷电模拟器,这个雷电模拟器的窗口句柄
- 绑定句柄:在雷电模拟器内,其实还有一个内置窗口,一般的操作也是在这个窗口执行,所以叫做绑定句柄,绑定句柄也就是这个窗口的句柄
相关文章:
雷电模拟器中控实现,直通源码
目录 前言 开发 需求 初始环境 UI搭建 功能实现 前言 本篇为易语言雷电模拟器中控项目实现操作,一般用于:脚本开发多线程模拟操作等起始模板框架,使用易语言原因为其前后端一体化,对于脚本开发而言更为方便。 开发 需求 以…...
从渲染管线到着色器Shader实践
浏览器渲染管线原理 浏览器渲染管线是浏览器将HTML、CSS和JavaScript转换为用户可见的网页的过程。这一过程涉及多个步骤,包括解析、布局、绘制和合成等。下面是浏览器渲染管线的详细原理: 解析(Parsing): HTML解析:浏览器下载HTML内容后,首先进行HTML解析,将HTML文本…...
LabVIEW开发实验室超导体电流特性测试系统
本系统旨在为学校实验室提供一个基于LabVIEW的超导体电流特性测试平台,通过精确测量超导体在不同温度和电流条件下的电学特性,帮助学生和研究人员深入理解超导体的物理性质。本文将从背景、目标、工作原理、使用方法、操作流程和注意事项等方面详细介绍该…...
C语言之main函数的返回值(在linux中执行shell脚本并且获取返回值)
一:函数为什么要返回值 (1)函数 在设计的时候是设计了参数和返回值,参数是函数的输入,返回值是数据的输出 (2)因为函数需要对外输出数据(实际上是函数运行的一些结果值)…...
【手撕面试题】Vue(高频知识点五)
每天10道题,100天后,搞定所有前端面试的高频知识点,加油!!!在看文章的同时,希望不要直接看答案,先思考一下自己会不会,如果会,自己的答案是什么?想…...
C#有哪些方式实现回调函数、处理异步操作或响应某些条件时的动作
在C#中,除了使用event关键字来定义事件和回调函数(事件处理器)之外,还有几种其他方式来处理异步操作或响应某些条件时的动作: 委托(Delegates): 委托类似于C/C中的函数指针&#x…...
Java:110-SpringMVC的底层原理(上篇)
SpringMVC的底层原理 在前面我们学习了SpringMVC的使用(67章博客开始),现在开始说明他的原理(实际上更多的细节只存在67章博客中,这篇博客只是讲一点深度,重复的东西尽量少说明点) MVC 体系结…...
【HarmonyOS】鸿蒙应用子模块module资源如何获取
【HarmonyOS】鸿蒙应用子模块module资源如何获取 一、问题背景: 在多模块项目工程中,单个模块的资源不会放在主模块中,所以我们需要在子模块中访问自己的资源。如果使用默认的资源获取api,会提示找不到资源。 那如何获取子模块下…...
Centos X系统yum安装mysql数据库
安装之前需要将系统自带的mariadb-libs软件包删除。 检查是否存在mariadb-libs包。 yum list installed|grep mariadb-libs 删除mariadb-libs包 yum -y remove mariadb-libs 声明: 系统:CentOS-7-x86_64-DVD-2009 安装为最小化安装,没…...
Python语言在金融领域的应用探索
Python语言在金融领域的应用探索 Python语言,以其简洁、易读和强大的功能库,近年来在金融领域崭露头角。它不仅为数据分析师、量化分析师和交易员提供了强大的工具,还在风险管理、投资组合优化等方面发挥了重要作用。本文将深入剖析Python语…...
【python/pytorch】已解决ModuleNotFoundError: No module named ‘torch‘
【PyTorch】成功解决ModuleNotFoundError: No module named torch 一、引言 在深度学习领域,PyTorch作为一款强大的开源机器学习库,受到了众多研究者和开发者的青睐。然而,在安装和使用PyTorch的过程中,有时会遇到一些问题和挑战…...
1.nginx介绍
介绍 是一个高性能的http和反向代理服务器。 特点 占用内存少,并发能力强。 nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。 基…...
仓库管理业务在WMS与ERP中如何抉择
当然,以下是WMS(仓库管理系统)与ERP(企业资源计划)系统在仓库管理中的主要区别和各自的优势的整理: 一、主要区别: 1. 功能范围: - WMS:专注于仓库内部运作,…...
RDMA (1)
RDMA是什么 Remote Direct Memory Access(RDMA)是用来给有高速需求的应用释放网络消耗的。 RDMA在网络的两个应用之间进行低延迟,高吞吐的内存对内存的直接数据通信。 InfiniBand需要部署独立的协议。 RoCE(RDMA over Converged Ethernet),也是由InfiniBand Trade Associat…...
pyqt opengl 小黑块
目录 OpenGLWidget_g初始化函数: 解决方法:把初始化函数的parent去掉 pyqt opengl 小黑块 原因: 创建OpenGLWidget_g的时候把main_window作为父类(self)传进去了, self.opengl_widget OpenGLWidget_g(…...
基于JavaScript 如何实现爬山算法以及优化方案
前言 爬山算法(Hill Climbing Algorithm)是一种常见的启发式搜索算法,常用于解决优化问题。其核心思想是从一个初始状态出发,通过逐步选择使目标函数值增大的邻近状态来寻找最优解。接下来,我们将通过 JavaScript 实现…...
Redisson分布式锁原理解析
前言 首先Redis执行命令是单线程的,所以可以利用Redis实现分布式锁,而对于Redis单线程的问题,是其线程模型的问题,本篇重点是对目前流行的工具Redisson怎么去实现的分布式锁进行深入理解;开始之前,我们可以…...
Linux RS232
一、确认硬件信息 RS232: 引脚信息: 二、软件配置 1、pinctrl信息: 2、设备树节点: 3、修改串口支持的模式 三、驱动 bsp/drivers/uart/sunxi-uart.c 四、烧录测试 查看串口参数: stty -F /dev/ttyAS3 -a stty -F…...
英伟达Docker 安装与GPu镜像拉取
获取nvidia_docker压缩包nvidia_docker.tgz将压缩包上传至服务器指定目录解压nvidia_docker.tgz压缩包 tar -zxvf 压缩包执行rpm安装命令: #查看指定rpm包安装情况 rpm -qa | grep libstdc #查看指定rpm包下的依赖包的版本情况 strings /lib64/libstdc |grep GLI…...
智慧交通的神经中枢:利用ARMxy进行实时交通流数据采集
气候变化和水资源日益紧张,精准农业成为了提高农业生产效率、节约资源的关键。在这一变革中,ARMxy工业计算机扮演了核心角色,特别是在智能灌溉系统的实施中。 背景介绍: 某大型农场面临着灌溉效率低、水资源浪费严重的问题。传统的…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
