需求:利用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实现微信自动化发送信息相关推荐

  1. 模拟微信自动化发送(微信公众号文章自动点击)

    大家好,我是烤鸭: 分享个微信自动化发送的新方式,仅技术分享. 本来是公众号文章抓取相关的,审核一直不过,将就看吧. 需要的工具 Java(jdk1.8) Fiddler Python(3.8) 一些 ...

  2. Python实现微信自动化-刘永富-专题视频课程

    Python实现微信自动化-271人已学习 课程介绍         使用Python配合wxpy模块,可以实现在电脑上群发微信消息,提取所有好友信息.群组信息和公众号信息. 本课程主要包括: 1. ...

  3. python实现抢劵_用Python实现微信自动化抢红包,再也不用担心抢不到红包了

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ... 过了一会, ...

  4. Python之微信自动化

    转载自己的文章:Python之微信自动化 • 威远博客,威远工作室,Ease Python的插件(组件)是相当多的,自动化方面也是. 虽然基于客户端微信去实现各种功能有点尴尬的感觉,但总还是比没有强. ...

  5. Python分析微信群用户信息

    Python分析微信群用户信息 1.什么是开源 别人开发出来的东西 贡献出来了 你可以免费使用 但是不能用作商用 所以叫开源 一般都会有一个协议 叫遵守BSD协议 生活中哪些不是开源的 windows ...

  6. python企业微信机器人发送文件

    python企业微信机器人发送文件 import requests#传入文件 def post_file(id_url,wx_url,file):data = {'file': open(file,' ...

  7. python获取微信群成员信息

    python获取微信群成员信息 #!/usr/bin/python #coding: utf-8import itchat,datetime from itchat.content import TE ...

  8. 微信开发调试小工具进化→微信用户发送信息模拟器发布!——这标题起真是好数码暴龙的说...

    直接说正题吧.最近在做微信第三方服务器.在模拟用户发过来的请求方面,网上流传着一个"微信开发调试小工具",谁做都不知道了.反正我觉得那个东西看起来挺不爽的,因为其信息发送类型不是很 ...

  9. Python获取微信好友标签信息

    import itchat 微信库 import os 文件下载库 一.微信请求函数 def get_friends():friends = itchat.get_friends(update=Tru ...

最新文章

  1. 1105 Spiral Matrix 给定数组向螺旋矩阵中填入数据
  2. C#线程学习的一点体会和总结
  3. Zepto.js简介
  4. python 处理url 参数_Python 优雅的处理网页URL参数
  5. 破解密码高手王小云教授简介
  6. P4719-[模板]动态DP【矩阵乘法,树链剖分,线段树】
  7. 前端学习(3062):vue+element今日头条管理-总页码处理
  8. Linux kernel Kobjects解析
  9. [健康]生病了绝对不能吃的东西
  10. Reverse Integer(C++)
  11. 大学计算机社团学什么好,大学哪些社团组织最值得加入?很多人工作后才知道!...
  12. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例7
  13. 凯立德2015夏季3621J0P4G卡版分区地图
  14. 在线DES加密/解密工具
  15. Typora恢复忘记保存的文件
  16. 转:淘宝客搜索链接技巧首度分享
  17. Tcl学习0——Tcl和Tk介绍
  18. 分享一下PPT常规使用方法和技巧
  19. 高通 NFC开发基础知识 之 “NDEF及NFC Record”
  20. Format_String_Attack_Lab

热门文章

  1. CAD2010安装和小白的使用
  2. CCS TMSC6748 报错Error connecting to the target: (Error -600 @ 0x0)
  3. 类初始化与实例初始化
  4. SOLIDWORKS 2023正版软件安装教程
  5. 韩信点兵(python)
  6. wampserver配置虚拟主机
  7. 域名和SSL证书是什么关系
  8. Generation
  9. Spring 注解-包扫描
  10. IT专业报考指南:选择正确的学校和课程