python 复制到剪贴板,文字和文件
#导入模块
import pyperclip
# 复制用户复制的所有数据
pyperclip.copy('Copy to clipboard')
# 从剪贴板粘贴复制的数据pyperclip.paste()
# 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()
函数将文件路径列表写入剪贴板。
总体来说,代码的目的是通过将特定的文件路径数据写入剪贴板,来模拟文件拖放的操作。
本文作者: 永生
本文链接: https://yys.zone/detail/?id=265
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
发表评论
评论列表 (0 条评论)
暂无评论,快来抢沙发吧!