当前位置: 首页 > news >正文

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

目录

前言

开发

需求

初始环境

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

效果演示

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

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

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

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

注意点

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

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

相关文章:

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

目录 前言 开发 需求 初始环境 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工业计算机扮演了核心角色,特别是在智能灌溉系统的实施中。 背景介绍: 某大型农场面临着灌溉效率低、水资源浪费严重的问题。传统的…...

文心一言使用技巧

前言 文心一言是一款基于人工智能技术的自然语言处理工具,它可以帮助用户生成、编辑和优化各种类型的文本。无论是写作、翻译、总结,还是进行信息提取和数据分析,文心一言都能提供强大的支持。本文将详细介绍文心一言的使用技巧,…...

技术人如何打造研发团队

技术人作为写代码一路走上来,其实不像销售岗位,售后交付岗位与人的打交道那么多。主要是很简单的技术沟通,在慢慢走上管理岗位后,也是依据自己的经验,自己的感觉来管理团队,很多时候自己的事情不但没少&…...

月薪6万,想离职...

大家好,我是无界生长,国内最大AI付费社群“AI破局俱乐部”初创合伙人。这是我的第 39 篇原创文章——《月薪6万,想离职...》 是的,你没有看错,我月薪6万,却想离职,很不可思议吧?周围…...

ReentrantLock底层原理

ReentrantLock public ReentrantLock() {sync new NonfairSync(); }public ReentrantLock(boolean fair) {sync fair ? new FairSync() : new NonfairSync(); }ReentrantLock 的默认实现是非公平锁,实际上 ReentrantLock 中的方法,几乎都让 sync 实现…...

基于JSP的医院远程诊断系统

开头语: 你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言: Java 数据库: MySQL 技术: JSP Servlet JSPBean 工具: IDEA/Eclipse、Navica…...

项目:基于httplib/消息队列负载均衡式在线OJ

文章目录 写在前面关于组件开源仓库和项目上线其他文档说明项目亮点 使用技术和环境项目宏观结构模块实现compiler模块runner模块compile_run模块compile_server模块 基于MVC结构的OJ服务什么是MVC?用户请求服务路由功能Model模块view模块Control模块 写在前面 关于…...

详解python中的pandas.read_csv()函数

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深…...

速盾:DDoS高防IP上设置转发规则

DDoS攻击是一种网络攻击方式,攻击者通过大量请求使目标服务器或网络资源超负荷运行,导致服务不可用。为了保护网络安全,减少DDoS攻击对网络的影响,使用DDoS高防IP可以是一种解决方案。而在DDoS高防IP上设置转发规则可以提高网络的…...

京东一面测开(KPI)

京东一面测开凉经(笔试ak) 3.8 面试官:你很优秀啊,你不用谦虚 没问技术相关,问了如何设计测试用例步骤一些理论: 什么是软件测试?其目的是什么? 软件测试有哪些类型?请列…...

Django框架中级

Django框架中级 – 潘登同学的WEB框架 文章目录 Django框架中级 -- 潘登同学的WEB框架 中间件自定义中间件常用中间件process_view() 使用中间件进行URL过滤 Django生命周期生命周期分析 Django日志日志配置filter过滤器自定义filter 日志格式化formatter Django信号内置信号定…...

网站带gov后缀/南京高端品牌网站建设

配置文件 #h2 数据库配置#配置数据库连接地址spring.datasource.urljdbc:h2:sunniwell:sos#配置数据库驱动spring.datasource.driver-class-nameorg.h2.Driver#配置数据库用户名spring.datasource.usernameroot#配置数据库密码spring.datasource.passwordsunniwell#配置能远程访…...

怎样做网站结构优化/西安网站设计开发

好程序员Java教程分享JavaScript常见面试题一:1.使用 typeof bar "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱?尽管 typeof bar "object" 是检查 bar 是否对象的可靠方法,令人惊讶的是在JavaScript中 nul…...

网站建设免费域名/北京seo经理

如果遇到死锁了,怎么解决呢?找到原始的锁ID,然后KILL掉一直持有的那个线程就可以了, 但是众多线程,可怎么找到引起死锁的线程ID呢? MySQL 发展到现在,已经非常强大了,这个问题很好解…...

中国住建网查询证书/seo小白入门

iOS 可变参数(va_list,va_start,va_end) 例如:UIAlertView的init方法中的otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION等多个可变参数 NSString的initWithFormat:(NSString *)format, ...等多个可变参…...

广告创意设计论文/seo研究中心qq群

Delphi XE5中的新增内容 Delphi XE5是所有Delphi开发人员的必须备升级,并且是来自Embarcadero的获奖的、多设备应用开发解决方案的最新版本。使用Delphi XE5的新特性,以交付应用Android、 iOS、Windows 和OS X。以PC机、平板电脑和智能手机为目标&#x…...

做电子商务系统网站建设/广州排前三的seo公司

将 C 或 C 源代码编译成可执行文件分成两步:第一步是将每个源代码文件分别编译成可重定位文件(relocatable,扩展名为 .o),第二步是将所有的可重定位文件链接成可执行文件。在 Linux 中,可重定位文件和可执行文件的格式都是 ELF(Ex…...