使用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引导程序
Oct 26 Javascript
JS中==与===操作符的比较
Mar 21 Javascript
jQuery右键菜单contextMenu使用实例
Sep 28 Javascript
原生javascript获取元素样式
Dec 31 Javascript
AngularJS 表达式详细讲解及实例代码
Jul 26 Javascript
Vue.js实现简单ToDoList 前期准备(一)
Dec 01 Javascript
AngularJS学习第一篇 AngularJS基础知识
Feb 13 Javascript
node.js中debug模块的简单介绍与使用
Apr 25 Javascript
Javascript ES6中数据类型Symbol的使用详解
May 02 Javascript
在nginx上部署vue项目(history模式)的方法
Dec 28 Javascript
angularjs获取到My97DatePicker选中的值方法
Oct 02 Javascript
vue elementui el-form rules动态验证的实例代码详解
May 23 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
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Python 实现数组相减示例
2019/12/27 Python
深入分析python 排序
2020/08/24 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
高中教师评语大全
2014/04/25 职场文书
优秀教师演讲稿
2014/05/06 职场文书
体育之星事迹材料
2014/05/11 职场文书
单位承诺书格式
2014/05/21 职场文书
会计人员演讲稿
2014/09/11 职场文书
交通违章检讨书
2014/09/21 职场文书
离婚协议书格式
2014/11/21 职场文书
法定代表人证明书
2014/11/28 职场文书
婚礼新人答谢词
2015/01/04 职场文书
绵山导游词
2015/02/05 职场文书
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android