赞
踩
微信自动回复其实有很多实现的办法,例如ipad协议、Hook微信是比较常见的,ipad协议价格昂贵不适合个人使用,Hook微信因为是拦截内存,具有封号的风险,虽然风险比较小,但这个问题仍然存在,而且Hook微信依赖版本,一旦版本上升级又得重新去写,除非你自己一直保持这个版本的使用。
微信自动回复小功能
使用 uiautomation 这个库来识别微信电脑版的控件内容,通过持续循环来检测消息列表是否存在未读消息,如果存在未读消息,那么就自动点击进入这个消息的窗口,然后检索窗口最后一条消息,检索自动回复的关键词库是否有这个关键词,如果存在此关键词,则直接回复。
下面展示一些 内联代码片
。
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())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。