当前位置: 首页 > 后端技术 > Python

Python基于Ui控件自动化分析实现微信自动回复(关键词自动回复)

时间:2023-03-25 23:57:08 Python

介绍微信自动回复的实现方式其实有很多,比如ipad协议和Hook微信比较常见,ipad协议价格昂贵,不适合个人使用,因为Hook微信拦截内存,有被ban的风险。虽然风险比较小,但是这个问题还是存在的,Hook微信要看版本。一旦版本升级,就得重新写一遍,除非你自己一直用这个版本。最近在学习自动化,所以想用微信练练手,所以这里有一个自动回复的小功能,但是还是有一些问题:1.windows需要保持开机状态2.微信需要保持开机状态在前台显示代码wxautoreply.pyimportpandasaspdimportnumpyasnpfromuiautomationimportWindowControl,MenuControlimportwin32guiimportwin32conimportpyautogui#获取窗口句柄并打开窗口defgetHwnd():hwnd=win32gui.FindWindow('WeChatMainWndForPC','WeChat.Swindowwin')win32Wgui.SW_SHOWMINIMIZED)win32gui.ShowWindow(hwnd,win32con.SW_SHOWNORMAL)win32gui.ShowWindow(hwnd,win32con.SW_SHOW)win32gui.SetForegroundWindow(hwnd)returnhwnd#reset(自动点击消息列表中的第二个聊天窗口后自动回复)deffuwei(hwnd):left,top,right,bottom=win32gui.GetWindowRect(hwnd)leftpoint=left+155toppoint=top+150pyautogui.moveTo(leftpoint,toppoint)pyautogui.click()return'reset'GetHwnd()wx=WindowControl(Name="WeChat")wx.SwitchToThisWindow()hw=wx.ListControl(Name="Session")#不断循环监听未读消息whileTrue:we=hw.TextControl(searchDepth=4)#如果有未读消息ifwe.Name:we.Click(simulateMove=False)#获取当前最后一条消息last_msg=wx.ListControl(Name='Message').GetChildren()[-1].Nameiflast_msg=='你好':wx.SendKeys('你好,真不错{ENTER}')fuwei(getHwnd())eliflast_msg=='123':wx.SendKeys('456{ENTER}')fuwei(getHwnd())eliflast_msg=='Test':wx.SendKeys('测试成功{ENTER}')fuwei(getHwnd())else:wx.SendKeys('Unabletomatch{ENTER}')思路fuwei(getHwnd())的实现也极其容易。使用uiautomation库识别微信电脑版控件内容,不断循环检测消息列表是否有未读消息。如果有未读消息,则自动点击进入本条消息窗口,然后在窗口中搜索上一条消息,搜索自动回复关键词库中是否有该关键词,如果有则直接回复视频演示https://share.weiyun.com/A3lx...比较粗糙,主要是分享实现原理,等我自动学习熟练后会做一个比较稳定的有接口的工具~作者TANKINGBloghttps://www.likeyunba.comWeChatsansure2016