Python实现微信发送文件实例

文章介绍了一个Python类`WxOperation`,用于模拟微信的文本和文件发送操作。类中包含多个方法,如跳转到指定聊天窗口、发送文本和文件、获取好友列表等。通过UI自动化库`uiautomation`来控制微信窗口。示例代码展示了如何使用这个类向文件传输助手发送文本和文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建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=
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值