Python实现微信自动化发送信息
需求:利用PC端微信实现自动向文件传输助手,好友等发送信息
库说明
psutil: 获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息,用于获取进程ID pywinauto:自动化Microsoft Windows GUI的python模块,用于检索微信窗口的控件位置(https://www.kancloud.cn/gnefnuy/pywinauto_doc) pyautogui:PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作用于控制键盘热键 pyinstaller -F xxx.py 最后用打包exe
知识点1:如何获取进程的ID?
可使用psutil 库来查看所有进程的名字,匹配进程名字返回进程ID,,进程名字ID查看工具:inspect.exe:
「inspect.exe」https://www.aliyundrive.com/s/JDSBosz7CfR 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
import psutil# 获取进程id
def get_pid(processName):for proc in psutil.process_iter():try:if (proc.name() == processName):print(proc.name())print(str(proc.pid))return proc.pidexcept psutil.NoSuchProcess:passreturn -1
知识点2:打开微信可以使用快捷键:ctrl+alt+w
# 打开微信的快捷键
pyautogui.hotkey('ctrl', 'alt', 'w')
知识点3:利用进程ID实例化
# 利用进程ID初始化一下实例
app = Application(backend='uia').connect(process=procId)
# print(app.window())
# 检索微信窗口
main_Win = app.window(class_name='WeChatMainWndForPC')
# 打印所有的窗口控件信息
# main_Win.print_control_identifiers()
# 最大化
main_Win.maximize()
知识点4:微信中“通信录”,“搜索”等功能实现
首先定位“通讯录”元素:main_Win.chind_window() 需要二个参数:title和control_type
点击该元素click_input()
# 切换到通讯录
btn1 = main_Win.child_window(title="通讯录", control_type="Button").wrapper_object()
# main_Win.Properties.Button3.click()
btn1.draw_outline(colour='red')
btn1.click_input()
知识点5: 点击微信的搜索功能
# 搜索联系人--文件传输助手
searchKey = ‘张三’
searchEdit = main_Win.child_window(title="搜索", control_type="Edit").wrapper_object()
searchEdit.draw_outline(colour='red')
searchEdit.click_input()
searchEdit.type_keys(searchKey)
sleep(2)
知识点6:搜索后处理
# 选择搜索出的第一个
try:selectItem = main_Win.child_window(title=searchKey, control_type="ListItem").wrapper_object()selectItem.click_input()
except:print("对话框已打开")
# 清空对话框
pyautogui.hotkey('ctrl', 'a')
pyautogui.hotkey('backspace')
知识点7:发送消息
# 发送消息
sendMsg = ‘How are you?’
inputMsg = main_Win.child_window(title="输入", control_type="Edit").wrapper_object()
inputMsg.click_input()
inputMsg.type_keys(sendMsg, with_spaces=True)# 发送
# sendbtn = main_Win["sendBtn"]
# sendbtn.draw_outline(colour='red')
# sendbtn.click_input()
# 回车发送
pyautogui.hotkey('enter')
print(xlsbody[0][i] + ":发送完成")
知识点8:置顶与取消置顶
# 置顶
top = main_Win.child_window(title="置顶", control_type="Button").wrapper_object()
# 定位到置顶元素,画个红色的方框醒目
top.draw_outline(colour='red')
top.click_input()# 取消置顶
notop = main_Win.child_window(title="取消置顶", control_type="Button").wrapper_object()
notop.draw_outline(colour='red')
notop.click_input()
参考代码如下【学习使用】
# 改变标准输出的默认编码
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8')# 获取进程id
def get_pid(processName):for proc in psutil.process_iter():try:if (proc.name() == processName):print(proc.name())print(str(proc.pid))return proc.pidexcept psutil.NoSuchProcess:passreturn -1# 获取参数
def get_xls():# 打开参数表print("获取参数中")wb = openpyxl.load_workbook("参数.xlsx")wscs = wb["参数"]groupname = wscs['B1'].value.split(',') # 转换为列表组名groupcoount = len(groupname)message = wscs['B2'].valueatall = wscs['B3'].valueprint(groupname)print("共计:" + str(groupcoount) + "组")print("发送内容:" + message)print("是否@所有人:" + atall)return groupname, message, atall, groupcoount# 获取主窗口
def get_body(procId, xlsbody):# 打开微信的快捷键pyautogui.hotkey('ctrl', 'alt', 'w')# 利用进程ID初始化一下实例app = Application(backend='uia').connect(process=procId)# print(app.window())# 检索微信窗口main_Win = app.window(class_name='WeChatMainWndForPC')# 打印所有的窗口控件信息# main_Win.print_control_identifiers()# 最大化main_Win.maximize()# 置顶top = main_Win.child_window(title="置顶", control_type="Button").wrapper_object()top.draw_outline(colour='red')top.click_input()print(main_Win.is_dialog)for i in range(xlsbody[3]):# 切换到通讯录btn1 = main_Win.child_window(title="通讯录", control_type="Button").wrapper_object()# main_Win.Properties.Button3.click()btn1.draw_outline(colour='red')btn1.click_input()# 搜索联系人--文件传输助手# print(i)searchKey = xlsbody[0][i]searchEdit = main_Win.child_window(title="搜索", control_type="Edit").wrapper_object()searchEdit.draw_outline(colour='red')searchEdit.click_input()searchEdit.type_keys(searchKey)sleep(2)# 选择搜索出的第一个try:selectItem = main_Win.child_window(title=searchKey, control_type="ListItem").wrapper_object()selectItem.click_input()except:print("对话框已打开")# 清空对话框pyautogui.hotkey('ctrl', 'a')pyautogui.hotkey('backspace')# if (xlsbody[2] == "是"):# # @所有人# sendMsg = "@"# inputMsg = main_Win.child_window(title="输入", control_type="Edit").wrapper_object()# inputMsg.click_input()# inputMsg.type_keys(sendMsg, with_spaces=True)# allpeople = main_Win.child_window(title="所有人", control_type="Text").wrapper_object()# allpeople.draw_outline(colour='red')# allpeople.click_input()# 发送消息sendMsg = xlsbody[1]inputMsg = main_Win.child_window(title="输入", control_type="Edit").wrapper_object()inputMsg.click_input()inputMsg.type_keys(sendMsg, with_spaces=True)# 发送# sendbtn = main_Win["sendBtn"]# sendbtn.draw_outline(colour='red')# sendbtn.click_input()# 回车发送pyautogui.hotkey('enter')print(xlsbody[0][i] + ":发送完成")# 取消置顶notop = main_Win.child_window(title="取消置顶", control_type="Button").wrapper_object()notop.draw_outline(colour='red')notop.click_input()if __name__ == '__main__':procId = get_pid("WeChat.exe")if (procId == -1):print("微信未运行")else:get_body(procId, get_xls())
说明:学习视频来源pywinauto实现微信自动发送消息的小实践_哔哩哔哩_bilibili
感谢UP主分享。
Python实现微信自动化发送信息相关推荐
- 模拟微信自动化发送(微信公众号文章自动点击)
大家好,我是烤鸭: 分享个微信自动化发送的新方式,仅技术分享. 本来是公众号文章抓取相关的,审核一直不过,将就看吧. 需要的工具 Java(jdk1.8) Fiddler Python(3.8) 一些 ...
- Python实现微信自动化-刘永富-专题视频课程
Python实现微信自动化-271人已学习 课程介绍 使用Python配合wxpy模块,可以实现在电脑上群发微信消息,提取所有好友信息.群组信息和公众号信息. 本课程主要包括: 1. ...
- python实现抢劵_用Python实现微信自动化抢红包,再也不用担心抢不到红包了
1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ... 过了一会, ...
- Python之微信自动化
转载自己的文章:Python之微信自动化 • 威远博客,威远工作室,Ease Python的插件(组件)是相当多的,自动化方面也是. 虽然基于客户端微信去实现各种功能有点尴尬的感觉,但总还是比没有强. ...
- Python分析微信群用户信息
Python分析微信群用户信息 1.什么是开源 别人开发出来的东西 贡献出来了 你可以免费使用 但是不能用作商用 所以叫开源 一般都会有一个协议 叫遵守BSD协议 生活中哪些不是开源的 windows ...
- python企业微信机器人发送文件
python企业微信机器人发送文件 import requests#传入文件 def post_file(id_url,wx_url,file):data = {'file': open(file,' ...
- python获取微信群成员信息
python获取微信群成员信息 #!/usr/bin/python #coding: utf-8import itchat,datetime from itchat.content import TE ...
- 微信开发调试小工具进化→微信用户发送信息模拟器发布!——这标题起真是好数码暴龙的说...
直接说正题吧.最近在做微信第三方服务器.在模拟用户发过来的请求方面,网上流传着一个"微信开发调试小工具",谁做都不知道了.反正我觉得那个东西看起来挺不爽的,因为其信息发送类型不是很 ...
- Python获取微信好友标签信息
import itchat 微信库 import os 文件下载库 一.微信请求函数 def get_friends():friends = itchat.get_friends(update=Tru ...
最新文章
- 1105 Spiral Matrix 给定数组向螺旋矩阵中填入数据
- C#线程学习的一点体会和总结
- Zepto.js简介
- python 处理url 参数_Python 优雅的处理网页URL参数
- 破解密码高手王小云教授简介
- P4719-[模板]动态DP【矩阵乘法,树链剖分,线段树】
- 前端学习(3062):vue+element今日头条管理-总页码处理
- Linux kernel Kobjects解析
- [健康]生病了绝对不能吃的东西
- Reverse Integer(C++)
- 大学计算机社团学什么好,大学哪些社团组织最值得加入?很多人工作后才知道!...
- 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例7
- 凯立德2015夏季3621J0P4G卡版分区地图
- 在线DES加密/解密工具
- Typora恢复忘记保存的文件
- 转:淘宝客搜索链接技巧首度分享
- Tcl学习0——Tcl和Tk介绍
- 分享一下PPT常规使用方法和技巧
- 高通 NFC开发基础知识 之 “NDEF及NFC Record”
- Format_String_Attack_Lab