按鍵精靈實現qq羣私髮腳本Day1實戰講解

按鍵精靈qq羣私髮腳本實戰Day1總結:

總體思路及設計方法:

1.首先在手機端主界面通過顏色命令裏邊的FindMultiColor(多點找色命令),對qq這款app的圖標進行抓取(抓取代碼非手動輸入,而是通過抓抓操作,在所有點選取完畢後,直接生成代碼,調試無誤後,複製即可)。定位時,爲了顯示色差,總共分爲了5個不同點的位置,分別是圖標左上角的白色,企鵝頭部的黑色,嘴部的黃色,圍巾的紅色,以及腳部的黃色,抓抓操作以及圖片以及代碼如下:
在這裏插入圖片描述
在這裏插入圖片描述

Sub openQQ()    //通過Sub 子程序命令 對該過程進行封裝,方便直接調用,類似與java中的方法
Dim intX,intY    //(通過多點找色),準確抓取qq這款APP的圖標位置 座標必須用Dim先定義好,否則會出錯
FindMultiColor 0,0,0,0,"FFFFFF","49|-1|FFFFFF,25|3|000000,28|21|08B0FA,18|40|1E1EE9,12|59|08B0FA",0,0.9,intX,intY
If intX > -1 And intY > -1 Then
	Delay 1000
	Tap intX, intY   //通過觸摸命令裏的Tap命令找到圖標位置,並打開座標位置
Else 
	EndScript   //如果沒找到,則腳本停止運行
End If
End Sub

2.在成功進入qq界面後,爲了保證頁面的整潔,避免色差干擾。我們要保證當前消息界面爲空,沒有任何消息,再選擇聯繫人進行羣發操作。那我們就要刪除所有對話框,保證界面此時爲空,則用FindMultiColor(多點找色命令)對未讀消息的紅點進行小範圍精準定位,用再流程控制階段用if else 語句分爲以下兩步:

​ 2.1我們要判斷當前消息界面是否有新消息未讀,如果有,則

​ (1)我們需要點擊該對話框進入聊天界面進行回覆(回覆語句自定義)

​ (2)回覆完成後,滑動屏幕,退出到消息界面

​ (3)刪除當前對話框

​ 2.2如果當前沒有消息未讀,則只刪除聊天對話框,圖片和代碼如下:
在這裏插入圖片描述

//2.刪除所有聊天對話框,首先要判斷是否有新 消息未讀(通過多點找色找紅點點)
Sub deleteAndOpean() //通過控制命令裏的Sub子程序 對該過程進行封裝,方便直接調用
Dim intX,intY
FindMultiColor 648,328,706,378,"FFFFFF","16|-3|314CF7,32|3|FFFFFF,0|29|FFFFFF,16|31|314CF7,30|29|FFFFFF",0,0.9,intX,intY   //FindMultiColor 對新消息的提示紅點進行小範圍精準定位
If intX > -1 And intY > -1 Then  //用 if else語句進行判斷
	Delay 1000
	Tap 246, 319  //如果有未讀消息,則打開該對話框
	Delay 1000    //延遲1秒     1000的單位是ms 毫秒(上下同)
	Answer()     //調用answer子程序
Else 
	Touch 303, 321, 2000  //如果沒有未讀消息,則點擊聊天框2秒鐘,彈出刪除按鈕
	Delay 500
	Tap 397, 196        //點擊刪除按鈕刪除聊天框
End If
End Sub
    
Sub Answer()     //如果有未讀消息,通過這個子程序進行回覆
    Tap 114, 1159 //將光標定位到聊天輸入窗口
    Delay 1000     //給1s延遲
    InputText "歡迎加入狂神說按鍵精靈交流羣"
    Delay 1000
    Tap 621,1153 //定位到發送按鈕,通過觸摸命令裏的Tap命令,點擊發送 
	Delay 500       //延遲0.5s
   	Swipe 51,780,568,840,200 //通過觸摸命令裏的Swip滑動命令向左滑動回到qq主消息界面
   	Delay 1000 
    
   	deleteAndOpean() //再次調用deleteAndOpean子程序
    //注:此時再次調用deleteAndOpean()子程序,是因爲該消息已經回覆,還需要需要進行對話框的刪除操作。
End Sub

3.我們可以通過顏色命令裏的CmpColorEx(多點比色命令),先對當前消息界面的爲空時的顏色進行抓取,選取十個點,又圖可知,若界面爲空,10個點的顏色相同,若此時當前消息界面仍有聊天框(必定在第一行),那麼我們就再刪除完第一行的對話框後,如果下面還有對話框,會自動彈上第一行,此時我們要判斷整個消息界面是否還有對話框,如果有,則調用Sub deleteAndOpean()子程序再次進行刪除(由於子程序的反覆調用,實際上此步驟是循環操作,直到消息界面爲空時才停止),如果沒有,我們就可以選擇底部的聯繫人,再選擇對應的羣,進行私發操作了。
在這裏插入圖片描述

//多點比色,比較當前頁面是否有暫存聊天框,是否是空白
Sub openPerson()
If CmpColorEx("82|314|FAF6F5,78|336|FAF6F5,91|355|FAF6F5,65|385|FAF6F5,604|317|FAF6F5,665|331|FAF6F5,336|402|FAF6F5,314|306|FAF6F5,629|385|FAF6F5,193|370|FAF6F5",0.9) = 1 Then
	Delay 1000           //if判斷,如果當前頁面空白,沒有對話框
	Tap 265, 1210   //點擊打開聯繫人
	Delay 1000
	Tap 218, 466    //點擊羣聊
	Delay 1000
	Tap 269, 574    //選擇需要發送的羣
	Delay 1000
	Tap 661, 100    // 打開菜單欄
	Delay 1000
	Tap 625,489     //打開羣成員列表	
Else
	deleteAndOpean()  //如果還有其他對話框,調用這個子程序刪除
	Delay 1000
	openPerson()    //繼續判斷是否有對話框
End If
End Sub

通過以上的操作,可以準確的在手機主界面自動打開qq,進入qq後,自動檢測當前消息界面是否爲空,是否有暫存聊天框,以及未讀消息。如果有,則自動回覆所有未讀消息,並清空所有聊天框,在消息界面清空後,點擊聯繫人按鈕,選擇需要私發的羣,打開菜單欄,打開羣成員列表,進行羣成員的選擇


Day1實戰整體源碼如下:

//1.openQQ
Call openQQ()   //調用openQQ子程序
Delay 1000        //注意,注意,注意  調用下一個子程序之前,需要有一個延遲,否則程序會執行錯誤
Call deleteAndOpean()
Delay 1000
Call openPerson()
Delay 1000

Sub openQQ()
Dim intX,intY    //(通過多點找色),準確抓取qq這款APP的圖標位置
FindMultiColor 0,0,0,0,"FFFFFF","49|-1|FFFFFF,25|3|000000,28|21|08B0FA,18|40|1E1EE9,12|59|08B0FA",0,0.9,intX,intY
If intX > -1 And intY > -1 Then
	Delay 1000
	Tap intX, intY   //找到圖標位置,打開座標位置
Else 
	EndScript   //如果沒找到,則腳本停止運行
End If
End Sub
//定義一個過程,可以在腳本中調用這個過程


//2.刪除所有聊天對話框,首先要判斷是否有新 消息未讀(通過多點找色找紅點點1)
Sub deleteAndOpean()
Dim intX,intY
FindMultiColor 648,328,706,378,"FFFFFF","16|-3|314CF7,32|3|FFFFFF,0|29|FFFFFF,16|31|314CF7,30|29|FFFFFF",0,0.9,intX,intY
If intX > -1 And intY > -1 Then 
	Delay 1000
	Tap 246, 319  //如果有未讀消息,則打開該對話框
	Delay 1000
Call Answer()     //通過Call方法調用answer子程序,Call可以省略
Else 
	Touch 303, 321, 2000  //如果沒有未讀消息,則點擊聊天框2秒鐘,彈出刪除按鈕
	Delay 500
	Tap 397, 196        //點擊刪除按鈕刪除聊天框
End If
End Sub

Sub Answer()
    Tap 114, 1159 //將光標定位到聊天輸入窗口
    Delay 1000
    InputText "歡迎加入狂神說java交流羣,羣號78846958"
    Delay 1000
    Tap 621,1153 //點擊發送
	Delay 500
   	Swipe 51,780,568,840,200 //向左滑動回到qq主消息界面
   	Delay 1000 
   	deleteAndOpean() //調用deleteAndOpean子程序
End Sub
//定義一個過程,可以在腳本中調用這個過程

//多點比色,比較當前頁面是否有暫存聊天框,是否是空白
Sub openPerson()
If CmpColorEx("82|314|FAF6F5,78|336|FAF6F5,91|355|FAF6F5,65|385|FAF6F5,604|317|FAF6F5,665|331|FAF6F5,336|402|FAF6F5,314|306|FAF6F5,629|385|FAF6F5,193|370|FAF6F5",0.9) = 1 Then
	Delay 1000           //if判斷,如果當前頁面空白,沒有對話框
	Tap 265, 1210   //點擊打開聯繫人
	Delay 1000
	Tap 218, 466    //點擊羣聊
	Delay 1000
	Tap 269, 574    //選擇需要發送的羣
	Delay 1000
	Tap 661, 100    // 打開菜單欄
	Delay 1000
	Tap 625,489     //打開羣成員列表	
Else
	deleteAndOpean()  //如果還有其他對話框,調用這個子程序刪除
	Delay 1000
	openPerson()    //繼續判斷是否有對話框
End If
End Sub

問題總結:

  1. 每個大步驟執行前,以及執行完畢後,都需要加一個延遲,一般爲1000ms(1s),否則會有熱鍵衝突,導致兩個命令之間沒有緩衝,腳本無法識別,導致運行失敗。同時,每個小命令,例如Tap,Swipe,Touch等,在執行之前也需要加一個緩衝,一般爲500ms,或者1000ms

  2. 在執行Answer子程序時,每次執行Swipe命令,總是出錯誤,原因在於沒有清空當前的聊天窗口,導致命令執行位置與窗口內已發送消息的所在位置衝突,因此每次執行前,都應該先清空聊天窗口內的消息。另外如果清空之後還是不能正常運行,則是因爲Swipe選擇的點可能有問題,可以重新選點,然後把移動所需時間調短一點,一般time<500ms即可

  3. 調用子程序的時候,可以不用加Call,例如調用openQQ子程序,可以用openQQ或者openQQ()兩種方式進行調用。但是如果前面加上 Call,那麼語法格式必須爲 Call openQQ(),後面必須有(),否則會報錯


Day2將會完整的帶領有興趣的小夥伴做完整個qq羣私髮腳本,未完代更…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章