按鍵精靈很像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"
找多色是比找圖更好的定位方式用這種方法我們可以迅速的確定我們在哪一頁,或者找到哪個圖標