python 实现微信自动发送文件

# -*- coding: UTF-8 -*-
import os
import platform
import time
import subprocess
from xml.dom import minidom
import pyperclip
import win32api
import win32con

############################################################################
#全局变量
#############################################################################

tar_Num = 0  #目标文件数
fn="文件名字"
############################################################################
#打开文件夹 复制的别人的代码  只适合在Windows下运行
#############################################################################
def open_fp(fp: str):
    global tar_Num
    """
    打开文件或文件夹
    优点: 代码输入参数少, 复制粘贴即可使用, 支持在mac和win上使用, 打开速度快稳定;
    :param fp: 需要打开的文件或文件夹路径
    """
    systemType: str = platform.platform()  # 获取系统类型
    if 'mac' in systemType:  # 判断以下当前系统类型
        fp: str = fp.replace("\\", "/")  # mac系统下,遇到`\\`让路径打不开,不清楚为什么哈,觉得没必要的话自己可以删掉啦,18行那条也是
        subprocess.call(["open", fp])
    else:
        fp: str = fp.replace("/", "\\")  # win系统下,有时`/`让路径打不开
        os.startfile(fp)
        time.sleep(5)
        win32api.keybd_event(40, 0, 0, 0)  # down
        win32api.keybd_event(40, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(0.5)
        win32api.keybd_event(38, 0, 0, 0)  # up
        win32api.keybd_event(38, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(0.5)
        i=0
        while i<=tar_Num:
            win32api.keybd_event(40, 0, 0, 0)  # down

            win32api.keybd_event(40, 0, win32con.KEYEVENTF_KEYUP, 0)
            time.sleep(0.5)
            i=i+1

        win32api.keybd_event(17, 0, 0, 0)  # Control
        win32api.keybd_event(67, 0, 0, 0)  # C
        time.sleep(1)
        win32api.keybd_event(67, 0, win32con.KEYEVENTF_KEYUP, 0)
        win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(1)


############################################################################
#统计文件个数
#############################################################################

def printPath(level, path):
    global allFileNum
    global tar_Num
    ''''' 
    打印一个目录下的所有文件夹和文件 
    '''
    # 所有文件夹,第一个字段是次目录的级别
    dirList = []
    # 所有文件
    fileList = []
    # 返回包含目录中文件名称的列表。
    files = os.listdir(path)
    print(files)
    for i in files:
        if i==fn:
            break
        tar_Num=tar_Num+1


############################################################################
#打开微信
#############################################################################
def open_app(app_dir):
    os.startfile(app_dir)


if __name__ == '__main__':
    # 直接输入路径就可以使用, 绝对路径和相对路径都可以, 具体效果和鼠标双击文件或文件夹一样
    app_dir = r'C:\Program Files (x86)\Tencent\WeChat\WeChat.exe'  # 此处为微信的绝对路径
    open_app(app_dir)
    time.sleep(1)
    # 进入微信,模拟按键Ctrl+F
    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(70, 0, 0, 0)  # F
    win32api.keybd_event(70, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)

    pyperclip.copy('文件传输助手')  # 联系人昵称
    spam = pyperclip.paste()
    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(86, 0, 0, 0)  # 86→V;
    win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)
    win32api.keybd_event(13, 0, 0, 0)  # 13→Enter
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)

    printPath(0, r'd:\文件路径')
    open_fp(fp=r"D:\文件路径")
    #open_app(app_dir)
############################################################################
#文件复制完毕后关闭文件夹界面
#############################################################################
    win32api.keybd_event(18, 0, 0, 0)  # ALT
    win32api.keybd_event(115, 0, 0, 0)  # f4
    win32api.keybd_event(115, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)  # 确保程序只执行一次,防止重复执行


    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(86, 0, 0, 0)  # 86→V
    win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)

    win32api.keybd_event(13, 0, 0, 0)
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)


    time.sleep(3)#这个非常重要 不然你复制的文件回清掉


    # 聊天输入框复制聊天内容,然后按回车发送消息
    pyperclip.copy('此消息来自机器人,有问题请联系管理人员')  # 聊天的内容
    spam = pyperclip.paste()

    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(86, 0, 0, 0)  # 86→V
    win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(13, 0, 0, 0)
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)  # 确保程序只执行一次,防止重复执行

    win32api.keybd_event(18, 0, 0, 0)  # ALT
    win32api.keybd_event(115, 0, 0, 0)  # f4
    win32api.keybd_event(115, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(13, 0, 0, 0)
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)  # 确保程序只执行一次,防止重复执行

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值