今天是农历大年初一, 值此辞旧迎新之际雪峰祝各位访客朋友新年快乐, 万事如意, 心想事成!
故事的开始
昨晚为了接个好友红包, 没手机的我无奈启动安卓虚拟机, 偶然发现手机QQ上还有个抢红包的活动. 具体做法就是在消息列表那儿使劲往下拉, 频率越高越好, 我试了两下突然有了写代码的冲动. _(:3 」∠)_
软件的功能很简单, 就是模拟人类手指进行抢红包操作, 进而实现”优雅”的抢红包.
Coding
花了大概20分钟, 抢红包插件1.0终于完成了(说是插件其实更像是鼠标脚本). 为赶时间, 我写的是控制台应用程序.
代码
1 | // 抢红包插件 By 雪峰 2016-02-07 |
原理&用法
程序流程大致是这样的:
- 函数
Mouse()
进入后首先Sleep(3000)
休息3秒(这些Windows提供的函数单位都是毫秒) - 接着记录当前时间, 接下来只要不超过当前时间+输入的时间, 就一直循环下去
- 鼠标操作有三个, 第一个是左键点下去, 第二个通过循环使鼠标缓慢移动, 第三个松开左键. P.s: 鼠标键盘操作我比较喜欢用
mouse_event()
和keybd_event()
这两个API, 还有个SendInput()
看起来更符合Microsoft的命名习惯, 也更强大. GetCursorPos()
与SetCursorPos()
为的是每次刷过以后鼠标跑回原来的位置.- 最后
Sleep(150)
很有必要, 我试过100快了, 200慢了.
输入持续时间后, 把鼠标移到虚拟机屏幕上即可, 不过要注意Win8以后系统需要管理员身份运行才行. 这个问题最初是我在跟一位朋友远程桌面的时候发现的, QQ, TeamViewer, AnyDesk鼠标在一些窗口上点击都不起作用, 最后以内置管理员身份运行问题解决.
测试
其他的都好, 就是只有一点: 根本停不下来!!!⊙▽⊙
改进
吃完宵夜后我马上又开始改进, 半小时后, Red Packet Robber 2.0诞生, 与1.0不同, GUI界面以及加入了多线程技术, 支持热键启动/暂停…
然而这时红包已经抢完了, 我开发这个还有什么卵用呢? ⊙﹏⊙
结果
结果证明: 抢腾讯红包这种事情果然不靠谱…
我再也不会去想抢腾讯红包这样的馊主意了
下载
Red Packet Robber 2源码及成品:
Download