按键精灵实现自动化点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. 后记

欢迎交流学习。持续更新。

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