You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现将指定路径PNG文件复制到Windows剪贴板的方法

实现Windows剪贴板复制文件本身(而非图片内容)

核心思路

Windows剪贴板复制文件需要使用CF_HDROP格式,这是系统用于文件拖拽/复制粘贴的标准格式,和复制图片内容的格式完全不同。以下是直接可用的Python实现,基于pywin32库。

前置准备

先安装依赖库:

pip install pywin32

实现函数

import os
import win32clipboard
import win32con
import ctypes

def copy_file_to_clipboard(file_path):
    # 校验文件有效性
    if not os.path.isfile(file_path):
        raise FileNotFoundError(f"文件不存在:{file_path}")
    
    # 转换为绝对路径,避免相对路径识别问题
    abs_path = os.path.abspath(file_path)
    
    win32clipboard.OpenClipboard()
    try:
        win32clipboard.EmptyClipboard()
        
        # 构造CF_HDROP格式要求的数据:
        # 1. 开头4字节为文件数量(小端序)
        # 2. 每个文件路径以UTF-16LE编码,结尾加双空字节
        # 3. 最终以双空字节收尾
        file_count = 1
        path_utf16 = abs_path.encode('utf-16-le') + b'\x00\x00'
        hdrop_data = file_count.to_bytes(4, byteorder='little') + path_utf16 + b'\x00\x00'
        
        # 分配符合Windows剪贴板要求的全局可移动内存
        h_global = win32clipboard.GlobalAlloc(win32con.GMEM_MOVEABLE | win32con.GMEM_ZEROINIT, len(hdrop_data))
        p_global = win32clipboard.GlobalLock(h_global)
        ctypes.memmove(p_global, hdrop_data, len(hdrop_data))
        win32clipboard.GlobalUnlock(h_global)
        
        # 将数据写入剪贴板
        win32clipboard.SetClipboardData(win32con.CF_HDROP, h_global)
    finally:
        # 确保剪贴板始终关闭,避免资源占用
        win32clipboard.CloseClipboard()

使用示例

# 替换为你的PNG文件路径
copy_file_to_clipboard(r"C:\Users\YourName\Pictures\test.png")

说明

  • 调用该函数后,即可在资源管理器、桌面等位置右键粘贴文件,效果和手动复制文件完全一致
  • 函数会自动校验文件是否存在,避免无效操作
  • 必须使用绝对路径,确保系统能正确识别文件位置

内容的提问来源于stack exchange,提问作者sharkyenergy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:43:33