autojs和Auto.js Pro获取微信7.0.4聊天页面会话内容的方法,取微信聊天记录 | 您所在的位置:网站首页 › pr中如何放大缩小视频 › autojs和Auto.js Pro获取微信7.0.4聊天页面会话内容的方法,取微信聊天记录 |
前言
有位小伙伴要开发微信机器人。需要获取微信好友消息。
首先百度一下,看看能不能找到相关的资料。 搜索“autojs 微信” 找到了这篇文章 初探 Autojs ,写了个简单的微信群聊机器人 我把文章内的部分开源代码复制到这里 "auto"; //设置无障碍模式 fast为启用缓存 auto(); //请求截屏权限 因为增加了这个权限请求 启动脚本必须在 autojs APP界面 否则会有问题,主要是连电脑调试要注意 if(!images.requestScreenCapture()){ toast("请求截图失败"); exit(); } function getMsg(){ if(currentActivity() != 'com.tencent.mm.ui.LauncherUI'){ //不在聊天Activity //先判断是否在微信中 if(currentActivity().search('com.tencent.mm') == -1){ //当前 APP 不是微信 return false; //app.launch("com.tencent.mm"); } //不在聊天Activity ,则有可能是文字详情界面 点击任意区域回到聊天界面(点状态栏区域比较保险) press(1 ,1,1); sleep(100); //这个时间根据手机的响应速度可能要稍微调整 ***这里可以根据情况调整*** } if(!id('aab').exists() || !id('y').exists()){ //没有找到输入框则表示当前界面不是聊天窗口 return false; } var last_y = id('y').findOnce(id('y').find().size()-1) if(last_y.childCount() != 2){ return false; } var ji = last_y.child(1).findOne(id('ji')); if(ji){ return ['text' , getText(ji)]; }else { var aec = last_y.child(1).findOne(id('aec')); if(aec){ var jh = last_y.child(1).findOne(id('jh')); if(jh){ var nickname = jh.text(); }else{ var nickname = last_y.child(0).findOne(id('jg')).contentDescription.replace('头像',''); } return ['img' , getImg(aec) ,nickname]; } } return false; } function getText(uiObj){ //微信的聊天文本不能直接获取到 这里模拟双击在文本详情界面获取内容 //获取文字区域 模拟双击 var last_ji_rect = uiObj.bounds(); press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); sleep(40); //双击间隔时间 ***这里可以根据情况调整*** press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); var afv = id('afv').findOne().text(); press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); return afv; } function sendMsg(str){ //设置输入框文本 id('aab').setText(str); //获取标题栏区域并点击,解决发送按钮获取不到的问题 var hj = id('hj').findOne().bounds(); click(hj.centerX(), hj.centerY()); //点击发送 id('aah').click(); }这段代码是2018年2月份写的,当时的微信版本和autojs的版本都比现在要低很多。 上面的代码,只能作为参考,有些语法和写法,现在的autojs可能已经不再使用了。 代码里有一个getText()函数。 function getText(uiObj){ //微信的聊天文本不能直接获取到 这里模拟双击在文本详情界面获取内容 //获取文字区域 模拟双击 var last_ji_rect = uiObj.bounds(); press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); sleep(40); //双击间隔时间 ***这里可以根据情况调整*** press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); var afv = id('afv').findOne().text(); press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1); return afv; }这段代码的思路,是先找到会话气泡。双击会话气泡的中心点坐标,在弹出的内容里获取文本。 其中uiObj参数,就是会话气泡的节点对象。 在微信7.0.4版本里,测试并没有作用。弹出的内容页,跟前面一样,无法通过text()获取文字内容。 那么,有没有其他办法,能获取微信聊天内容呢? 经过一番研究,找到了一个不错的方法。 这个方法除了微信,其他的能获取到会话气泡节点的APP也可以使用。 在文字右侧下载代码,可查看实现过程。 下面是代码在Visual Studio Code中的调试输出内容: 21:44:58.625/V: 开始运行[[remote]获取微信会话内容聊天记录.js] 21:45:00.531/D: 第1条:又停电了吗? 21:45:00.788/D: 第2条:还没有来电呀? 21:45:00.789/V: ------------ [[remote]获取微信会话内容聊天记录.js]运行结束,用时2.163000秒 开发环境与工具微信版本:7.0.4 开发IDE:Visual Studio Code1.3.5.1 Auto.js:Pro 7.0.3-7 终端设备1:红米NOTE5A高配版 终端设备1分辨率:720X1280像素 终端设备1安卓版本:7.1.2 终端设备2:红米NOTE7 终端设备2分辨率:1080X2340像素 终端设备2安卓版本:9 开发文档UI选择器 相关教程Auto.js Pro安卓全分辨率免ROOT引流脚本开发教程 常见问题 代码下载后可以直接在auto.js PRO 上面运行吗?代码在Visual Studio Code中写,可以直接发送到autojs中运行和调试。 auto.js4.1普通版能运行吗?可以。 代码调用了autojs的函数吗?是的。基于autojs封装的接口来编写的,肯定调用autojs的函数。 脱离autojs能独立运行吗?当然不能。 其他编程语言怎么获取微信聊天记录?易语言和java应该都可以实现。本文的代码主要是提供一种思路,一种解决方案。知道了这种思路,其他编程语言也可以实现。 代码支持最新版本的微信吗?微信版本更新的比较多,不保证此方法一定能支持最新版本。 本文的代码只在微信7.0.4版本下有效。 只提供一种思路,要学会举一反三,活学活用。 其他版本的微信适配问题,请自行研究,不在售后范围。 |
CopyRight 2018-2019 实验室设备网 版权所有 |