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

news2024/11/25 14:36:52

目录

前言

开发

需求

初始环境

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.coloradmin.cn/o/1805949.html

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

相关文章

Python爬虫入门与登录验证自动化思路

1、pytyon爬虫 1.1、爬虫简介 Python爬虫是使用Python编写的程序,可以自动访问网页并提取其中的信息。爬虫可以模拟浏览器的行为,自动点击链接、填写表单、进行登录等操作,从而获取网页中的数据。 使用Python编写爬虫的好处是,…

[数据集][目标检测]足球场足球运动员身份识别足球裁判员数据集VOC+YOLO格式312张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):312 标注数量(xml文件个数):312 标注数量(txt文件个数):312 标注类别…

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

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

umap降维,c++用法纪实

全是血泪&#xff0c;可惜对于大量数据&#xff0c;速度还是太慢。 一、代码 // ConsoleApplication2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream>#include "knncolle/knncolle.hpp" #include "Umap.…

MSPM0l1306——配置滴答定时器

我们配置好了滴答定时器之后&#xff0c;还要手动编写滴答定时器的中断服务函数&#xff0c;因为我们开启的滴答定时器的中断&#xff0c;当滴答定时器的计数值从我们设置的值减到0时&#xff0c;就会触发一次中断&#xff0c;触发中断就会执行中断服务函数。各个中断的中断服务…

Bio-Info每日一题:Rosalind-05-Computing GC Content

&#x1f389; 进入生物信息学的世界&#xff0c;与Rosalind一起探索吧&#xff01;&#x1f9ec; Rosalind是一个在线平台&#xff0c;专为学习和实践生物信息学而设计。该平台提供了一系列循序渐进的编程挑战&#xff0c;帮助用户从基础到高级掌握生物信息学知识。无论你是初…

python开发扑克牌游戏

用一个列表保存54张扑克牌&#xff0c;先洗牌,再按斗地主的发牌方式把牌发给三个玩家&#xff0c;多的3张牌给第一个玩家(地主)最后把每个玩家手上的牌显示出来。 import random# 定义卡牌列表 cards [] # 定义花色列表 suites [黑桃, 红心, 草花, 方块] # 定义点数列表 fac…

牛客热题:最长公共子序列Ⅱ

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;最长公共子序列Ⅱ题目链接方法一…

QT串口调试助手V2.0(源码全开源)--上位机+多通道波形显示+数据保存(优化波形显示控件)

首先关于Qt的安装和基本配置这里就不做重复说明了&#xff0c;注&#xff1a;本文在Qt5.14基础上完成 完整的项目开源仓库链接在文章末尾 图形控件——qcustomplot QCustomPlot是一个基于Qt框架的开源绘图库&#xff0c;用于创建高质量的二维图表和数据可视化。 QCustomPlot…

IO-源码阅读 glibc 2.35

文章目录 参考缓存机制IO_FILE_PLUSfopenfopen_internal_IO_no_init_IO_old_init _IO_new_file_init_internal_IO_link_in _IO_new_file_fopen_IO_file_open fread_IO_fread_IO_sgetn_IO_doallocbuf_IO_file_doallocate_IO_file_stat_IO_setb __underflow_IO_new_file_underflo…

windows软件手动设置开机自启

博主需求 由于很多线上课程使用outlook进行教学&#xff0c;课程链接都关联到outlook日历中了&#xff0c;只要保持outlook是打开的状态就能收到上课提醒&#xff0c;非常方便。 但是有时候会忘记打开outlook查看&#xff0c;我偶尔会错过一些提醒QAQ。 所以如何让outlook常…

Qwen2大模型微调入门实战(完整代码)

Qwen2是通义千问团队的开源大语言模型&#xff0c;由阿里云通义实验室研发。以Qwen2作为基座大模型&#xff0c;通过指令微调的方式实现高准确率的文本分类&#xff0c;是学习大语言模型微调的入门任务。 指令微调是一种通过在由&#xff08;指令&#xff0c;输出&#xff09;对…

解读下/etc/network/interfaces配置文件

/etc/network/interfaces 是一个常见的网络配置文件&#xff0c;通常在 Debian 及其衍生版本的 Linux 发行版中使用。该文件用于配置网络接口和网络连接参数&#xff0c;允许用户手动设置网络连接的属性&#xff0c;包括 IP 地址、子网掩码、网关、DNS 服务器等。 以下是一个可…

LeetCode热题100—链表(二)

19.删除链表的倒数第N个节点 题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 …

人工智能程序员应该有什么职业素养?

人工智能程序员应该有什么职业素养&#xff1f; 面向企业需求去学习AI必备技能实战能力实战能力提升策略 面向企业需求去学习 如果想要应聘AI相关的岗位&#xff0c;就需要知道HR和管理层在招聘时需要考察些什么&#xff0c;面向招聘的需求去学习就能具备AI程序员该有的职业素…

Golang发送邮件如何验证身份?有哪些限制?

Golang发送邮件需要哪些库&#xff1f;怎么设置邮件发送的参数&#xff1f; 对于开发者而言&#xff0c;使用Golang发送邮件是一种常见需求。然而&#xff0c;在发送邮件的过程中&#xff0c;验证身份是一个至关重要的环节&#xff0c;它确保了邮件的可靠性和安全性。A将探讨G…

linux业务代码性能优化点

planning优化的一些改动----------> 减少值传递&#xff0c;多用引用来传递 <---------- // ----------> 减少值传递&#xff0c;多用引用来传递 <---------- // 例1&#xff1a; class A{}; std::vector<A> v; // for(auto elem : v) {} // 不建议&#xff…

FreeRTOS实时系统 在任务中增加数组等相关操作 导致单片机起不来或者挂掉

在调试串口任务中增加如下代码&#xff0c;发现可以用keil进行仿真&#xff0c;但是烧录程序后&#xff0c;调试串口没有打印&#xff0c;状态灯也不闪烁&#xff0c;单片机完全起不来 博主就纳了闷了&#xff0c;究竟是什么原因&#xff0c;这段代码可是公司永流传的老代码了&…

【小白专用24.6.8】c#异步方法 async task调用及 await运行机制

await是C#中用于等待异步操作完成的关键字。它通常用于异步方法内部&#xff0c;使得在等待异步操作期间&#xff0c;线程可以继续执行其他操作&#xff0c;从而保持程序的响应性。 在使用await时&#xff0c;需要注意以下几点&#xff1a; 1. async修饰符&#xff1a; 使用…

Mac环境下,简单反编译APK

一、下载jadx包 https://github.com/skylot/jadx/releases/tag/v1.4.7 下载里面的这个&#xff1a;下载后&#xff0c;找个干净的目录解压&#xff0c;我是放在Downloads下面 二、安装及启动 下载和解压 jadx&#xff1a; 下载 jadx-1.4.7.zip 压缩包。将其解压到你希望的目…