[按键精灵]QQ刷一刷脚本编写思路及成果发布

2017年2月3日 11163点热度 12人点赞 3条评论

问题提出


QQ的惯例,每年除夕夜推出的刷一刷抢红包。简单分析,这就是一个机械的拼手速过程:下滑,松开,下滑,松开……
这就很容易用脚本代码来实现,本例中使用了按键精灵的MQ语言(VB语法),来达到自动刷一刷的目的。
(温馨提示:这个脚本是用来装逼的,不是真的来抢红包的)
2017.4.29更新:真不好意思拖了那么久,原文真的是那个除夕创建的...

编写过程


最开始是考虑使用swipe()命令

很轻松的(绕了几个弯)写出第一代脚本:

Dim x,y,t1,t2,tt
t1=35
t2=0
X=GetScreenX()
Y=GetScreenY()
//showmessage X&","&Y
t1=t1*1000
tt=0
dim x1,y1,y2,ts,temp
x1=x*0.5
y1=y*0.2
y2=y*0.8
ts=tickcount()+t1
do while ts>=tickcount()
//temp=tickcount()
swipe x1,y1,x1,y2,0
//ShowMessage tickcount()-temp
delay t2
tt=tt+1
loop
ShowMessage tt
delay 2000

但问题来了,QQ的下拉界面一抖一抖的,还不如人手拉得快,难道是swipe()效率太低?
改用TouchDown() TouchMove() TouchUp()

当做有代码,实测效果与swipe()差不多差,直接跳转下一阶级

是时候放大招了,Pillars请出了TouchDownEvent() TouchMoveEvent() TouchUpEvent()
关于这三个命令,按键精灵官方没有提到,但是Pillars做了猜测:按键精灵中关于TouchDownEvent和TouchDown的区别探究

Dim x,y,t1,t2,tt,t3
t1=50
t2=20
X=GetScreenX()
Y=GetScreenY()
//showmessage X&","&Y
t1=t1*1000
tt=0
dim x1,y1,y2,ts,temp
x1=x*0.8
y1=y*0.2
y2=y*0.8
ts=tickcount()+t1
do while ts>=tickcount()
//temp=tickcount()
touchdownevent x1,y1,0
touchmoveevent x1,y2,0
touchupevent 0
//ShowMessage tickcount()-temp
delay t2
tt=tt+1
loop
ShowMessage tt
delay 2000

效果不错~

这是跳出红包礼包的情况,需要手动关掉那个页面。

最后一想,直接去掉延迟死循环得了代码还短

最终成果

Dim x,y
X=GetScreenX()
Y=GetScreenY()

dim x1,y1,y2

x1=x*0.8
y1=y*0.2
y2=y*0.8
do while true
touchdownevent x1,y1,0
touchmoveevent x1,y2,0
touchupevent 0
loop

这段代码,直接把QQ卡死,当然弹不出某某红包礼包,于是乎

完美收场

章鱼DS

学生网站代码通吃的草根,但总拼命着长出树根。

文章评论

  • pizyds

    大神写一个劲舞团类的方向键脚本吧

    2017年10月7日
  • 哈哈哈

    还是不够快,大哥更新一下,今年2021了。

    2021年2月11日