美文网首页
按键精灵脚本编写入门(一)

按键精灵脚本编写入门(一)

作者: 熊爸天下_56c7 | 来源:发表于2020-12-08 23:04 被阅读0次

    按键精灵很像VB,也像易语言,如果你熟悉vb6.0那个时代的编程,可以很快的掌握,如果用惯了面向对象的语言,那大家要好好习惯一下

    一. 基本操作

    1. 查询系统函数库

    我们以找图命令为例:

    2. 插入函数

    为了方便不会编码的人, 可以点点点来操作

    3. 抓抓图

    4. 选取范围

    5. 截图保存

    点裁切,框选,双击,再保存

    6. 获取APP包名


    二. 基本语法

    1. 定义变量 Dim

    Dim n
    n = 12345
    
    TracePrint n
    

    2. 打印信息

    TracePrint 12345
    
    //打印变量
    
    Dim n
    n = 12345
    TracePrint n
    TracePrint "the number is:"&n
    TracePrint "the number is:",n
    

    3. 字符串切割

    n = "1,2,3"
    n = Split (n,",")
    

    4. 数组的最大下标

    Dim n,x
    n = "1,2,3"
    n = Split (n,",")
    x = UBOUND(n)
    TracePrint x
    

    5. For循环

    例子1:固定循环次数后离开

    For 10 '固定循环10次跳出
        TracePrint "循环中……"
    Next
    TracePrint "离开循环"
    

    例子2:范围循环

    Dim i
    For i = 0 To 9 '这里没写步长,默认每次循环结束 i 都+1,
    那么10次后等于9,第11次等于10,大于9,离开循环
        TracePrint "循环中,i=" & i
    Next
    TracePrint "离开循环,i=" & i
    
    Dim i
    For i = 0 To 19 Step 2 '步长为2,每次循环结束 i 都+2,
    那么10次后等于18,第11次等于20,大于19,离开循环
        TracePrint "循环中,i=" & i
    Next
    TracePrint "离开循环,i=" & i
    
    Dim i
    For i = 9 To 0 Step -1 '步长为-1,每次循环结束 i 都-1,
    那么10次后等于0,第11次等于-1,小于0,离开循环
        TracePrint "循环中,i=" & i
    Next
    TracePrint "离开循环,i=" & i
    

    例子3:循环离开

    Dim i
    i=5
    For i=0 To 10
        TracePrint "循环中,i=" & i
        If i=5 Then
            Exit For '离开当前For循环
        End If
    Next
    

    6. If 如果..则

    Dim i=0
    If i=0 Then
        TracePrint "条件判断符合被通过!!"
    ElseIf i=1 Then
        TracePrint "否则条件判断符合被通过!!"
    Else
        TracePrint "否则!!"
    End If
    //通过判断表达式的取值,来执行后面的动作或控制
    

    7. While 如果..则

    和一般的while不同, 这个while语法带介绍标记Wend

    Dim i=0
    While i=0
        TracePrint "我停不下来啦!!快住手"
    Wend
    //当循环条件成立的时候,反复执行循环体
    
    例子2
    Dim i
    i = 0
    //跳出循环
    While i < 10
       i = i + 1
       TracePrint "正在循环中,i=", i
       If i = 5 then
          TracePrint "准备退出循环"
          Exit While
       End If
    Wend
    TracePrint "循环结束,i=", i
    

    8. Select Case 情况条件选择

    Dim 变量=1
    Select Case 变量
    Case 0,1    可支持判断多个值,中间以逗号隔开
        TracePrint "你输入的数字为:0或者1"  
    Case 2
        TracePrint "你输入的数字为:2" 
    Case 3
        TracePrint "你输入的数字为:3" 
    Case 4
        TracePrint "你输入的数字为:4" 
    Case 5
        TracePrint "你输入的数字为:5" 
    Case 6
        TracePrint "你输入的数字为:6" 
    Case 7
        TracePrint "你输入的数字为:7" 
    Case 8
        TracePrint "你输入的数字为:8" 
    Case 9
        TracePrint "你输入的数字为:9" 
    Case Else
        TracePrint "你输入的数字不正确,请输入(0~9)数字!"
    End Select
    

    9. 函数化

    使用 Function来定义函数
    使用Call 来调用函数
    函数括号内是可以传参的, 和常规编程语言用法一致
    也分局部变量和全局变量

    Function getMsg(msg)
        TracePrint msg
    End Function
    
    Call getMsg("hello world!")
    

    10. Rem 标记

    Rem既可以作为标记,配合 Goto 跳转 使用,也可以作为注释

    Rem 脚本开始
    

    11. Goto 跳转到标记

    goto 和 rem都是老式语言的典型语法吗灵活运用即可

    Goto 标记
    Delay 100
    Rem 标记
    TracePrint "你直接跳到这里了!!,上面的延迟没有被执行!!"
    //跳转语句,可以跳转到rem标记过的标记处继续执行
    

    三. 典型操作API

    1. InputText 输入内容

    InputText "你好,我是按键精灵"
    

    2. EndScript 脚本停止运行

    EndScript
    

    3. ShowMessage 显示信息

    ShowMessage  Msg
    

    Msg:提示信息,如果提示信息不是字符串类型,会自动转换为字符串类型进行显示
    Time:显示信息的时间,单位是毫秒(该参数暂时无实际意义,不生效)
    X:可选参数,显示框在屏幕左上角横坐标(2.61版支持)
    Y:可选参数,显示框在屏幕左上角纵坐标(2.61版支持)

    4.Delay 延时

    Delay time
    time:数值表达式,延时时间,单位毫秒
    

    5. RunApp 运行应用

    包名的看法在第一章

    RunApp "com.tencent.mm"
    

    6. 关闭APP

    KillApp package_name,flag
    

    package_name:字符串型,包名
    flag:整数型,可选,0:强退进程 (默认) 1: 正常退出

    7. PutAttachment 释放附件

    把当前脚本包含的附件释放到指定的目录下

    PutAttachment path[,file]
    

    path:字符串型,路径,手机一定要存在此路径,否则释放失败。
    file:字符串型,文件名,可省略
    注意:如果路径为Null或空字符串,
    会把附件释放到按键精灵的临时文件目录下。
    临时文件目录可以通过调用 GetTempDir() 获得要释放的文件(可选参数)为字符串类型,
    可以指定只释放附件中的一个或几个文件,支持通配符 * 和 ? ,
    当不指定要释放的文件,或指定为Null或空字符串时,表示要释放本脚本附件中的所有文件。


    四. 触摸API

    1. KeyPress 按键

    和键盘上按键效果一样,
    我们在使用键盘的时候有两种操作,一种是“按下”键,一种是“弹起”键,
    将这两个动作连续进行,就是一个完整的“按键”动作

    KeyPress "K"
    

    附: 常用按键:
    按键功能 按键名称(不区分大小写)
    主页键 Home
    返回键 Back
    打电话 Call
    挂电话 EndCall
    音量增加 VolUp
    音量减少 VolDown
    电源键 Power
    相机键 Camera
    菜单键 Menu
    向上翻页 PageUp
    向下翻页 PageDown
    数字键 0123456789
    字母键 26个字母
    标点键 ,.-=[]/;@+
    【键码表】
    虚拟键码 字符常量 说明
    3 home home键
    4 back 返回键
    5 call 拨打电话键
    6 endcall 挂电话键
    7 0 数字0
    ... ... ....
    16 9 数字9
    17 * *号
    18 # #号
    19 dpadup 导航键 向上
    20 dpaddown 导航键 向下
    21 dpadleft 导航键 向左
    22 dpadright 导航键 向右
    23 dpadcenter 导航键 确定键
    24 volup 音量加
    25 voldown 音量减
    26 power 电源键
    27 camera 相机
    29 A A键
    ... .... .....
    54 Z Z键
    55 , 逗号
    56 . .号
    57 altleft altleft
    58 altright altright
    59 shiftleft shiftleft
    60 shiftright shiftright
    61 tab tab
    62 space 空格
    66 enter 回车
    67 del del
    68
    69 - 减号
    70 = 等号
    71 [ 方括号
    72 ] 方括号
    73 \ 未知键
    74 ; 分号
    75 ' 单引号
    76 / /键
    77 @ @符号
    80 focus 拍照对焦键
    81 + 加号
    82 menu 菜单
    83 notification 通知键
    84 search 搜索键
    85 mediaplaypause 多媒体暂停/播放
    86 mediastop 多媒体键 停止
    87 medianext 多媒体键 下一首
    88 mediaprevious 多媒体键 上一首
    89 mediarewind 多媒体键 快退
    90 mediafastforward 多媒体键 快进
    91 mute 话筒静音键
    92 pageup 上一页
    93 pagedown 下一页
    96 gamepadbuttonsA 游戏手柄按钮 A
    97 gamepadbuttonsB 游戏手柄按钮 B
    98 gamepadbuttonsC 游戏手柄按钮 C
    99 gamepadbuttonsX 游戏手柄按钮 X
    100 gamepadbuttonsY 游戏手柄按钮 Y
    101 gamepadbuttonsZ 游戏手柄按钮 Z
    102 gamepadbuttonsL1 游戏手柄按钮 L1
    103 gamepadbuttonsL2 游戏手柄按钮 L2
    104 gamepadbuttonsR1 游戏手柄按钮 R1
    105 gamepadbuttonsR2 游戏手柄按钮 R2
    106 gamepadbuttonsLeftThumb Left Thumb Button
    107 gamepadbuttonsRightThumb Right Thumb Button
    108 gamepadbuttonsStart 游戏手柄按钮 Start
    109 gamepadbuttonsSelete 游戏手柄按钮 Select
    110 gamepadbuttonsMode 游戏手柄按钮 Mode
    111 esc ESC键
    112 backspace 删除键
    113 ctrlleft ctrlleft键
    114 ctrlright ctrlright键
    115 capslock 大写锁定键
    116 scrolllock 滚动锁定键


    121 pause pause键
    122 movehome 光标移动到开始
    123 moveend 光标移动到末尾
    124 insert insert键
    126 mediaplay 多媒体键 播放
    127 mediapause 多媒体键 暂停
    128 mediaclose 多媒体键 关闭
    129 mediaeject 多媒体键 弹出
    130 mediarecord 多媒体键 录音
    131 f1 f1键
    ... ... ...
    142 f12 f12键
    143 numlock 小键盘锁
    144 0 小键盘0
    ... ... ....
    153 9 小键盘9
    154 / 除号
    155 * 乘号
    156 - 减号
    157 + 加号
    158 . 点号
    159 , 逗号
    160 enter 回车键
    161 = 等号
    162 ( 左括号
    163 ) 右括号
    164 volmute 扬声器静音键
    168 zoomin 放大键
    169 zoomout 缩小键
    188 gamepadbuttons1 通用游戏手柄按钮#1
    ... ... ....
    203 gamepadbuttons16 通用游戏手柄按钮#16

    2. KeyDown 按键按下

    3. KeyUp 按键抬起

    KeyDown "K"
    Delay 1000
    KeyUp "K"
    

    4. Swipe 划动

    Swipe X1坐标, Y1坐标, X2坐标, Y2坐标
    Swipe 837,1037, 257,1026
    

    5. Tap 轻触屏幕

    Tap X坐标, Y坐标
    

    6. Touch 按住一段时间

    Touch X坐标, Y坐标, 100
    

    7. TouchDown 按住不放

    TouchDown X坐标, Y坐标
    TouchDown X坐标, Y坐标, 此触摸的id
    

    一个多点触控的例子:

    TouchDown 100, 100, 1//按住屏幕上的100,100坐标不放,并设置此触点ID=1
    TouchDown 200, 200, 2//按住屏幕上的200,200坐标不放,并设置此触点ID=2
    TouchMove 300, 300, 1, 200//将ID=1的触点花200毫秒移动至300,300坐标
    TouchMove 500, 500, 2, 200//将ID=2的触点花200毫秒移动至500,500坐标
    TouchUp 1//松开弹起ID=1的触点
    TouchUp 2//松开弹起ID=2的触点
    
    

    8. TouchMove 按住拖动

    TouchMove X坐标, Y坐标
    TouchMove X坐标, Y坐标, 时间
    TouchMove X坐标, Y坐标, 此触摸的id, 时间
    

    9. TouchUp 按住弹起

    TouchUp 
    TouchUp 此触摸的id
    

    10. CatchTouchPoint 获取用户点击坐标

    Dim anjians
    anjians = CatchTouchPoint(3)
    
    TracePrint "第一个点的x坐标:",anjians[1][1]
    TracePrint "第一个点的y坐标:",anjians[1][2]
    TracePrint "第二个点的x坐标:",anjians[2][1]
    TracePrint "第二个点的y坐标:",anjians[2][2]
    TracePrint "第三个点的x坐标:",anjians[3][1]
    TracePrint "第三个点的y坐标:",anjians[3][2]
    

    10. RandomTap 随机点击

    RandomTap(x,y,r,pic)

    x:整数型,屏幕X坐标
    y:整数型,屏幕Y坐标
    r:整数型,可选,坐标范围:缺省默认为 5,单位像素(px)
    pic:字符串型,可选,点击效果的显示图片路径(展示一会就消失),图片不存在则不显示

    11. MoveZoomOut 捏合

    12. MoveZoomIn 放大滑动


    五. 特殊API

    1. FindPic 找图

    图片我们要在附件中添加

    Dim intX,intY
    FindPic 115,118,197,210,"Attachment:1.png","000000",0,0.9,intX,intY
    If intX > -1 And intY > -1 Then
        TracePrint intX
        TracePrint intY
    End If
    

    同样的 我们也可以通过点点点来操作

    关于找图的内存管理

    截图到内存中可以提高速度和准确率, 但耗费内存, 所以用完释放掉

    Dim intX,intY
    KeepCapture //内存中
    FindPic 115,118,197,210,"Attachment:1.png","000000",0,0.9,intX,intY
    If intX > -1 And intY > -1 Then
        TracePrint intX
        TracePrint intY
    End If
    ReleaseCapture
    
    多图查找及找图返回值

    我们可以添加多张图片, 匹配多种规则, 某个规则被匹配了 则FindPic函数会返回对应的规则索引

    Dim intX,intY,backIndex
    KeepCapture
    backIndex = FindPic (149,85,389,345,"Attachment:1.png|Attachment:2.png","000000",0,0.8,intX,intY)
    If backIndex=0 Then
        TracePrint "匹配了第一种规则"
    ElseIf backIndex = 1 Then
        TracePrint "匹配了第二种规则"
    Else 
        TracePrint "没找到"
    End If
    ReleaseCapture
    

    2. FindColor 找色

    FindColor(x1, y1, x2, y2, color,dir,sim,intX,intY)

    x1:整数型,区域左上角x坐标
    y1:整数型,区域左上角y坐标
    x2:整数型,区域右下角x坐标
    y2:整数型,区域右下角y坐标
    color 字符串:要对比的16进制颜色,格式为"BBGGRR"多个颜色用“|”号分隔,
    如果需要对比偏色则中间用“-”号分隔,比如"FFFFFF|123456-000000|00FF00-101010"
    sim 双精度浮点数:相似度,取值范围0-1
    dir:整数型,查找方向
    0: 表示从左上向右下;
    1: 表示从中心往四周查找;
    2: 表示从右下向左上查找;
    3: 表示从左下向右上查找;
    4:表示从右上向左下查找
    intX:变参指针,返回X坐标
    intY:变参指针,返回Y坐标

    Dim IntX,IntY
    
    FindColor 98,260,765,526,"000000-CC3B84|D04E8D",0,0.9,intX,intY
    If intX >-1 then
        Traceprint "找到"
        Traceprint intX
        Traceprint IntY
    Else
        Traceprint "没有找到"
    End If
    

    3. FindMultiColor 多点找色

    FindMultiColor x1,y1,x2,y2,first_color,offset_color,dir,sim,intX,intY

    x1:整数型,查找区域左上X坐标
    y1:整数型,查找区域左上Y坐标
    x2:整数型,查找区域右下X坐标
    y2:整数型,查找区域右下Y坐标
    first_color:要对比的16进制颜色,多个颜色用"|"号分隔,
    如果需要对比偏色则中间用“-”号分隔,比如"FFFFFF|123456-000000|00FF00-101010"
    sim:双精度浮点数,相似度,取值范围0-1
    offset_color:字符串,偏移颜色
    dir:整数型,查找方向.
    0:表示从左上向右下查找;
    1:表示从中心往四周查找;
    2:表示从右下向左上查找;
    3:表示从左下向右上查找;
    4:表示从右上向左下查找;
    intX:变参指针,返回找到的X坐标
    intY:变参指针,返回找到的Y坐标
    color:字符串,16进制颜色值,格式为"BBGGRR"

    找多色是比找图更好的定位方式用这种方法我们可以迅速的确定我们在哪一页,或者找到哪个图标

    相关文章

      网友评论

          本文标题:按键精灵脚本编写入门(一)

          本文链接:https://www.haomeiwen.com/subject/jqzfgktx.html