Python基于Ui控件解析的自动化实现微信自动回复(关键词自动回复)
简介
【Python基于Ui控件解析的自动化实现微信自动回复(关键词自动回复)】微信自动回复其实有很多实现的办法,例如ipad协议、Hook微信是比较常见的,ipad协议价格昂贵不适合个人使用,Hook微信因为是拦截内存,具有封号的风险,虽然风险比较小,但这个问题仍然存在,而且Hook微信依赖版本,一旦版本上升级又得重新去写,除非你自己一直保持这个版本的使用。
最近在学习自动化,于是想拿微信来练练手,所以这边就做了一个自动回复的小功能,不过这个还是有一定的问题的:
1、需要windows保持开机代码 wxautoreply.py
2、需要微信保持在前台显示
import pandas as pd
import numpy as np
from uiautomation import WindowControl, MenuControl
import win32gui
import win32con
import pyautogui
# 获取窗口句柄并打开窗口
def getHwnd():
hwnd = win32gui.FindWindow('WeChatMainWndForPC','微信')
win32gui.ShowWindow(hwnd, win32con.SW_SHOWMINIMIZED)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
win32gui.ShowWindow(hwnd, win32con.SW_SHOW)
win32gui.SetForegroundWindow(hwnd)
return hwnd
# 复位(自动回复之后自动点击消息列表第二个聊天窗口)
def fuwei(hwnd):
left, top, right, bottom = win32gui.GetWindowRect(hwnd)
leftpoint = left+155
toppoint = top+150
pyautogui.moveTo(leftpoint, toppoint)
pyautogui.click()
return '已复位'
getHwnd()
wx = WindowControl(Name="微信")
wx.SwitchToThisWindow()
hw = wx.ListControl(Name="会话")
# 持续循环监听未读消息
while True:
we = hw.TextControl(searchDepth=4)
# 如果存在未读消息
if we.Name:
we.Click(simulateMove=False)
# 获取当前最后一条消息
last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
if last_msg == '你好':
wx.SendKeys('你好,才是真的好{ENTER}')
fuwei(getHwnd())
elif last_msg == '123':
wx.SendKeys('456{ENTER}')
fuwei(getHwnd())
elif last_msg == '测试':
wx.SendKeys('测试成功{ENTER}')
fuwei(getHwnd())
else:
wx.SendKeys('无法匹配{ENTER}')
fuwei(getHwnd())
实现思路 实现起来也是极其容易的,使用uiautomation这个库来识别微信电脑版的控件内容,通过持续循环来检测消息列表是否存在未读消息,如果存在未读消息,那么就自动点击进入这个消息的窗口,然后检索窗口最后一条消息,检索自动回复的关键词库是否有这个关键词,如果存在此关键词,则直接回复。
视频演示 https://share.weiyun.com/A3lx...
比较粗糙,主要是分享一下实现原理,以后在自动化学习这一块熟练了我再做个有界面的比较稳定的工具出来~
作者 TANKING
Blog https://www.likeyunba.com
WeChat sansure2016
推荐阅读
- gadecod|gadecod matlab,【预测模型】基于遗传算法优化BP神经网络房价预测matlab源码
- 网络通信安全及科学技术专栏|基于PMC指数模型的电力政策量化及其在负荷预测中的应用
- 雷达|【雷达】基于圆拟合(circfit)算法抑制雷达信号处理中的直流分量附matlab代码
- 优化求解|【PID优化】基于萤火虫算法PID控制器优化设计含Matlab源码
- 自然语言处理|基于中文形近字相似度与加权编辑距离融合实现的汉字纠错算法
- asp.net|基于ASP.NET的Web酒品销售商城平台系统
- 第一课|第一课 Python初识爬虫与网络请求
- 让Python更优雅更易读(第二集)
- 极致体验!基于阿里云|极致体验!基于阿里云 Serverless 快速部署 Function
- Python实现K-近邻算法的示例代码