使用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 相关文章推荐
Prototype PeriodicalExecuter对象 学习
Jul 19 Javascript
JavaScript Scoping and Hoisting 翻译
Jul 03 Javascript
通过正则表达式实现表单验证是否为中文
Feb 18 Javascript
简述AngularJS的控制器的使用
Jun 16 Javascript
Javascript显示和隐藏ul列表的方法
Jul 15 Javascript
jquery trigger函数执行两次的解决方法
Feb 29 Javascript
微信小程序 wx.request(object) API详解及实例代码
Sep 30 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
Dec 18 Javascript
解决angularJS中input标签的ng-change事件无效问题
Sep 13 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
Jun 24 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
Oct 30 Javascript
JS实现纸牌发牌动画
Jan 19 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
PHP4与PHP5的时间格式问题
2008/02/17 PHP
网页上facebook分享功能具体实现
2014/01/26 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
js选项卡的制作方法
2017/01/23 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
Python中获取网页状态码的两个方法
2014/11/03 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
python实现飞机大战微信小游戏
2020/03/21 Python
python实现的config文件读写功能示例
2019/09/24 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
经典c++面试题三
2015/07/08 面试题
计算机开发个人求职信范文
2013/09/26 职场文书
教师一岗双责责任书
2014/04/16 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang