背景
看过好多文章在讲微信自动化的,但是由于微信网页版不能登录,好多软件包没有用了,比如itchat、wxpy等等。然后我看到一个讲wxauto这个软件包的,就是基于模拟鼠标键盘实现对微信的控制,还是很有意思的。不过我们得先在电脑上登录微信,才能方便使用。毕竟也是新手,今天给大家浅浅地讲一个微信实现自动化发送文件。
项目准备
- PyCharm PyCharm安装教程
- 我使用的是python 3.12 python安装教程
- 微信客户端
- 路径查找工具,我用的windows SDK自带的inspect
可以直接去官网安装:windosSDK
安装好后直接打开文件夹搜索inspect.exe文件打开即可
5.软件包:pyperclip、time、wxauto、uiautomation
直接终端pip即可
win+r 然后输入cmd打开终端
输入:pip install + 软件包名称
回车安装即可
项目实现
1、将软件包引入
# -*- coding: utf-8 -*-
import time
import pyperclip # 导入pyperclip库
import pyautogui
from wxauto import *
from uiautomation import WindowControl, PaneControl
2、打开微信并绑定窗口
# 打开隐藏的图标
PaneControl(Name='任务栏').PaneControl(Name='DesktopWindowXamlSource').ButtonControl(Name='显示隐藏的图标').Click()
# 点击微信
PaneControl(Name='系统托盘溢出窗口。').ButtonControl(Name='微信').Click()
# 绑定微信主窗口
wx = WindowControl(Name='微信')
通过inspect,我们发现右下角的托盘就是PaneControl,然后Name属性是任务栏
然后我们逐层往下找到微信按钮,使用Click点击效果就OK了
这个地方挺好理解的,多看两遍,试着写写就可以了
注意:大小写和窗口的类型
3、输入群聊名称、文件名称和路径
# 输入群聊名称
names = ['测试']
# 输入文件名和路径
file_name = '自行修改'
file_path = r'自行修改'
这个地方没有什么要讲的,自己能够改动的
4、选择群聊
# 选择群聊
for name in names:
WeChat().ChatWith(name)
先补充一下WeChat软件包
def ChatWith(self, who, RollTimes=None):
'''
打开某个聊天框
who : 要打开的聊天框好友名,str; * 最好完整匹配,不完全匹配只会选取搜索框第一个
RollTimes : 默认向下滚动多少次,再进行搜索
'''
self.UiaAPI.SwitchToThisWindow()
RollTimes = 10 if not RollTimes else RollTimes
# 当前显示的聊天列表中没找到指定名称的好友或群时,会滚动聊天列表界面,继续寻找
def roll_to(who=who, RollTimes=RollTimes):
for i in range(RollTimes):
if who not in self.GetSessionList()[:-1]:
self.SessionList.WheelDown(wheelTimes=3, waitTime=0.1*i)
else:
time.sleep(0.5)
# 这是点击客户端聊天列表中指定的窗口
self.SessionList.ListItemControl(Name=who).Click(simulateMove=False)
return 1
return 0
rollresult = roll_to()
if rollresult:
return 1
else:
self.Search(who) # 当前显示的聊天列表中没找到指定名称的好友或群时,直接在搜索框中搜索
这个不用知道怎么做到的,会用就行
5、发送文件
# 点击发送文件
wx.ButtonControl(Name='发送文件').Click()
# 发送文件
# 输入文件地址
pyperclip.copy(file_path) # 使用pyperclip将文件路径复制到剪贴板
pyautogui.hotkey('ctrl', 'v') # 使用快捷键粘贴文件路径
time.sleep(1)
pyautogui.press('enter')
# 输入文件名
pyperclip.copy(file_name) # 使用pyperclip将文件名复制到剪贴板
pyautogui.hotkey('ctrl', 'v') # 使用快捷键粘贴文件名
time.sleep(1)
pyautogui.press('enter')
# 发送
pyautogui.press('enter')
print('已完成')
然后这里我们同样使用inspect查找路径,然后用pyautogui和pyperclip复制粘贴路径和名称,最后回车发送即可
完整代码
# -*- coding: utf-8 -*-
import time
import pyperclip # 导入pyperclip库
import pyautogui
from wxauto import *
from uiautomation import WindowControl, PaneControl
# 打开隐藏的图标
PaneControl(Name='任务栏').PaneControl(Name='DesktopWindowXamlSource').ButtonControl(Name='显示隐藏的图标').Click()
# 点击微信
PaneControl(Name='系统托盘溢出窗口。').ButtonControl(Name='微信').Click()
# 绑定微信主窗口
wx = WindowControl(Name='微信')
# 输入群聊名称
names = ['测试']
# 输入文件名和路径
file_name = '正确.docx'
file_path = r'C:\Users\12739\Desktop\pic'
# 选择群聊
for name in names:
WeChat().ChatWith(name)
# 点击发送文件
wx.ButtonControl(Name='发送文件').Click()
# 发送文件
# 输入文件地址
pyperclip.copy(file_path) # 使用pyperclip将文件路径复制到剪贴板
pyautogui.hotkey('ctrl', 'v') # 使用快捷键粘贴文件路径
time.sleep(1)
pyautogui.press('enter')
# 输入文件名
pyperclip.copy(file_name) # 使用pyperclip将文件名复制到剪贴板
pyautogui.hotkey('ctrl', 'v') # 使用快捷键粘贴文件名
time.sleep(1)
pyautogui.press('enter')
# 发送
pyautogui.press('enter')
print('已完成')
这个其实很简单,大家入手后可以去研究一下实现微信消息监控、自动回复、抓取聊天记录等等功能。希望能帮助到大家!