【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

代码实现

完整代码在文末,这里只演示使用效果~

本文示例的文件夹如下:

  • 值得注意的是,如果发送的文件与Python处理同级目录,则无需填写绝对路径

下面用Python代码去将这些文件发送给指定的微信好友


发送文本

wx = WxOperation()
# 发送文本
wx.send_msg('文件传输助手',msgs=['hello', 'world']
)

代码运行效果如下动图所示~


发送文件

wx = WxOperation()
# 发送文件
wx.send_msg('文件传输助手',file_paths=['demo.bat', 'demo.png']
)

代码运行效果如下动图所示~


发送文本+文件

wx.send_msg('文件传输助手',msgs=['hello', 'world'],file_paths=['demo.bat', 'demo.png']
)

代码运行效果如下动图所示~

在这里插入图片描述


批量发送文本+文件

wx = WxOperation()
# 群发
wx.send_msg(*['文件传输助手', '靓仔'],	# msgs=['hello', 'world'],file_paths=['demo.bat', 'demo.png']
)

代码运行效果如下动图所示~


完整代码

# -*- coding: utf-8 -*-
# @Author : Frica01
# @Time   : 2022-09-10 15:39
# @Name   : wechat_operation.py"""微信群发消息"""import os
import time
import subprocess
import uiautomation as auto
from typing import Iterableclass WxOperation:"""微信群发消息的类。"""def __init__(self):auto.SendKeys(text='{Alt}{Ctrl}w')  # 快捷键唤醒微信self.wx_window = auto.WindowControl(Name='微信', ClassName='WeChatMainWndForPC')assert self.wx_window.Exists(), "窗口不存在"self.input_edit = self.wx_window.EditControl(Name='输入')self.search_edit = self.wx_window.EditControl(Name='搜索')def __goto_chat_box(self, name: str) -> None:"""跳转到指定 name好友的聊天窗口"""assert name, "无法跳转到名字为空的聊天窗口"self.wx_window.SendKeys(text='{Ctrl}f', waitTime=0.2)self.wx_window.SendKeys(text='{Ctrl}a', waitTime=0.1)self.wx_window.SendKey(key=auto.SpecialKeyNames['DELETE'])self.search_edit.SendKeys(text=name, waitTime=0.5)self.wx_window.SendKey(key=auto.SpecialKeyNames['ENTER'], waitTime=0.2)def __send_text(self, *msgs) -> None:"""发送文本"""for msg in msgs:assert msg, "发送的文本内容为空"self.input_edit.SendKeys(text='{Ctrl}a', waitTime=0.1)self.input_edit.SendKey(key=auto.SpecialKeyNames['DELETE'])# self.input_edit.SendKeys(text=msg, waitTime=0.1) # 一个个字符插入,不建议使用该方法# 设置到剪切板再黏贴到输入框auto.SetClipboardText(text=msg)self.input_edit.SendKeys(text='{Ctrl}v', waitTime=0.1)self.wx_window.SendKey(key=auto.SpecialKeyNames['ENTER'], waitTime=0.2)def __send_file(self, *file_paths) -> None:"""发送文件"""all_path = str()for path in file_paths:full_path = os.path.abspath(path=path)assert os.path.exists(full_path), f"{full_path} 文件路径有误"all_path += "'" + full_path + "',"args = ['powershell', f'Get-Item {all_path[:-1]} | Set-Clipboard']subprocess.Popen(args=args)time.sleep(0.5)self.input_edit.SendKeys(text='{Ctrl}v', waitTime=0.2)self.wx_window.SendKey(key=auto.SpecialKeyNames['ENTER'], waitTime=0.2)def send_msg(self, *names: str or Iterable, msgs: Iterable = None, file_paths: Iterable = None) -> None:"""发送消息,可同时发送文本和文件(至少选一项"""assert names, "用户名列表为空"assert any([msgs, file_paths]), "没有发送任何消息"assert not isinstance(msgs, str), "文本必须为可迭代且非字符串类型"assert not isinstance(file_paths, str), "文件路径必须为可迭代且非字符串类型"for name in names:self.__goto_chat_box(name=name)if msgs:self.__send_text(*msgs)if file_paths:self.__send_file(*file_paths)

后话

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

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

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

相关文章

java发送微信订阅消息

使用java发布订阅消息 之前接到了一个需求,要求我使用java发布订阅消息。那么首先,我要知道订阅消息是个什么,他能完成什么功能 一.什么是订阅消息 我直接去官网查看订阅消息的相关文档说明: https://developers.weixin.qq.com…

微信公众号开发——向指定用户发送模板消息

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: 微信公众号开发——向指定用户发送模板消息 ⏱️ 创作时间&#xff1a…

微信公众号一次性订阅消息功能开发实践

截止到2021年6月10日,微信公众号测试号是不支持“微信公众号一次性订阅消息”的开发,必须用正式的微信公众号测试,那如何在不影响正式的微信公众号运营的情况下来开发这个小功能呢,请看看笔者的实践。 微信一次性订阅官方开发文档…

python实现微信公众号给你的重要用户推送消息

最近小红书上这个很火,觉得做起来应该也不会太难,捣鼓了两天有了初步成效,还有一些功能没实现(比如定时推送),保姆级教程,大家可以借鉴,动手给自己重要的人做一个,或许可…

JAVA对接微信公众号(服务号、订阅号)实现模板消息推送功能

最近做了个需求要求对接微信公众号,使用模板进行消息推送,今天抽时间总结一下相关的逻辑。 大概逻辑分为四个步骤: 获取微信调用接口凭证access_token。获取微信模板列表。使用模板进行消息推送。公众号配置服务器URL。 我这里的实现没有使…

微信开发工具实现订阅消息功能

微信开发工具实现订阅消息功能 1、新建文件夹&#xff0c;取名为&#xff1a;push1 2、push1.wxml写下如下代码&#xff1a; <button bindtap"dingyue">订阅</button>3、push1.js写下如下代码&#xff1a; // pages/push1/push1.js Page({/*** 页面…

微信公众号 - Java推送小程序订阅消息给用户

不啰嗦&#xff0c;我们直接开始&#xff01; 本文使用体验版小程序进行调试。 一、开发前小程序准备&#xff1a; 1、登录微信公众平台 点开下面链接&#xff0c;使用微信扫码 微信公众平台 然后选择一个小程序并登录 2、在小程序后台找到Appid、AppSecret、Token、Encod…

微信公众号订阅号开发的学习(二):获取用户发送的消息、简单的自动回复、自定义菜单

获取用户发送的消息 基础 微信服务器会发送两种类型的消息给开发者服务器。 get请求 验证服务器的有效性post请求 微信服务器会将用户发送的数据转发到开发者服务器上 实现 基于微信公众号订阅号开发的学习&#xff08;一&#xff09;&#xff1a;基础知识 auth.js //引…

微信第三方平台集成公众号发送模板消息

最近老板下发了个任务&#xff0c;有一个业务是整合用户的微信公众号&#xff08;服务号&#xff09;&#xff0c;然后在我们的erp系统里给下家客户发送模板消息&#xff0c;找了一下发现微信第三方平台可以实现&#xff0c;那就干起来。 先在微信开放平台&#xff0c;申请一个…

元宇宙iwemeta:元宇宙数字人实践落地应用场景

把虚拟数字人装进你的手机&#xff01;百度、腾讯、讯飞盯准这条新赛道。 短短三个月内&#xff0c;几乎每一家拥有智能语音技术能力的大厂都在采取行动布局虚拟数字人。 百度、华为、阿里等都纷纷引入AI数字人入职&#xff0c;担任技术宣讲员、形象代言人&#xff1b;OPPO、…

考研人常说的“死亡211”和“984.5”是什么学校?

&#x1f603;这几所211院校&#xff0c;真香&#xff01;被称为984.5&#xff01;众所周知&#xff0c;985高校是国内最顶尖的一批名牌大学&#xff0c;每年报考的人都疯狂扎堆&#xff0c;分也很高&#xff0c;想去分一杯羹很难。但考个一般211吧&#xff0c;有时又不甘心&am…

华工计算机网络辅修,【JZT干货】双手献上华工辅修攻略

原标题&#xff1a;【JZT干货】双手献上华工辅修攻略 辅修进行了一个多月&#xff0c;相信小伙伴们也对辅修有了基本的了解。那么各课程的期末考试是怎样的&#xff1f;一些老师上课有什么特点&#xff1f;想了解吗&#xff0c;团仔在此献上纯干货给大家。 当然啦&#xff0c;涉…

z世代消费力白皮书_猫哥清华新传考研|如何让Z世代粉上你?

猫小菇/新传考研猫 不管愿不愿意承认&#xff0c;“Z世代”主宰的未来已经悄然来临了。 每个时代的年轻人都是品牌主最想触及的群体&#xff0c;因为他们代表着市场的未来。 当“千禧一代”仍然是当下消费重点群体时&#xff0c;“Z世代”已经带着与生俱来的敏感力和决策力进入…

本土网络安全公司——上讯信息的“老兵新传”

上讯信息&#xff0c;这个名字听起来很耳熟&#xff0c;但是很多人还是对这个公司有点儿陌生。其实就在今年年初&#xff0c;上讯信息获得了由ISCCC颁发的信息安全风险评估一级服务资质&#xff0c;以及信息安全应急处理二级服务资质&#xff0c;成为金融行业“年度信赖品牌”。…

社工库制作

项目结构 https://github.com/Collapsar-G/social_worker_library 后端使用以下模块&#xff1a; pymsql、flask 前端使用vue搭建 完成过程 在完成上参考了《“系统安全”课程项目&#xff1a;一个实用社工库的建设》&#xff0c;加入了一些自己的理解。 数据初始化 导出为c…

社工库2.0

#大题目 社工库2.0 ###环境 whoosh2.7jieba12306python3.7网上嫖来的网页模板(感谢站长之家 ###实现效果建立的索引文件 好看的页面 更快的查找速度 ###实现过程 具体的实现过程比较简易,毕竟whoosh已经封装的很好了第一步 建立索引并存储schema = Schema(zhanghao=TEXT(sto…

搭建社工库

成品大概是这样子&#xff0c;我把主要源码贴在下面 <!doctype html> <html> <head> <meta charset"utf-8"> <meta name"viewport" content"widthdevice-width,initialscale1"> <title>社工库</title&…

计算机专业的八字,生辰八字自动计算器软件 生辰八字在线计算器

大家对于计算器都很熟悉吧&#xff0c;一点也不陌生&#xff0c;与此同时&#xff0c;那么计算机是大家在日常生活中使用的一个简单软件&#xff0c;在使用的同时&#xff0c;既简单又方便&#xff0c;那么对于计算器大家都有所掌握 &#xff0c;所以这次小编将要给你介绍一下新…

html中如何做出生年月日,出生年月日怎么换成生辰八字

天干有 十个:甲、乙、丙、丁、戊、己、庚、辛、壬、癸。 地支有十二个:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。 二者顺序配合可以产生六十个单位&#xff0c;叫六十甲子。那生出生的年、月、日、时分别用天干、地支配合来表示&#xff0c;正好有八个字&#xff0c;因…

生辰八字计算

年柱、月柱、日柱->根据阴历生日在万年历上查找 时柱计算根据日柱天干以及出生时辰在日上起时表查找 五行属性: 甲属木->阳 乙属木->阴 丙属火->阳 丁属火->阴 戊属土->阳 己属土->阴 庚属金->阳 辛属金->阴 壬属水->阳 癸属水->阴…