使用AutoJs实现微信抢红包的代码


Posted in Javascript onDecember 31, 2020

需要准备的工具有:AutoJs,VSCode,一部手机

1. 首先使用AutoJs的布局设置查找红包的Id

使用AutoJs实现微信抢红包的代码  

使用AutoJs实现微信抢红包的代码

可以看出来红包的id为“aag

关于这个红包的id请以自己看到的为准

因为我在上午写的时候这里的id还是“an3”,到下午的时候就变成“aag”了

然后在VSCode里编写代码

var redEnvelopes = id("aag").find();

返回一个id为aag的redEnvelopes集合

此处注意find和findOne的区别 find:返回所有id为aag的集合

findOne:返回一个id为aag的对象

 既然他是一个集合,现在只需要找到最新的那个红包然后点击就可以了

var redEnvelopes_x = redEnvelopes[redEnvelopes.length - 1].bounds().centerX();
var redEnvelopes_y = redEnvelopes[redEnvelopes.length - 1].bounds().centerY();

此处的代码是获取最新的红包在屏幕上的(X,Y)的坐标

不直接使用click是因为我太菜了

找不到id().findOne().click();又或者id().findOne().children().click();等等这种·····

这样标准的句子点击,原因就是这么简单

有了红包的坐标后就可以直接使用

click(redEnvelopes_x,redEnvelopes_y);

直接点击坐标来打开红包

2. 接着继续布局分析

使用AutoJs实现微信抢红包的代码

红包“开”的id为“den”,以此类推打开红包后返回聊天界面的id为dm

var open = id("den");
if(open.exists()){
  open.findOne().click();
  sleep(2000);
  toast("返回");
  id("dm").findOne().click();
}else{
  toast("红包已领取或过期")
  sleep(1000)
  id("dm").findOne().click();
}

此时已经可以实现自动领取最新红包的动作。

但是

问题也就显现出来了,你会发现他会一直点最新的那一个红包,不管他在屏幕的什么地方,就算已经领取完了他也会一直点,没完没了。

解决思路:

使用一个打开红包和未打开红包的不同来辨别红包是否需要打开。

使用AutoJs实现微信抢红包的代码使用AutoJs实现微信抢红包的代码

.非常轻松的发现可以通过背景颜色来分辨

requestScreenCapture(false);
var img = captureScreen();
var color = images.pixel(img, X, Y);
var point = findColor(img, "#000000", {
  region: [X, Y, 50, 50],
  threshold: 4
});

通过阅读官方文档可以发现有一个专门来辨别颜色的方法

现在只需要知道未领取红包的颜色就可以了。

使用企鹅的截图很方便可以获取鼠标当前的颜色

未领取红包的颜色是(249,165,71) 随便找一个网站把这个RGB值转换成16进制可以得到#F9A547

此时代码为

requestScreenCapture(false);
var img = captureScreen();
var color = images.pixel(img, redEnvelopes_x , redEnvelopes_y );
var point = findColor(img, "#F9A547", {
  region: [redEnvelopes_x , redEnvelopes_y , 50, 50],
  threshold: 4
});

已经可以实现只点击未领取红包,还有一个问题

那就是当前页面没有红包的话红包集合的长度为0,不做处理的话肯定会出问题。

所以要在每次获取集合做后判断一下就可以解决了。

完整代码分享

requestScreenCapture(false);
var redEnvelopes = id("aag");
var redEnvelopes_x = 0;
var redEnvelopes_y = 0;
 
while(true){
  if(redEnvelopes.exists()){
    redEnvelopes_point = id("aag").find();
    if(rb_point.length > 0){
      redEnvelopes_x = rb_point[redEnvelopes_point.length - 1].bounds().centerX();
      redEnvelopes_y = rb_point[redEnvelopes_point.length - 1].bounds().centerY();
      var img = captureScreen();
      var color = images.pixel(img, redEnvelopes_x, redEnvelopes_y);
      var point = findColor(img, "#FA9D3B", {
        region: [redEnvelopes_x, redEnvelopes_y, 50, 50],
        threshold: 4
      });
      if(point){
        toast("发现新红包!");
        click(redEnvelopes_x, redEnvelopes_y);
        sleep(1000);
        openBox();
        sleep(1000);
      }
    }else{
      //当前界面没有红包 不作任何处理
    }
  }
}
 
function openBox(){
  var open = id("den");
  if(open.exists()){ 
    open.findOne().click();
    sleep(2000);
    toast("返回");
    id("dm").findOne().click();
  }else{
    toast("红包已领取或过期")
    sleep(1000)
    id("dm").findOne().click();
  }
}

到此这篇关于使用AutoJs实现微信抢红包的代码的文章就介绍到这了,更多相关AutoJs实现微信抢红包内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript中[]和{}对象使用介绍
Mar 20 Javascript
js获取滚动距离的方法
May 30 Javascript
javascript实现判断鼠标的状态
Jul 10 Javascript
如何实现JavaScript动态加载CSS和JS文件
Dec 28 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
Jan 04 Javascript
js+css实现select的美化效果
Mar 24 Javascript
jquery实现界面无刷新加载登陆注册
Jul 30 Javascript
Vue.js对象转换实例
Jun 07 Javascript
JavaScript实现构造json数组的方法分析
Aug 17 Javascript
js单线程的本质 Event Loop解析
Oct 29 Javascript
JS寄快递地址智能解析的实现代码
Jul 16 Javascript
JS图片懒加载技术实现过程解析
Jul 27 Javascript
Vue中inheritAttrs的使用实例详解
Dec 31 #Vue.js
element 动态合并表格的步骤
Dec 31 #Javascript
vue导入.md文件的步骤(markdown转HTML)
Dec 31 #Vue.js
Selenium执行JavaScript脚本的方法示例
Dec 31 #Javascript
javascript实现随机抽奖功能
Dec 30 #Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 #jQuery
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 #Javascript
You might like
香妃
2021/03/03 冲泡冲煮
php实现的返回数据格式化类实例
2014/09/22 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
js右键菜单效果代码
2007/07/21 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
全面解析JavaScript中“&&”和“||”操作符(总结篇)
2016/07/18 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
python实现的自动发送消息功能详解
2019/08/15 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
如何使用python切换hosts文件
2020/04/29 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
房地产财务管理制度
2014/02/02 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
初三开学计划书
2014/04/27 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
找工作求职信
2014/07/07 职场文书
岗位工作说明书
2014/07/29 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
关于运动会的广播稿
2015/08/19 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫