# -*- 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) # 确保程序只执行一次,防止重复执行
python 实现微信自动发送文件
于 2023-06-09 11:08:06 首次发布