当前位置: 首页 > news >正文

【uiautomation】微信群发消息,获取群通讯录名单

前言

接到了一个需求:现微信有8000+好友,需要给所有好友发送一则一样的消息。网上搜索一番后,发现uiautomation 可以解决该需求,遂有此文。这是第四篇,获取群聊通讯录的用户名单。

代码在文章末尾,自取~
更多功能的微信群发消息代码链接 :https://github.com/Frica01/Wechat_mass_msg


知识点📖

知识点链接
Microsoft 的 uiautomationhttps://docs.microsoft.com/zh-cn/dotnet/framework/ui-automation/ui-automation-overview
Python 的 uiautomationhttps://github.com/yinkaisheng/Python-UIAutomation-for-Windows
微信群发消息 GitHub链接https://github.com/Frica01/Wechat_mass_msg

代码实现

该方法主要实现获取群聊通讯录口中的用户名称。

借助 inspect.exe 工具,可以清楚的看到对应的节点。而在知道节点后,后面的工作就很简单了!!

聊天信息窗口

聊天成员窗口
在这里插入图片描述


代码如下:

运行效果如下动图所示:

截取部分返回的名单片段,如下:

[
    '局长星仔', '飞', 'Sad.', '几好君', 'Tt', '๑YANYANYAN๑', '3333', '🚲', '゛🍭 ShAdoW♪ ℡', '绿树森林', '条条🐳',
    'LUCKY🎁', '哈路', '二晓🐒', '杏仁草', '🌈桐楠🌈', 'Renee', '宁', 'SK🐑', 'Pinky', '亍亍', '龙儿', 'Air°', '🎀梁小诗🎀', '叶叶叶子',
    '☝DvDv', '🐾 Yang.駿💮', 'Ni', 'sandra', 'Ellie🐳', 'tracy', '李剑淳', '🌻', ' 森さん🎄',
    ...
]

由上可见,有部分是用户名称中包含Emoji表情的,也可以拿下来~


完整代码

# -*- coding: utf-8 -*-
# @Author : Frica01
# @Time   : 2022-09-10 15:39
# @Name   : wechat_operation.py

import uiautomation as auto

wx_window = auto.WindowControl(Name='微信', ClassName='WeChatMainWndForPC')

auto.SendKeys(text='{Alt}{Ctrl}w')  # 快捷键唤醒微信


def get_group_chat_name_list() -> list | None:
    """获取群聊通讯录中的用户姓名"""
    name_list = list()
    auto.ButtonControl(Name='聊天信息').Click()
    chat_members_win = wx_window.ListControl(Name='聊天成员')
    if not chat_members_win.Exists():
        return
    wx_window.ButtonControl(Name='查看更多').Click()
    for idx, item in enumerate(chat_members_win.GetChildren()):
        name = item.ButtonControl().Name
        name_list.append(name)
    return name_list


if __name__ == '__main__':
    data = get_group_chat_name_list()
    print(len(data))
    print(data)

后话

如果看不懂代码,可以在下方留言~
see you.🎈🎈

相关文章:

  • 「数据结构详解·八」带权并查集 扩展域并查集
  • 【SQL刷题】DAY21----SQL组合查询专项练习
  • 解决使用Lambda分组后,每组多条数据处理
  • 商业地产如何走出高空置率困局?
  • <学习笔记>从零开始自学Python-之-基础语法篇(十一)正则表达式re库
  • 随想录一期 day2 [977.有序数组的平方|209. 长度最小的子数组|59.螺旋矩阵II(剥洋葱)]
  • 自动驾驶数据标注基本框架,你了解多少?丨曼孚科技
  • 前景理论-风险决策分析的思维模型
  • Intel汇编-CMOV条件传送指令
  • 基于java宠物交易计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  • 单片机毕设选题 - 便携式空气质量检测系统(物联网 嵌入式)
  • gsnark中的证明方案及曲线
  • LL(1)文法定义及判别
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • 02-C语言经典算法100例
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • CentOS7 安装JDK
  • express如何解决request entity too large问题
  • Fabric架构演变之路
  • Hibernate最全面试题
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Just for fun——迅速写完快速排序
  • Koa2 之文件上传下载
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Puppeteer:浏览器控制器
  • 初识 webpack
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 前端性能优化--懒加载和预加载
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 我的zsh配置, 2019最新方案
  • 写代码的正确姿势
  • 一道闭包题引发的思考
  • 在Mac OS X上安装 Ruby运行环境
  • zabbix3.2监控linux磁盘IO
  • 国内开源镜像站点
  • ​力扣解法汇总946-验证栈序列
  • ​马来语翻译中文去哪比较好?
  • !$boo在php中什么意思,php前戏
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (1) caustics\
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (力扣题库)跳跃游戏II(c++)
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (四) Graphivz 颜色选择
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)nsfocus-绿盟科技笔试题目