精华内容
下载资源
问答
  • 这个是pj的 大神破的我只是一个搬运工 杀毒软件报毒 慎重考虑 建议影子系统下使用 且用且珍惜 请低调使用
  • 自动点击器免root版是一款十分简洁好用的屏幕按键精灵
  • B站搜索如下标题即可找到教程(最新) 1、【很全】Auto.js全分辨率免Root手机脚本基础入门视频教程-脚本开发 2、【很全】按键精灵脚本手机脚本基础入门视频教程-脚本开发

    B站搜索如下标题即可找到教程(最新版)
    1、【很全】Auto.js全分辨率免Root手机脚本基础入门视频教程-脚本开发
    2、【很全】按键精灵脚本手机脚本基础入门视频教程-脚本开发

    【很全】Auto.js全分辨率免Root手机脚本基础入门视频教程-脚本开发

    【很全】按键精灵脚本手机脚本基础入门视频教程-脚本开发

     

    展开全文
  • EasyClick 全分辨率免ROOT按键精灵插件,https://easyclick.gitee.io,免ROOT不限手机环境,支持Android 5.0到10,全节点分析不限分辨率
  • 按键精灵最新打包插件
  • EC-按键精灵插件.zip

    2020-08-14 09:16:47
    EasyClick 全分辨率免ROOT按键精灵插件,https://easyclick.gitee.io,免ROOT不限手机环境,支持Android 5.0到10,全节点分析不限分辨率
  • 安卓免root原理

    千次阅读 2013-11-04 11:15:27
    从此功能在Android4.2以上无效来看,应该是...实际上,只是需要 system 文件夹的操作权限而已,ROOT 的第三方应用获取系统目录操作权限的最基本条件。到现在也是。那我们来看一下 LEB 这次更新是通过什么手段来实现的

    从此功能在Android4.2以上无效来看,应该是利用MasterKey,以下为回答原文,为了保持纯技术性,删除原作最后一段的主观评论:


    先回答提问者的问题。众所周知,要卸载系统应用,需要 ROOT 权限。实际上,只是需要 system 文件夹的操作权限而已,ROOT 的第三方应用获取系统目录操作权限的最基本条件。到现在也是。那我们来看一下 LEB 这次更新是通过什么手段来实现的不 ROOT 也可以卸载系统应用的。


    新版 LEB 如果要解锁应用卸载的话,需要开启主动防御。主动防御有两种方式,免ROOT启动和ROOT授权启动。ROOT授权启动这里就不提了。我们来说一下免ROOT启动。点击免ROOT启动,会提示先修复 MaterKey 漏洞。我们点击获取系统补丁。会下载一个安装包并且进入安装模式。


    使用过 Android 手机的同学这时候应该会注意到什么。没错,这是更新。而不是重新安装。有同学就问了,我之前没有安装过一个叫做 “LBE Master Key漏洞补丁” 的东西啊,怎么会是更新呢?没错,这就是 LBE 利用 Master Key 漏洞 实现的更新系统应用。安装之后就会重启,重启之后就可以开启安全防御了。这时候什么卸载系统应用,权限管理等操作都可以实现。这些我们不关心。我们去看看“LBE Master Key漏洞补丁”这货到底是个什么。为什么安装了它就可以实现 免ROOT 模式。我们去系统设置,应用里面找到它。如图。


    事实再一次证明我们是正确的。有一个卸载更新的按钮,这个时候应该一部分同学知道了。只有更新的系统应用才会有卸载更新,否则只有卸载。那我们来卸载更新来看看它到底替换了哪个应用。卸载之后露出了真身。Icon 和 VersionName 都没换,只是加了自己的代码。换了 APP 的名字。


    所以,LEB 的 免 ROOT 的实现原理就是,通过利用 Master Key 漏洞替换系统本身应用而实现加载自己的代码。这个时候自己的代码拥有最高权限。便可以实现卸载系统应用,权限管理等操作。


    我们再说一下为什么 LBE 要替换 Settings Storage 这个应用。简单的说 Settings Storage 是一个 Android 内部程序,在 Android 开机时就会加载,这也是 LBE 要在开机时把自己的代码 HOOK 到系统上的必要条件。


    那为什么 LBE 可以替换系统内部应用呢。其实就是利用了 Master Key 漏洞。在不修改 APP 签名的同时可以修改 APP 的代码。LBE 拿到 Settings Storage 这个 APP。反编译,修改代码,重新打包。就可轻易实现了。而关于 Master Key 漏洞,下面的 Android 的源码应该可以说明了。这里就不详解。

    来源:安卓后院 >> 安卓免root原理 http://www.top139.com/root/36.html
    展开全文
  • 作者hyb1996,源码Auto.js,一个主要由无障碍服务实现的不需要Root权限的类似按键精灵的自动操作软件,可以实现自动点击、滑动、输入文字、打开应用等。 同时有Sublime Text 插件可提供基础的在桌面开发的功能。 ...
  • 一个主要由无障碍服务实现的不需要Root权限的类似按键精灵的自动操作软件,可以实现自动点击、滑动、输入文字、打开应用等。 同时有可提供基础的在桌面开发的功能。 下载地址: Alpha版本: 特性 简单易用的自动操作...
  • 在【android免root脚本制作】自动坐标操作手机——京东金融程序金果... 基于控件的操作是一种稳定高效准确,适配效果强的操作功能,不同于按键精灵等其他软件,基于控件的操作可以说是Auto.js独特的功能。这个功能可...

            在【android免root脚本制作】自动坐标操作手机——京东金融程序金果摇钱树自动收金果 之后,想要做进一步优化,因为基于坐标点击如何屏幕被移动之类就会点击错位,不同手机还需去适配坐标,甚是麻烦,所以改个改为基于控件操作。

            基于控件的操作是一种稳定高效准确,适配效果强的操作功能,不同于按键精灵等其他软件,基于控件的操作可以说是Auto.js独特的功能。这个功能可以帮我们更高效的做出模拟操作行为或者获取当前页面的信息等。这也是要做一个强大的模拟操作脚本必备的功能,所有安卓机型,安卓版本都适用,而且也无需root权限。

    在正式进入脚本教程前,先给萌新们普及点概念:

    (1)什么是控件?        

     控件是指对数据和方法的封装。控件可以有自己的属性和方法,其中属性是控件数据的简单访问者,方法则是控件的一些简单而可见的功能、控件创建过程包括设计、开发、调试工作, 然后是控件的使用。  这样理解可能有点难,萌新可以理解为,控件就是页面上的一个个内容,比如说一个图片就是一个图片控件,一个输入框就是一个输入框控件等等,常见的控件有:TextView,EditText,Button,CheckBox,RadioButton,ImageView,ImageButton,ProgressBar等。然后这些控件有着一定的属性,我们可以通过他们的属性用脚本获取到他们,也可以通过控件类的函数对他进行一定的操作和获取信息等,比如直接通过控件对齐进行点击,设置输入框控件内的文字,获取某控件的位置等等。

    (2)我们如何获取到控件信息         

    在auto.js软件中有直接获取到控件信息的功能,在auto.js软件主页面,点击右上角,打开侧拉菜单,大致中间位置的悬浮窗打开。这个auto.js的悬浮窗就含有获取控件信息的功能。点击悬浮窗我们可以看到有5个功能,中间蓝色的就是用于查看控件信息的功能,点击之后,会让你选择用布局范围分析和布局层次分析。

                                                                     

                                                                

            布局范围分析,使用该功能,可以直接看到当前页面上所有控件的边框即控件位置,这样可以清晰的了解各种控件的位置以及大小。但是这种方法也有缺点,就是比如有两个完全相同大小的控件重叠在一起就看不见了,这时候就要用到布局层次分析。         布局层次分析,即根据软件当前页面的源码布局层次进行观察,这样可以看到所有控件及其层次等。但是这样子对于比较复杂的布局很难进行观察,毕竟内容较多,距离远的话难以比较。所以在布局层次和布局范围中进行切换查看是比较好的获取控件信息的方法。        

    点击选择的控件即可查看控件信息,比较主要的控件信息有id即控件的id属性,text控件的文本属性,bounds控件的边框位置,desc控件的desc值,有些控件会把text控件放空,并把上面的文本写入desc值。clickable/longClickable控件是否可以点击/长按,如果控件的clickable为false那么点击也没用。checked控件是否选中,depth在第几层次,indexInParent在父控件中是第几个,在教程文档的选择器那一栏中有更多属性。这些信息对于以后写脚本都有很大的帮助。        

    生成代码,这个功能可以直接人性化的智能帮你选出如何对一个控件进行操作的代码,这个功能很好用,但是一般情况只会选择最简洁的代码,和我们需要实现的功能可能会稍有偏差,需要我们人为进行修改,但是大部分情况还是可以的。另外比较复杂的布局暂时可能会有获取失败的情况。所以不要太依赖于次功能,只要学会了以下内容,自动生成出来的那些代码,自己肯定都会写。

    2.如何写控件操作脚本,控件操作的脚本编程思想是什么?        

     我们要对一个控件进行操作,首先我们要让脚本识别的那个函数,在js的基于空间的操作中有三大类:控件选择器,控件合集,控件。这三个类都有各自的方法,要理解这个可能有点难,这里需要面向对象编程思想,有兴趣的,可以百度了解一下。在写这类脚本语句中,一般要多重调用的,比如:id("a").text("abc").findOne().click();可以看出一句话非常的长,这里的id(),text(),.findOne(),.click()分别都是上面那三个类中的函数,比如id()这个函数是控件选择器的函数,他们可以直接作为脚本开头(全局函数),他的返回值还是控件选择器,所以后面接的函数还是控件选择器的函数,text()这就也是一个控件选择器的函数,他的返回值还是控件选择器,所以后面继续接控件选择器的函数findOne()然后这个函数的返回值是控件,所以后面接控件的函数click()。  另外上面那句语句解释一下,就是选择id属性为a的,text属性为abc的控件,直到找到一个符合以上条件的控件,对其点击。        

    如果有连这个都无法理解的小白,我们伟大的开发者提供了一种非常简单易懂的理解方式。其实你们可以直接把自己需要找的控件的属性用选择器筛选出来,如果有多个那就用英文的点将其连接即可。        

    总结:我们写控件操作的代码时,不但·要实现需要实现的功能,还要注意返回值和之后使用的函数,以及如何切换来实现需要的功能。当然,如果你愿意去学一下面向对象编程思想当然是更好的啦。

    3.控件选择器      

     控件选择器即含有对控件进行筛选的功能,比如大部分控件选择器都是用属性来筛选控件的,并且他们的返回值都是控件选择器,在这里,返回控件选择器本生是为了,方便以后进行,链式调用,也就是将很多要筛选的属性直接串联,最后再用findOne转换成控件。        

     我们来说几个常用控件选择器函数的使用方法。假如有desc属性为ab,abcd,abcde,cde,cd 那么我们用教程中的选择器desc()也就是匹配desc值为传入字符串的控件,比如desc("cd")这样子的话只会匹配出上面desc值为cd的一个控件,如果用descContains("cd"),desc属性包含传入的字符串的话,那就能匹配出desc值为abcd,abcde,cde,cd的控件,还有的descStartsWith()和descEndsWith()即为分别匹配以传入的字符串开头或者结尾的·desc值的控件,自己体会肯定能懂吧,除了这四种常用的,还有一个就是descMatches(正则表达式),这个用于传入正则表达式,进行匹配,之后我会单独写一篇文章将正则表达式的匹配,这个在百度上也都有,应该来说是可以通过自己的尝试自学会的。几乎属性数据类型是字符串的控件都有着五个选择器函数进行选择,例如:text() , textContains() , textStartsWith() , textEndsWith() , textMatches() , id() , idContains() , idStartsWith() , idEndsWith() , idMatches() ,还有className,package等就不一一举例了。        

    还有一些布尔值的属性的筛选器,就很简单了,比如说clickable属性的选择器函数clickable(要匹配的找值),同样可可以作为全局函数,比如clickable(true)这个函数就可以筛选当前页面上所有可以点击的控件,同样的布尔值属性的选择器函数还有checkable()控件是否可以勾选,selected()控件是否已经勾选,longClickable()控件是否可以长按,另外还有enabled()控件是否已经启用,scrollable()控件是否可以滑动,editable()控件是否可以编辑,等等。这些功能都大同小异,教程和示例都有详细的使用方法。那我们要写一个选择器筛选当前页面上可以点击,长按的控件,就为clickable(true).longClickable(true)。这个应该能理解,那我们继续看一些稍微复杂咋一些的内容。        

    有的时候真的会碰到一些奇葩的软件,或者像QQ那种故意的,所有属性要么没有,要么都一样,这个时候可以用控件的边框位置来进行筛选,主要有两个比较常用的函数,bounds()和boundsInside(),我们要传入的变量就是控件的位置范围,由四个整数值组成前两个值为控件长方形左上角的坐标,后两个值是控件右下角点的坐标。简单举个例子,我们要筛选左上角坐标233,233到右下角坐标666,666内部的控件即为boundsInside(233,233,666,666),这样在这个框内部的所有·控件会全部筛选出来,与他不同的一个边框选择器是直接的bounds()这个函数相对来说不算很常用,因为他的作用是匹配出边框是传入的四个值的控件,必须完全一样,在很多属性都一样的时候,这个功能非常的常用,因为bounds属性完全相同的控件就是完全重叠的那些,一般都只有一个,但是这个功能也有个很大的缺点那就是做适配功能很难,在·两个分辨率不同的手机上大部分控件的bounds是完全不一样的,只要不是非常外层的普通控件,等比缩放这类方法肯定是不可取的,主要还要观察控件的出现方式,就算写出来了,计算机结果完全相同,没有一点偏差也是几乎不可能的。所以这个功能一般用于特定分辨率,不需要适配的脚本中。        

    还有些没说的选择器函数一个是drawingOrder();这个控件用于筛选控件在其父控件中是否是第某个,另外他可以作为全局函数使用,如果使用drawingOrder(0),筛选出所有在父控件中的第一个控件。当然最外层的布局也是第0个,并且从筛选触来的内容角度来说,最外层控件肯定在第一个·,那直接使用findOne()就可以直接获取到UI外层控件了。        

    最后要介绍的是 一个最强的万能选择器函数-过滤函数,他传入的内容是一个返回布尔值的匿名函数,函数的传入值是当前符合的所有控件。他会把会让函数返回值为false的内容全部过滤掉。我们直接用文档中的一个例子来对齐进行解释,假如我们要写的是过滤出text属性有10个字符的控件,他的代码是filter(function(w){return w.text().length==10}),我们知道function是新函数的意思,return在函数中即是函数的结束也是函数返回内容的代码,这个函数中先获取了控件w,即传入进来的控件的一个,的·text属性(即后面要讲的控件.text(),获取控件信息的函数)这个属性值是字符串,可以用length属性来获取到他的长度,然后用关系运算符 == (作用是比较左右两边内容是否相同,相同返回true,不同false)把他和我们要过滤出来的10进行比较,即他最后返回的布尔值数据类型。然后他会过滤出那些所有返回值为true,即符合的控件。        

    说了这么久,控件用于过滤选择器算是说完了。还有就是通过各种功能让控件选择器转换成控件或者控件合集,注意:现在开始说的函数都不能作为全局函数放在开头使用,最主要常见的函数就是findOne()了,他的作用是寻找屏幕上符合前面控件选择器的函数,直到出现,并返回第一个出现的控件,另外他还可以传入一个参数—最大查找时间,即位,如果到了时间还没有找到的话,直接返回undifined,以继续脚本。和他相似的还有一个函数是findOnce(),不同于之前那个函数,这个函数只会寻找一次,如果当前屏幕上没有,则直接返回null,他也可以传入一个参数,用于写,需要获取当前屏幕上第几个符合条件的内容,如果当前屏幕上的个数,不够获取的个数,则返回null。这两个函数是比较简单的函数,就先不举例子了。         还有find()函数会把选择器转换成合集,他的功能是在当前屏幕上搜索所有符合条件的控件并且都放入控件合集,一起返回,如果当前页面没有,那就会直接返回一个空的控件合集。和他有一个相似的函数untilFind()同样是返回控件合集,但是不同在于,他会循环寻找,至少要找到一个才会返回合集。也就是说不会返回空合集。      

      还有一些控件选择器函数,返回的是其他数据类型,例如函数 选择器.exists(),他返回的就是当前屏幕上是否存在符合条件的控件选择器。         甚至还有一些函数没有返回值,只有一些运行效果,比如 选择器.waitFor(),他会一直等待符合条件的控件出现。

    4.控件        

    关于控件是什么上面已经介绍过了,这里我们一样来介绍几个控件的函数,首先是可以获取到控件信息的函数,最主要有text(),desc(),id(),当热其他所有属性也是行的,他们的返回值都是自己属性对应的类型。相同的还有classname,clickable,packagename等等,所有悬浮窗中有的属性都可以直接这样用函数获取到。另外还有childCount()用来返回这个控件有多少个子控件;drawingOrder()用语返回他他在父控件中的绘制顺序, 等比较少用的功能在app内文档中都有使用说明。         其次我们可以对控件做出操作,就是有操作效果的函数,比如函数click()就可以直接点击一个控件。注:如果clickable的值为false,那点击效果是没有用的,如果明明是个按钮控件,clickable值却是false那,一般,切换到布局层次可以看到有和他重叠的clickable值为true的控件。还有longClick()长按,setText()设置输入框内内容,等等。那我们来举个例子,我们要把id为edit的输入框控件内的文字改为123456,他的代码为id("edit").findOne().setText("123456");  非常简单,自己理解吧。还有很多类似的例如选中,等函数,文档里都有使用方法,大同小异,这里就不一一介绍了。      

      还有一些可以用来找到与这个控件有关的控件的函数,比如他的父控件和他的子控件,我们知道安卓的控件是由控件多层嵌套出来的,所以控件可以含有他的子控件,也有他的父控件(最外层不算)。我们通过控件函数.parent()可以获得到这个函数的父控件函数,通过child(第几个),获取到他的第几个子控件,注意序号从零开始。        

    还有个函数children()用于返回这个控件的所有子控件,另一个比较常用的函数findByText(str)需要传入一段文,这个函数返回他所有子控件或者孙控件中text或者desc属性中包含这段文字的所有控件。这时候细心的朋友肯定就能注意到,前面返回控件类,只有一个,是怎么返回多个的呢。这里涉及到一个新的类那就是控件集合。他的底层类似于一个控件数组,可以存放多个控件,也可以用上一章讲的中括号下标的方法来获取到其中第几个控件,也可以用控件合集里的get(下标)函数来获取,还有就是size()获取合集大小,即为里面有多少个控件,和数组的length属性相同。下面就来详细讲讲控件合集吧。

    5.控件合集        

     首先它是一个类,继承上一章数组类,也就是有所有数组里的功能和属性。他自然也有自己的新函数,我们获取到一个控件合集后肯定是要对它做出操作的。上面对控件的操作,比如点击 长按 选中之类的功能,这里控件合集也能用,比如点击一个控件合集,他会自动按顺序点击控件合集里的每一个控件。内部有一个自动遍历数组的功能each(遍历函数) 里面传入一个函数,写对每个控件的操作,这个函数的参数是控件。这样不需要自己写循环来遍历方便了很多。        

    附注:其实控件选择器后面也可以直接根操作函数,功能会是直接对当前界面上所有符合选择器条件的控件进行该操作。运行时控件选择器会调用自己的find()函数在页面上找出符合条件的所有控件的合集,再用控件合集内的遍历并对每个控件进行操作。要是你确定你想要的控件已经出现在这个界面了,那么这样子写,代码会简洁很多咯。        

    如何·获取到一个控件合集。除了上面说的两种方法,还有可以通过控件选择器获得,之前说的选择器内的函数find()就可以返回调用这个函数的选择器,也就是前面的所有限定条件,全部符合的所有控件。这个控件合集中也有一个find(控件选择器)函数,但是和控件选择器中的不同。他需要传入一个控件选择器,然后返回这个控件合集中符合该控件选择器的所有控件及其子孙控件的合集。比如说我们要返回一个合集中所有控件和他们子孙控件,text属性是abc,desc属性是def的控件合集,那只要再那个合集后面接.find(text("abc").desc("def"))就行啦。还有一个用法差不多的findOne()这个是用来返回合集中所有控件及其子孙控件中第一个符合传入的选择器的控件。        

    还有两个相对来说不常用的功能,就是判断合集是否为空和判断合集是否不是空的。函数名为empty()和nonEmpty()。其实判断控件合集长度用length属性或者get()函数也可以做出类似效果。

    总结         

    至此控件的所有功能已经讲完了,要是能学熟练本章的内容,做出模拟人操作(或者更快速)的脚本几乎是没问题了。再来汇总一下我们写控件操作的代码思路:首先,最基本的就是通过控件选择器根据控件的独特特点是筛选出要操作的控件,再用函数转换成合集或者控件,最后再用控件的函数对其进行操作或者获取信息,具体方法根据实际情况而定咯。

     

    展开全文
  • 前提你得会使用按键精灵电脑的post,get请求,简单说明一下,get请求传递的参数封装太url后缀里,post请求参数封装在requestBody里,请求头和编码啥的,看我代码copy就行了 百度ai文字识别需要请求两个接口,才能拿到...

    很简单,根据百度ai接口api文档,用post或者get请求,封装参数请求响应即可.哈哈,当然不可能就这样结束了本篇博客了.本篇先讲文字识别,喜欢的朋友可以关注下,后续会继续写图片识别等所有ai对接方式.

    在这里插入图片描述
    百度ai开放平台地址

    前提你得会使用按键精灵电脑版的post,get请求,简单说明一下,get请求传递的参数封装太url后缀里,post请求参数封装在requestBody里,请求头和编码啥的,看我代码copy就行了

    百度ai文字识别需要请求两个接口,才能拿到识别结果
    1.获取token的接口
    2.根据获取的token,请求文字识别的接口,参数为base64图片进行url编码(utf8)后的字符+token

    1.获取token

    先来看看文档怎么说的:

    这里咱们用标准版,好处是免费,每天识别次数多5万次嘞,白嫖怪上线了
    文档地址在这里插入图片描述
    从文档中可以看出,我们需要传递的必要参数为
    client_id: 必须参数,应用的API Key;
    client_secret: 必须参数,应用的Secret Key;

    所以,这里需要先创建应用
    创建应用,拿到API Key和Secret Key:
    1首页链接
    2点击控制台
    3扫码登陆
    4点击后台菜单的文字识别
    5创建应用
    6应用列表拿到参数:API Key和Secret Key
    请求接口,拿到token
    直接get请求,官方推荐post,但是我用get请求主要是懒,返回的json字符串,需要用vbs代码解析,按键精灵直接导入使用就是,没门槛.

            grant_type = "client_credentials"
            api_key = "xxx"
            secret_Key = "xxx"
            url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=" & grant_type & "&client_id=" & api_key & "&client_secret=" & secret_Key
            TracePrint "url:"&url
            Dim WinHttp 
            Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
            WinHttp.SetTimeouts 60000, 60000, 60000, 3000 
            WinHttp.Open "GET", url, False'GET 或 POST, Url, False 同步方式;True 异步方式 
            WinHttp.Send
            返回值 = WinHttp.ResponseText
            TracePrint 返回值
            resToken = json解析(返回值, "access_token")
            Call Plugin.File.WriteINI("缓存token", "token", resToken,  basePath & "\文字识别.ini")
            获取token = resToken
    

    json解析插件在评论区有链接,注意获取的token有效期是一个月,可以做一个本地缓存,过期了重新获取,这样可以减少请求时间.然后我们就拿到token了

    2.识别文字

    文档地址
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    文档中可以看出,请求方式问post,请求必要参数为:
    1access_token
    2image(本地图片base64编码然后urlencode,编码格式utf-8)或url(网络图片地址) 二选一
    响应参数也是json格式

    直接上代码

    Function 文字识别ex(图片路径)
        返回值 = 文字识别(图片路径)
        文字数组 = json解析(返回值, "words_result")
        word = ""
        If UBound(文字数组)>=0 Then 
            For i = 0 To UBound(文字数组)
                返回值 = 文字数组(i)("words")
                //TracePrint 返回值
                word = word + 返回值
            Next
        End If
        文字识别ex = word
    End Function
    
    Function 文字识别(图片路径)
        base64图 = imgToBase64(图片路径)
        base64图 = 编码(base64图)
        TracePrint "base64图:"&base64图
        token = 获取token
        TracePrint token
        url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" & token
        TracePrint "文字识别url:"&url
        Dim WinHttp 
        Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
        WinHttp.SetTimeouts 60000, 60000, 60000, 3000 
        WinHttp.Open "POST", url, False'GET 或 POST, Url, False 同步方式;True 异步方式 
        WinHttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        WinHttp.Send ("image="&base64图)
        返回值 = BytesToBstr(WinHttp.responseBody,"utf-8")//返回直接取中文乱码,所以先转为字节再转字符串
        TracePrint 返回值
        文字识别 = 返回值
    End Function
    
    Function imgToBase64(FilePath)
        Dim xml
        Dim root
        Dim fs
        Dim objStream
        Dim objXMLDoc
        Dim Base64
        Set objXMLDoc=CreateObject("Microsoft.XMLDOM")
        objXMLDoc.loadXML "<?xml version='1.0' ?><data></data>"
        Set fs = createObject("Scripting.FileSystemObject") ''FSO组件
        If fs.FileExists(FilePath) Then '判断File文件是否存在
            '用 stream 来读取数据
            Set objStream = CreateObject("ADODB.Stream")
            objStream.Type = 1
            objStream.Open
            objStream.LoadFromFile FilePath
            objXMLDoc.documentElement.dataType = "bin.base64"
            objXMLDoc.documentElement.nodeTypedvalue = objStream.Read
            '数据流读取结束.得到了值 objXMLDoc
            '创建XML文件
            Set xml = CreateObject("Microsoft.XMLDOM")
            xml.load objXMLDoc
            If xml.ReadyState>2 Then
                Set root=xml.getElementsByTagName("data")
                Base64 = root.Item(0).Text
                //TracePrint "Base64=" & Base64
                Base64 = Replace(Base64,vbLf,"") '不知道为什么带换行符,可能是长度不够自动换行,需要去除掉
            else
                Base64=""
            End If
            Set xml=Nothing
            Set objStream=Nothing
        else
            Base64=""
        End If
        Set fs=Nothing
        Set objXMLDoc=Nothing
        imgToBase64 = Base64
    End Function
    
    Function 解码(str)
        Set obj = New vbsUrlEnCode
        解码   = obj.URLDecode(str)
    End Function
    
    Function json解析(json字符串,key)
        Set json = New vbsJson
        Set o = json.Decode(json字符串)
        json解析 =  o(key)
    End Function
    
    Sub json插件注册
        PutAttachment basePath, "*.*"//释放附件到全局路径
        Import "c:\lw_game\vbsjson.vbs"
        Import "c:\lw_game\vbsUrlEnCode.vbs"
    End Sub
    
    Function 打印接日期(msg)
        TracePrint "【"&Date&" "&Time&"】"&msg
    End Function
    

    返回的json字符串解析后就可以获取识别结果了,以上代码不全,只是做一个分析,解说.源代码评论区链接

    展开全文
  • 有时我们需要使用安卓实现在后台模拟系统按键,比如对音量进行调节(模拟音量键),关闭前台正在运行的App(模拟返回键),或者模拟触屏事件。但是对于原生安卓系统而言,后台进程关闭前台进程,甚至模拟用户事件,...
  • 活动时间:2020年8月4日-8月18日一、按键精灵iOSVIP买三赠一福利再度开启!买3个月卡,多送一个月卡,买3个年卡,多送一个年卡!买三赠一,赠送的都是实实在在的足量VIP!注:1、充值多台设备时请在同一笔订单内...
  • 铁鹰安卓群控系统是陈汤网络科技有限公司历史半年研发的安卓群控软件,模竖屏自动切换,集成了js语法,用js就可以控制手机按键,完全免root, js脚本无脑开发,并且如果有界面的话还可以用html做界面,js 与 html是最简单的...
  • 常用脚本是按键精灵开发。免root就是一部正常手机,不需要做刷机操作,通常是js开发,稳定性比较好。 第一步,当然是先尝试编译,在出现了无数编译错误后放弃手工修改。 仔细阅读了参考资料后,发现有一个fixqt4...
  • 下面是整个流程如果有什么...2.开始今天的主题如何在懒人精灵中用lua脚本调用C++编写的android动态库so 3.编译so之前我们需要安装android ndk开发环境这里提供下载地址https://dl.google.com/android/repository/andr.
  • 2.懒人精灵新版新增了窗口的加载,以及按钮点击事件,关闭事件,以及对ui可动态获取或者其属性值,下面直接先上图 1.点击第一个按钮,出现下面界面 2.点击第二个按钮出现下面界面 3.点击第三个按钮出现下面...
  • 机器人脚本 自动浏览 点赞 抖音 刷宝软件 autojs介绍:它是一个不需要Root权限的类似按键精灵的自动操作软件,可以实现自动点击、滑动、输入文字、打开应用等。解放你的双手,让你不再麻烦!
  • 解压密码:www.sanye.cx 易语言云控群控脚本框架源码 易语言 jsd WebSocket全机型全分辨率免root免找图找色
  • 按键精灵官网:http://www.anjian.com/ 资源站:http://zy.anjian.com/ 官网教程:http://zy.anjian.com/?action-study 按键宝典 - 知识库:http://zy.anjian.com/index.php?action-viewnews-itemid-161 截图 ...
  • 如果采用手动点击按钮... 安卓手机按键精灵APP录制(免root版) 适用于安卓7及以下系统的手机 1. 手机从应用市场下载并安装按键精灵app; 2. 电脑安装按键精灵手机助手; 3. 在将手机连接USB前,请先找到开发...
  • 并且是全开源的免费APP,类似于按键精灵,而且本软件有全部按键精灵的功能,还有其他例如控件操作等,按键精灵没有的强大功能。本软件写脚本基于javascript所以在写脚本方面代码难度较大。本教程就是写给不会或不...
  • 免root实现截屏Android例子源码

    热门讨论 2015-01-05 23:05:40
    免root实现截屏Android例子源码
  • 如果采用手动点击按钮,效率不高... 安卓手机按键精灵APP录制(免root版) 适用于安卓7及以下系统的手机 1. 手机从应用市场下载并安装按键精灵app; 2. 电脑安装按键精灵手机助手; 3. 在将手机连接USB前,请...
  • Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。 与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    测试开发笔记 第一章 测试基础 7 什么是软件测试: 7 ★软件测试的目的、意义:(怎么做好软件测试) 7 3.软件生命周期: 7 第二章 测试过程 8 1.测试模型 8 H模型: 8 V模型 9 2.内部测试 10 ...
  • 按键精灵手机解放您的双手自动化教程 从事游戏开发已经13年以上,软件开发管...
  • Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。 与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找...
  • Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。 与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找...
  • Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。 与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 294
精华内容 117
关键字:

按键精灵免root版