按鍵精靈實現自動化點qq名片贊

1. 引子

好友比較多,每天回名片贊回到手痛。
之前寫過一個更簡單版本(直接指定座標點擊……),重裝系統丟了,正好重新寫了一個跑在虛擬機裏的,不耽誤我幹活。

2.解釋說明

  1. 核心還是模擬點擊,vbs就是一個框架幫助你實現邏輯;
  2. 此代碼運行在虛擬機裏所以時延我調的比較長,有需要自己改;
  3. 放名單的txt文件:要點讚的好友的qq號碼的列表,可以巧用qq郵箱+excel實現批量導出和處理。不直接讀取xls文件的原因是運行效率低。這個文件的格式是每個qq擺一行,然後一行一行這樣接下去。
  4. inf.bmp:在qq主窗口的搜索框中輸入qq,彈出對應的用戶,鼠標指向這個用戶會發現右面有個名片圖標,截下來;
  5. qq.bmp:qq主窗口左上角那隻企鵝,截下來;
  6. quit.bmp:打開一個人的資料卡片之後的右上角的那個×,截下來;
  7. 4-6條中所說的三個圖在代碼中必須寫成絕對路徑

3.運行環境

  1. 硬件:i7-6700hq, 16g, pcie
  2. 虛擬機:vmware 15 pro
  3. 虛擬環境:win7 ultimate sp1
  4. qq版本:目前最新版(9.1.3)
  5. 按鍵精靈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. 要點

以下這幾種高級功能均由按鍵精靈內建,可以直接調用,非常方便。

  1. 文本文檔的逐行讀取Plugin.File.ReadFileEx()
  2. 針對透明窗口的找圖操作(參考封裝的三個子過程中的重複操作);
  3. 在後臺模擬操作Plugin.Bkgnd.LeftClick()

7. 後記

歡迎交流學習。持續更新。

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