按键精灵学习记录

代码:https://github.com/Passer6y/quickMacro

基础

  1. 声明变量:Dim
    1
    2
    Dim screenX
    screenX = GetScreenX()

2.延时:Delay

1
Delay 1000 //延时1000毫秒,也就是1秒再往下执行

  1. 点击
    触摸屏幕中的一个位置->经过一小段时间延时->放手
    1
    2
    3
    TouchDown  x,y,1       //x,y为坐标,也就是点击屏幕的位置
    Delay 50
    TouchUp 1

tap封装了以上的几个操作步骤:
Tap x,y

image_1d31gnp159n0u0u8g41lm31qcjm.png-74.7kB

  1. 安卓三键:主菜单、主页、返回

    1
    2
    3
    KeyPress "Menu"
    KeyPress "Home"
    KeyPress "Back"
  2. 调试:ShowMessage和TracePrint
    ShowMessage:显示提示,两条消息之间建议1秒以上间隔。
    TracePrint:在调试页显示信息

    1
    2
    3
    4
    5
    6
    7
    Dim 循环次数 = 0
    Do
    Delay 1000
    循环次数 = 循环次数+1
    TracePrint “循环次数:”&循环次数&“次”
    ShowMessage “循环次数:”&循环次数&“次”
    Loop
  3. 滑屏幕:swipe

    1
    Swipe 10,10,100,100,300               //从坐标10,10划动到坐标100,100,历时300毫秒

滑动 停顿 再松

1
2
3
4
5
TouchDown 10, 10, 1
Delay 1000
TouchMove 100, 100, 1, 300
Delay 1000
TouchUp 1

  1. 循环
    demo1:循环点击 (10,10) 一千次
    1
    2
    3
    4
    For 1000
    Tap 10,10
    // 退出 Exit For
    Next

demo2: 一直点击

1
2
3
4
Do
Tap 10,10
//退出 Exit Do
Loop

图色操作

  1. 获取屏幕上某点颜色:GetPixelColor()

    1
    2
    3
    4
    5
    6
    7
    Dim rColor
    rColor = GetPixelColor(300, 300)
    If rColor = "FFFFFF" Then
    TracePrint "坐标(300,300)的像素点颜色是FFFFFF,说明当前处于XX界面下"
    Else
    TracePrint "坐标(300,300)的像素点颜色不是FFFFFF,说明还没到XX界面"
    End If
  2. 多点比色:CmpColorEx(mul_color,sim)
    即判断当前场景
    取点(2,2)和点(4,3)以000000-202020的偏色范围(前后各10),相似度0.9的容错判断是否为同一个图,可以用抓抓快捷生成参数。

    1
    2
    3
    4
    5
    If CmpColorEx("2|2|000000-202020,4|3|000000-202020", 0.9) = 1 Then 
    TracePrint "这是第二个图"
    Else
    TracePrint "这不是第二个图"
    End If

抓抓快捷生成参数: 取两点->点开’颜色’->在’颜色记录汇总’选中我们采的两点->进入‘多点比色’模式->复制’颜色描述’即可

  1. 多点找色:FindMultiColor
    即找到唯一的图标的作用
    0,0,0,0表示全屏查找,10,20,30,40表示从坐标(10,20)和(30,40)组成的矩形范围。000000初始点的颜色值?,000000-202020(202020依旧是偏色)0|1是相对坐标(往右0,往下1)
    1
    2
    3
    4
    5
    6
    7
    Dim IntX,IntY
    FindMultiColor 0,0,0,0,"000000","0|1|000000-202020",0,0.9,intX,intY
    If intX > -1 Then
    TracePrint "找到啦,坐标在"&intX&","&intY
    Else
    TracePrint "没找到"
    End If

抓抓多点找色:和上面一样的方法

函数

  1. 定义/调用函数
    1
    2
    3
    Function 自定义函数()
    TracePrint “我是自定义函数,被你调用了”
    End Function

调用函数:

1
2
3
自定义函数
自定义函数() // 推荐
Call 自定义函数()

demo:比大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Function 比大小(参数1, 参数2)
If 参数1 > 参数2 Then
比大小 = 参数1 // 函数返回值
ElseIf 参数1 < 参数2 Then
比大小 = 参数2
Else
TracePrint "两个数一样大"
End If
End Function

Dim numA,numB
numA = 3
numB = 3
If 比大小(numA, numB) <> null Then
TracePrint "较大的值是:"&比大小(numA,numB)
End If

数据类型转换

我们从用户输入中读取的数据往往需要做类型转换。
demo: 将输入框的数据从字符串型变成整型

1
2
3
4
Dim 用户输入 = ReadUIConfig("输入框1")
If CInt(用户输入) = 1 Then
TracePrint 用户输入
End If

日志

开启log记录后,会将所有的tranceprint都输出到log文件

1
2
3
4
5
6
Log.Open 
**************
TracePrint "test"
TracePrint GetTempDir()
**************
Log.Close

分辨率

使用的720x1280的设备开发的程序则注明如下代码,以便程序自适应其他设备(多点比色,找色这些功能才有用)

1
SetScreenScale 720,1280

多线程

一般用于一个线程运行脚本,另一个线程干其他的(检测是否卡主等等)
image_1d33b7oli42eu2k1c4ku5i1e8fm.png-77.2kB
image_1d33b74ub1a7tesf9iug67igg9.png-242.6kB