新建Python文件:wx_file.py,代码如下
# -*- coding: utf-8 -*-
# @Author : CxiuM
# @Time : 2023-07-06 10:12
# @Name : wx_operation.py
"""微信群发消息"""
import os
import time
import subprocess
import requests
import uiautomation as auto
from copy import deepcopy
from typing import Iterable
class WxOperation:
"""
微信群发消息的类。
...
Attributes:
----------
wx_window: auto.WindowControl
微信控制窗口
input_edit: wx_window.EditControl
聊天界面输入框编辑控制窗口
search_edit: wx_window.EditControl
搜索输入框编辑控制窗口
Methods:
-------
__goto_chat_box(name):
跳转到 指定好友窗口
__send_text(*msgs):
发送文本。
__send_file(*filepath):
发送文件
get_friend_list(tag, num):
可指定tag,获取好友num页的好友数量
send_msg(*names, msgs, file_paths)
单个或批量发送文本和文件
"""
def __init__(self):
auto.SendKeys(text='{Alt}{Ctrl}z') # 快捷键唤醒微信
self.wx_window = auto.WindowControl(Name='微信', ClassName='WeChatMainWndForPC')
assert self.wx_window.Exists(), "窗口不存在"
self.input_edit = self.wx_window.EditControl(Name='输入')
self.search_edit = self.wx_window.EditControl(Name='搜索')
def __goto_chat_box(self, name: str) -> None:
"""
跳转到指定 name好友的聊天窗口。
Args:
name(str): 必选参数,好友名称
Returns:
None
"""
assert name, "无法跳转到名字为空的聊天窗口"
self.wx_window.SendKeys(text='{Ctrl}f', waitTime=0.2)
self.wx_window.SendKeys(text='{Ctrl}a', waitTime=0.1)
self.wx_window.SendKey(key=auto.SpecialKeyNames['DELETE'])
auto.SetClipboardText(text=name)
self.wx_window.SendKeys(text='{Ctrl}v', waitTime=0.1)
self.wx_window.SendKey(key=auto.SpecialKeyNames['ENTER'], waitTime=0.2)
def __send_text(self, *msgs) -> None:
"""
发送文本.
Args:
*msgs(Iterable or str): 必选参数,为发送的文本
Returns:
None
"""
for msg in msgs:
assert msg, "发送的文本内容为空"
self.input_edit.SendKeys(text='{Ctrl}a', waitTime=0.1)
self.input_edit.SendKey(key=