使用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调用C#代码
Jan 17 Javascript
input禁止键盘及中文输入,但可以点击
Feb 13 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
Jan 22 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
Apr 15 Javascript
ReactNative 之FlatList使用及踩坑封装总结
Nov 29 Javascript
JS实现全屏预览F11功能的示例代码
Jul 23 Javascript
JavaScript笛卡尔积超简单实现算法示例
Jul 30 Javascript
深入理解react 组件类型及使用场景
Mar 07 Javascript
js实现窗口全屏示例详解
Sep 17 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
Dec 30 Javascript
如何使JavaScript休眠或等待
Apr 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
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
PHP多文件上传实例
2015/07/09 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
python列表list保留顺序去重的实例
2018/12/14 Python
python3.6数独问题的解决
2019/01/21 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
final, finally, finalize的区别
2012/03/01 面试题
旅游个人求职信范文
2014/01/30 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
档案信息化建设方案
2014/05/16 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android