• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[郭立员] [按键精灵]多开模拟器读取同一文本不重复 [复制链接]

1#
大家好,我是3分钟学堂的郭立员,今天带了的是一个多开模拟器读取文本时内容不重复的教程。
使用场景

多模拟器登录app,账号密码保存在同一个文本中,读取方式是读一行删一行,理论上来说是没问题,但是实际操作会出现多个模拟器读取到同一个账号密码,这期代码就是解决这个问题的。

实现原理

我把读取文本的过程分成几个阶段:先报名、再排队,最后依次读取。
具体来讲是这样的,“先报名”就是模拟器把自己的序号(imsi码)传入到共享文件夹里面,“再排队”是按照先后顺序把模拟器的imsi码写入到文本里面,“依次读取”指的是从存imsi文本中的第一个imsi码的模拟器开始读取,第一个读完了,第二个读,依次类推。

代码过程

①获取模拟器的imsi码
  1. Dim imsi=Device.GetImsi()
复制代码
②新建一个imsi存储文本
  1. If dir.Exist("/sdcard/pictures/imsi.txt")=0 Then file.write ("/sdcard/pictures/imsi.txt")End If
复制代码
③使用追加命令把模拟式imsi码写入文本
  1. file.Append "/sdcard/pictures/imsi.txt", imsi & "\n"
复制代码
④读取文本中的imsi码
  1. dim arr=file.ReadLines("/sdcard/pictures/imsi.txt")
复制代码
⑤判断读取文本后的imsi中,第一个是不是本机imsi码
  1. If arr(0) = imsi Then
复制代码
⑥如果上一步判断成立,开始执行读取文本,已经读后删除文本
  1. Dim txt=file.readline("/sdcard/pictures/a.txt",1) Delay 50file.DeleteLine "/sdcard/pictures/a.txt", 1Delay 50
复制代码
⑦删除imsi文本中第一个imsi码,这个过程表示当前模拟器读取完成,其他模拟器就可以读取文本了。
  1. file.DeleteLine "/sdcard/pictures/imsi.txt", 1
复制代码
⑧假设第⑤步的判断不成立,也就是有别的模拟器排在前面,那么就要循环第④至⑦步,一直轮到当前模拟器可以读取文本为止,同时退出循环。
核心内容

通常我们使用多模拟器的时候会用到模拟器自带的同步器功能,这个时候只需要操作一个模拟器,其他模拟器就和它完成同样的操作,当我们使用同步器启动脚本时,所有脚本同时开启,同一时间读取文本,这个时候就会出现同一个账号密码被多个模拟器读取。
我们这期文章中使用了一个“缓冲”文本,先把要读取的模拟器imsi码存起来,然后按顺序执行,就把原本的“同步读取”变成了“异步读取”,有效防止脚本读取到重复的文本。

备注
本期这个操作逻辑的代码,我封装测试了4个模拟器多开使用正常。对于更多数量的测试如果有问题可以在文章下方留言。

扫码免费获取我的基础教程【视频教程】
扫码下方二维码关注我的公众号:3分钟学堂

QQ交流群:936858410
2#

支持一下,刚好帮到我

3#

很牛

4#

若该窗口执行任务比较慢,那不是要占用资源了

5#

想法不错,就是对于那种执行读取文本不一定同步,甚至完成一个流程耗时较长的,所以为了避免有可能获取重复文本的情况做这种处理很浪费等待时间,建议写个简单的web服务器交互就ok了







Yeah分享

发新话题 回复该主题