(22)采集微信通讯录详情面板-微信UI自动化(.Net+C#)

整理 | 小耕家的喵大仙

出品 | CSDN(ID:lichao19897314)

Q Q | 978124155

 往期知识回顾

(1)C#开启探索微信自动化之路-微信UI自动化

(2)C#创建微信窗体自动化实例-微信UI自动化

(3)C#针对系统热键管理-微信UI自动化

(4)C#采集微信通讯录和联系人-微信UI自动化

(5)C#实现针对微信窗体鼠标静默点击-微信UI自动化

(6)C#搜索微信通讯录联系人-微信UI自动化

(7)C#实现微信消息群发-微信UI自动化

(8)C#监控微信进程运行状态-微信UI自动化

(9)C#监控微信网络连接状态-微信UI自动化

(11)C#实现微信窗体尺寸跟随调整-微信UI自动化

(12)C#采集微信聊天记录及历史消息-微信UI自动化

(13)C#实现自动回复微信消息-微信UI自动化

(14)C#针对微信界面元素截图操作-微信UI自动化

(15)C#实现对微信窗体的行为管控-微信UI自动化

(16)C#实现微信多开-微信UI自动化

(17)C#实现微信聊天文件接收及下载-微信UI自动化

(18)C#采集微信群成员信息-微信UI自动化(.Net)

(19)C#添加微信好友(可批量添加)--微信UI自动化(.Net)

(20)将微信群成员添加为好友-微信UI自动化(.Net+C#)

👆😀以上文章是以往使用自动化方案操作微信的一些案例!如有兴趣请点击浏览!

因为文章可能无法满足读者要求,如需源码和支持请联系本人 QQ 978124155 

本篇目的
   
  今天一位做跨境电商行业朋友联系我,说他想将【微信通讯录】中的【微信群】和【微信好友】信息采集并导出到Excel中存档,防止客户数据丢失,其中【微信群】需要群名称和群成员数量,【微信好友】需要如下“昵称”,“微信名称”,“电话”,"标签","备注","朋友权限","来源","个性签名","地区"信息,通过分析微信窗体发现是能够采集并实现。

软件视频及截图
各位朋友如果时间允许可观看视频直观感受下添加微信群成员为好友的执行过程,更加直观清晰,本人将自动化速度调节的慢些,以便更加清晰的感受到自动化带来的魅力。

采集的【微信群】

采集的【微信好友】包括“昵称”,“微信名称”,“电话”,"标签","备注","朋友权限","来源","个性签名","地区"信息

实现思路

通过对微信UI分析,微信好友的详情信息在【通讯录面板】右边的【详情】中可采集到所有的信息,如何区分是【微信好友】还是【微信群】呢?我们通过对比发现两个面板中都有【发消息】的按钮,但是【发消息】按钮的位置是不一样的,通过这个可以区分我们当前选中的联系人是【微信好友】还是【微信群】。

  1. 执行点击微信主面板的【通讯录】按钮,切换窗体状态到通讯录

  2. 判断【通讯录列表】是否存在滚动条,如果存在滚动条则将滚动条位置设置到初始状态也就是最顶部的状态。
  3. 选中可视区域内的【通讯录列表】第一个项目,执行点击事件,将焦点设置到列表中。
  4. 执行键盘【Down】模拟按键发送,则【通讯录列表】中的选中联系人会随着按键发送而改变。
  5. 对右边【通讯录详情面板】做数据分析。
  6. 第一步先分析当前选中联系人是【微信群】还是【微信好友】,如果是其他类型则忽略。
  7. 如果是【微信群】则获取群名称和群人数。
  8. 如果是【微信好友】则获取对应的“昵称”,“微信名称”,“电话”,"标签","备注","朋友权限","来源","个性签名","地区"等信息。
  9. 如果当前信息不存在采集的缓存中,则继续模拟发送【Down】按键执行,如果当前信息存在采集的缓存中则代表有人为操作或者采集完毕,退出采集任务即可。
 技术细节

定义微信联系人DTO对象

	public class WeChatContractDetailDto{/// <summary>/// 群组类型/// </summary>public WeChatContractType Type { get; set; }/// <summary>/// 联系人或者群组名称/// </summary>public string Name { get; set; }/// <summary>/// 群数量/// </summary>public int GroupNumber { get; set; }/// <summary>/// 微信号/// </summary>public string WeChatName { get; set; }/// <summary>/// 昵称/// </summary>public string NickName { get; set; }/// <summary>/// 电话/// </summary>public string Mobile { get; set; }/// <summary>/// 标签/// </summary>public string Label { get; set; }/// <summary>/// 备注/// </summary>public string Remark { get; set; }/// <summary>/// 朋友权限/// </summary>public string Authority { get; set; }/// <summary>/// 来源/// </summary>public string Source { get; set; }/// <summary>/// 个性签名/// </summary>public string Sign { get; set; }/// <summary>/// 地区/// </summary>public string Address { get; set; }}public enum WeChatContractType{/// <summary>/// 群组/// </summary>Group = 0,/// <summary>/// 联系人/// </summary>Contract = 1}

采集【通讯录列表】

	private void CollectionNew(){CurrentUIAuto.Focus();ClickContacts();var contractList = CurrentUIAuto.Find("/Pane/Pane[1]/Pane[2]/Pane/List");if (contractList == null)return;contractList.Focus();var child = contractList.FindAllChildren();if (child.Count() <= 0)return;foreach (var item in child){var wxName = item.Name;if (!string.IsNullOrEmpty(wxName)){item.Click();break;}}Thread.Sleep(500);int i = 0;while (true){contractList.Focus();var current = AnalysisContract();if (current != null){if (current.Type == WeChatContractType.Group){if (contacts.Count(item => item.Type == WeChatContractType.Group && item.Name == current.Name && item.GroupNumber == current.GroupNumber) > 0)break;}if (current.Type == WeChatContractType.Contract){if (contacts.Count(item => item.Type == WeChatContractType.Contract && item.Name == current.Name && item.WeChatName == current.WeChatName) > 0)break;}contacts.Add(current);}i++;if (i > 50){break;}}}

采集【通讯录联系人详情】

	private WeChatContractDetailDto AnalysisContract(){var mainPanel = CurrentUIAuto.Find("/Pane/Pane[1]/Pane/Pane");//群发送消息按钮var groupSendMsgBtn = mainPanel.FindFirstByXPath("/Pane[2]/Button");//联系人按钮                                 var contractSendMsgBtn = mainPanel.FindFirstByXPath(@"/Pane[2]/Button[1]");WeChatContractDetailDto dto = null;if (groupSendMsgBtn != null){dto = new WeChatContractDetailDto() { Type = WeChatContractType.Group };var title = mainPanel.FindFirstByXPath(@"/Pane[2]/Text")?.Name+"";var index = title.LastIndexOf("(");dto.Name=title.Substring(0,index);var number=title.Substring(index,title.Length-index);dto.GroupNumber =int.Parse( number.Replace("(", "").Replace(")", ""));}if (contractSendMsgBtn != null){dto = new WeChatContractDetailDto() { Type = WeChatContractType.Contract };var name = mainPanel.FindFirstByXPath(@"/Pane[2]/Pane[1]/Text");dto.Name = name.Name;#region 设置微信号 地区 昵称var panel = mainPanel.FindFirstByXPath(@"/Pane[2]/Pane[2]");foreach (var item in panel.FindAllChildren().ToList()){var type = item.FindFirstByXPath("/Pane/Text[1]").Name;var value = item.FindFirstByXPath("/Pane/Text[2]").Name;switch(type) {case "微信号:":dto.WeChatName = value; break;case "地区:": dto.Address= value; break;case "昵称:": dto.NickName= value; break;}}#endregion#region 设置备注 标签  电话 朋友权限var panel1 = mainPanel.FindFirstByXPath(@"/Pane/Pane[2]");foreach (var item in panel1.FindAllChildren().ToList()){var type = item.FindFirstByXPath("/Text[1]").Name;var value = item.FindFirstByXPath("/Text[2]").Name;switch (type){case "标签": dto.Label = value; break;case "备注": dto.Remark = value; break;case "电弧": dto.Mobile = value; break;case "朋友权限": dto.Authority = value; break;}}#endregion#region 设置个性签名 来源var panel2 = mainPanel.FindFirstByXPath(@"/Pane[3]");foreach (var item in panel2.FindAllChildren().ToList()){var type = item.FindFirstByXPath("/Pane/Text[1]").Name;var value = item.FindFirstByXPath("/Pane/Text[2]").Name;switch (type){case "个性签名": dto.Sign= value; break;case "来源": dto.Source = value; break;}}#endregion}return dto;}

因为文章可能无法满足读者要求,如需源码和支持请联系本人 QQ 978124155  

(21)批量删除微信联系人-微信UI自动化(.Net+C#)icon-default.png?t=N7T8https://blog.csdn.net/lichao19897314/article/details/138169603

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/670167.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MoonBit 开源之夏重磅来袭!12000元奖金等你来拿!

宣讲视频 MoonBit 开源之夏宣讲视频 关于我们 开源之夏 「开源之夏 (OSPP)」是中科院软件所「开源软件供应链点亮计划」指导下的系列暑期活动&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&#xff0c;培养和发掘更多优秀的开发者&#xff0c;促进优秀开源软件社区…

OpenSSL实现AES-CBC加解密,可一次性加解密任意长度的明文字符串或字节流(QT C++环境)

本篇博文讲述如何在Qt C的环境中使用OpenSSL实现AES-CBC-Pkcs7加/解密&#xff0c;可以一次性加解密一个任意长度的明文字符串或者字节流&#xff0c;但不适合分段读取加解密的&#xff08;例如&#xff0c;一个4GB的大型文件需要加解密&#xff0c;要分段读取&#xff0c;每次…

根据相同的key 取出数组中最后一个值

数组中有很多对象 , 需根据当前页面的值current 和 数组中的key对比 拿到返回值 数据结构如下 之前写法 const clickedItem routeList.find(item > item.key current) // current是当前页 用reduce遍历数组返回最后一个值 const clickedItem routeList.reduce((lastIte…

OpenCV 入门(七)—— 身份证识别

OpenCV 入门系列&#xff1a; OpenCV 入门&#xff08;一&#xff09;—— OpenCV 基础 OpenCV 入门&#xff08;二&#xff09;—— 车牌定位 OpenCV 入门&#xff08;三&#xff09;—— 车牌筛选 OpenCV 入门&#xff08;四&#xff09;—— 车牌号识别 OpenCV 入门&#xf…

ABAP 第二代增强-采购申请子屏幕增强

文章目录 第二代增强-采购申请子屏幕增强需求实现过程创建项目运行效果客户屏幕的PBO全局变量获取数据更新数据运行效果查询底表修改数据 第二代增强-采购申请子屏幕增强 需求 实现过程 创建项目 运行效果 客户屏幕的PBO 全局变量 *&------------------------------------…

社交媒体数据恢复:新浪微博

当我们在使用新浪微博时&#xff0c;可能会遇到一些意外情况&#xff0c;如误删微博、账号出现问题等。这时&#xff0c;我们需要进行数据恢复。本文将详细介绍如何在新浪微博中进行数据恢复。 首先&#xff0c;我们需要了解新浪微博的数据恢复功能。根据微博的帮助中心&#…

安卓跑马灯效果

跑马灯效果 当一行文本的内容太多&#xff0c;导致无法全部显示&#xff0c;也不想分行展示时&#xff0c;只能让文字从左向右滚动显示&#xff0c;类 似于跑马灯。电视在播报突发新闻时经常在屏幕下方轮播消息文字&#xff0c;比如“ 快讯&#xff1a;我国选手 *** 在刚刚结束…

1W 3KVDC 隔离 稳压单输出 DC/DC 电源模块——TPV-SAR系列

TPV-SAR系列产品是专门针对PCB上分布式电源系统中需要与输入电源隔离且输出精度要求较高的电源应用场合而设计。该产品适用于&#xff1b;1&#xff09;输入电源的电压变化≤5%&#xff1b;2&#xff09;输入输出之前要求隔离电压≥3000VDC&#xff1b;3&#xff09;对输出电压…

LeetCode 面试经典150题 228.汇总区间

题目&#xff1a; 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区…

oracle 8i系统检查

oracle 8i系统检查 set echo on spool d:\bk\1.txt select sysdate from dual; --版本信息 select * from v$version; --安装的产品 col PARAMETER for a50; col value for a10; select * from v$option order by 2; --用户信息 set linesize 100 set pagesize 100 COL USE…

Python实现2048游戏

提供学习或者毕业设计使用,功能基本都有,不能和市场上正式游戏相提比论,请理性对待! 在这篇博客中,我们将使用 Python 和 Pygame 库来编写经典的 2048 游戏。2048 是一个益智类游戏,通过在 4x4 网格上滑动方块并合并它们来创建一个新的数字,直到获得数字 2048 或者无法继…

有什么方便的教学口语软件?6个软件教你快速练习口语

有什么方便的教学口语软件&#xff1f;6个软件教你快速练习口语 以下是六个方便实用的教学口语软件&#xff0c;它们可以帮助您快速练习口语&#xff1a; AI外语陪练: 这是一款知名的语言学习软件&#xff0c;提供多种语言的口语练习课程。它采用沉浸式的学习方法&#xff0…