Python baseado na automação da análise de controle da interface do usuário para realizar a resposta automática do WeChat (resposta automática da palavra-chave)

Introdução

Na verdade, existem muitas maneiras de implementar a resposta automática do WeChat. Por exemplo, o protocolo ipad e o Hook WeChat são relativamente comuns. O protocolo ipad é caro e não é adequado para uso pessoal. O Hook WeChat corre o risco de bloquear a conta porque intercepta memória. Embora o risco seja relativamente pequeno, esse problema ainda existe, e o Hook WeChat depende da versão. Uma vez que a versão é atualizada, você deve escrevê-la novamente, a menos que continue usando esta versão.

Recentemente, estou aprendendo automação, então quero usar o WeChat para praticar minhas mãos, então fiz uma pequena função de resposta automática aqui, mas ainda há alguns problemas com isso:

1. O Windows precisa estar ativado
2. O Wechat precisa ser exibido em primeiro plano

o código

wxautoreply.py

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())

Ideias de implementação

Também é extremamente fácil de implementar. Use a biblioteca uiautomation para identificar o conteúdo de controle da versão do computador WeChat e detectar se há mensagens não lidas na lista de mensagens por meio de loops contínuos. Se houver mensagens não lidas, clique automaticamente para entrar no janela de mensagem e, em seguida, recupere a última mensagem na janela e verifique se o banco de dados de palavras-chave da resposta automática possui essa palavra-chave. Se essa palavra-chave existir, ele responderá diretamente.

vídeo de demonstração

https://share.weiyun.com/A3lxVd8B

É bastante difícil, principalmente compartilhar o princípio de implementação, e farei uma ferramenta relativamente estável com uma interface depois de me tornar proficiente em aprendizado automático ~

autor

TANCAGEM

Acho que você gosta

Origin blog.csdn.net/weixin_39927850/article/details/128333036
Recomendado
Clasificación