1. 引子
好友比較多,每天回名片贊回到手痛。
之前寫過一個更簡單版本(直接指定座標點擊……),重裝系統丟了,正好重新寫了一個跑在虛擬機裏的,不耽誤我幹活。
2.解釋說明
- 核心還是模擬點擊,vbs就是一個框架幫助你實現邏輯;
- 此代碼運行在虛擬機裏所以時延我調的比較長,有需要自己改;
- 放名單的txt文件:要點讚的好友的qq號碼的列表,可以巧用qq郵箱+excel實現批量導出和處理。不直接讀取xls文件的原因是運行效率低。這個文件的格式是每個qq擺一行,然後一行一行這樣接下去。
- inf.bmp:在qq主窗口的搜索框中輸入qq,彈出對應的用戶,鼠標指向這個用戶會發現右面有個名片圖標,截下來;
- qq.bmp:qq主窗口左上角那隻企鵝,截下來;
- quit.bmp:打開一個人的資料卡片之後的右上角的那個×,截下來;
- 4-6條中所說的三個圖在代碼中必須寫成絕對路徑。
3.運行環境
- 硬件:i7-6700hq, 16g, pcie
- 虛擬機:vmware 15 pro
- 虛擬環境:win7 ultimate sp1
- qq版本:目前最新版(9.1.3)
- 按鍵精靈2014(能下到的最新版)
4.暫時還存在的問題
遇到名單裏的好友被刪除之後不會跳過,會一直卡在那裏不動,要手動操作一下。
之後加一個模塊實現自動跳過並告警。
5. 代碼
核心功能封裝成子過程了。
引用請標註來源!
引用請標註來源!
引用請標註來源!
上代碼:
Dim round, MyArray, time, i
round = 199
start = 1
Text = Plugin.File.ReadFileEx("放名單的txt文件")
MyArray = Split(Text, "|")
For time = start To round
i = time - 1
SayString Cstr(MyArray(i))
Delay 1500
Call click_inf()
Delay 2000
Call click_zan()
Delay 100
Call click_qq()
Delay 100
Next
Sub click_inf()
Rem click_inf_1
XY = Plugin.Pic.FindPic(500, 0, 1920, 1080, "inf.bmp", 0, 1)
iZB = InStr(XY, "|")
intX = CLng(Left(XY, iZB - 1))
intY = CLng(Right(XY, Len(XY) - iZB))
If intX > 0 And intY > 0 Then
MoveTo intX + 5, intY + 5
Delay 100
LeftClick 1
Goto click_inf_2
Else
Goto click_inf_1
End If
Rem click_inf_2
TracePrint "click info."
End Sub
Sub click_zan()
Dim tmp
Hwnd = Plugin.Window.Foreground()
For tmp = 1 To 20
Call Plugin.Bkgnd.LeftClick(Hwnd, 332, 340)
Delay 300
Next
//Call Plugin.Bkgnd.LeftClick(Hwnd, 708, 27)
Rem click_zan_1
XY = Plugin.Pic.FindPic(500, 0, 1920, 800, "quit.bmp", 0, 1)
iZB = InStr(XY, "|")
intX = CLng(Left(XY, iZB - 1))
intY = CLng(Right(XY, Len(XY) - iZB))
If intX > 0 And intY > 0 Then
MoveTo intX + 5, intY + 5
Delay 100
LeftClick 1
Goto click_zan_2
Else
Goto click_zan_1
End If
Rem click_zan_2
TracePrint "click zan. No " & Clng(i+1)
End Sub
Sub click_qq()
Rem click_qq_1
XY = Plugin.Pic.FindPic(500, 0, 1920, 500, "qq.bmp", 0, 1)
iZB = InStr(XY, "|")
intX = CLng(Left(XY, iZB - 1))
intY = CLng(Right(XY, Len(XY) - iZB))
If intX > 0 And intY > 0 Then
MoveTo intX + 5, intY + 5
Delay 100
LeftClick 1
Goto click_qq_2
Else
Goto click_qq_1
End If
Rem click_qq_2
End Sub
6. 要點
以下這幾種高級功能均由按鍵精靈內建,可以直接調用,非常方便。
- 文本文檔的逐行讀取
Plugin.File.ReadFileEx()
; - 針對透明窗口的找圖操作(參考封裝的三個子過程中的重複操作);
- 在後臺模擬操作
Plugin.Bkgnd.LeftClick()
。
7. 後記
歡迎交流學習。持續更新。