1.文字复制

#导入模块
import pyperclip

# 复制用户复制的所有数据
pyperclip.copy('Copy to clipboard')

# 从剪贴板粘贴复制的数据pyperclip.paste()

2.文件复制

# encoding:utf-8
import win32clipboard
from ctypes import Structure, c_uint, c_long, c_int, c_bool, sizeof

# 定义一个文件拖放数据的结构体
class DROPFILES(Structure):
    _fields_ = [
        ("pFiles", c_uint),
        ("x", c_long),
        ("y", c_long),
        ("fNC", c_int),
        ("fWide", c_bool),
    ]

# 定义一个函数,将文件路径列表写入剪贴板
def setClipboardFiles(paths):
    files = ("\0".join(paths)).replace("/", "\\")  # 连接路径并替换斜杠为反斜杠
    data = files.encode("U16")[2:] + b"\0\0"  # 编码为 UTF-16 并加入终止符
    win32clipboard.OpenClipboard()  # 打开剪贴板
    try:
        win32clipboard.EmptyClipboard()  # 清空剪贴板内容
        win32clipboard.SetClipboardData(
            win32clipboard.CF_HDROP, matedata + data)  # 设置剪贴板数据为文件数据
    finally:
        win32clipboard.CloseClipboard()  # 关闭剪贴板

# 定义一个函数,从剪贴板中读取文件路径数据
def readClipboardFilePaths():
    win32clipboard.OpenClipboard()  # 打开剪贴板
    try:
        return win32clipboard.GetClipboardData(win32clipboard.CF_HDROP)  # 读取剪贴板数据
    finally:
        win32clipboard.CloseClipboard()  # 关闭剪贴板

# 创建一个 DROPFILES 结构体实例
pDropFiles = DROPFILES()
pDropFiles.pFiles = sizeof(DROPFILES)  # 设置 pFiles 字段的值
pDropFiles.fWide = True  # 设置 fWide 字段的值
matedata = bytes(pDropFiles)  # 将结构体数据转换为字节序列

# 定义一个文件路径列表
filename = [r"D:\down\生成excel.xlsx", r"D:\down\ceshi.PNG"]

# 调用函数将文件路径列表写入剪贴板
setClipboardFiles(filename)

这段代码实际上在创建一个文件路径列表,然后将这些路径写入剪贴板,以模拟进行文件拖放操作。下面是各部分的功能和注释说明:

  • 代码导入了必要的模块和类。

  • 定义了一个名为 DROPFILES 的结构体,用于模拟文件拖放的数据结构。

  • setClipboardFiles() 函数用于将文件路径列表转换为特定的数据格式并写入剪贴板。

  • readClipboardFilePaths() 函数用于从剪贴板中读取文件路径数据。

  • 创建了一个 DROPFILES 结构体实例,并设置了一些字段的值。

  • 定义了一个文件路径列表。

  • 调用 setClipboardFiles() 函数将文件路径列表写入剪贴板。

总体来说,代码的目的是通过将特定的文件路径数据写入剪贴板,来模拟文件拖放的操作。