问题提出
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卡死,当然弹不出某某红包礼包,于是乎
完美收场
文章评论
大神写一个劲舞团类的方向键脚本吧
@pizyds 感觉不错诶~
还是不够快,大哥更新一下,今年2021了。