赞
踩
本项目旨在使用Python
与Windows GUI
自动化工具来自动化微信的操作,作用为读取未读消息、根据关键词回复消息。以下是对代码的详细解释(文章后面会附有本项目的完整源码):
pandas
和 numpy
:用于数据处理。uiautomation
:用于Windows GUI自动化。WindowControl
对象,尝试通过名称'微信'
找到微信的主窗口。SwitchToThisWindow()
方法将焦点切换到微信窗口。read_csv
方法读取一个名为’回复数据.csv
’的文件,其中包含关键词和对应的回复内容。apply
方法遍历 ‘回复数据.csv
’ 中的每一行,检查关键词是否存在于最后一条消息中。如果存在,则返回对应的回复内容。import pandas as pd import numpy as np from uiautomation import WindowControl, MenuControl # 绑定微信主窗口 wx = WindowControl( Name='微信', ) # 切换窗口 wx.SwitchToThisWindow() # 寻找会话控件绑定 hw = wx.ListControl(Name='会话') # 通过pd读取数据 df = pd.read_csv('回复数据.csv', encoding='gb18030') # 死循环接受消息 while True: # 从查找未读消息 we = hw.TextControl(searchDepth=4) # 死循环维持,没有超时报错 while not we.Exists(0): pass # 存在未读消息 if we.Name: # 点击未读消息 we.Click(simulateMove=False) # 读取最后一条消息 last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name # 判断关键字 msg = df.apply(lambda x: x['回复内容'] if x['关键词'] in last_msg else None, axis=1) # 数据筛选,移除空数据 msg.dropna(axis=0, how='any', inplace=True) # 做成列表 ar = np.array(msg).tolist() # 能够匹配到数据时 if ar: # 将数据输入 # 替换换行符号 wx.SendKeys(ar[0].replace('{br}', '{Shift}{Enter}'), waitTime=0) # 发送消息 wx.SendKeys('{Enter}', waitTime=0) # 通过消息匹配检索会话栏的联系人 wx.TextControl(SubName=ar[0][:5]).RightClick() # 没有匹配到数据时 else: wx.TextControl(SubName=last_msg[:5]).RightClick()
注意: 本项目优缺点
uiautomation
库和pandas
库,如果环境中没有这些库,代码将无法运行。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。