7

有没有办法使用 win32clipboard 模块在 python 的 windows 剪贴板中存储对文件的引用。我的目标是以允许透明的方式粘贴图像。如果我将“png”文件拖放到 OneNote 中,或者复制文件然后将其粘贴到 OneNote 中,这似乎可以保持透明度。据我所知,剪贴板不能存储透明图像,这就是为什么它必须是对文件的引用。

我的研究表明它可能涉及 win32clipboard.CF_HDrop 属性,但我不确定。

所以,总结一下,我的目标是有一些我可以点击的python代码,它使用我桌面上名为“img.png”的特定文件。结果是“img.png”被存储在剪贴板中,可以粘贴到其他程序中。本质上,就像我自己在桌面上选择文件一样,右键单击并选择“复制”。

编辑:这个页面似乎暗示有一种使用 win32clipboard.CF_HDrop 的方法:http: //timgolden.me.uk/pywin32-docs/win32clipboard__GetClipboardData_meth.html

它说“CF_HDROP”与“Unicode 文件名元组”相关联

4

2 回答 2

1
from PythonMagick import Image
Image("img.png").write("clipboard:") 

获取 PythonMagick的Windows 二进制文件

于 2012-06-13T08:00:30.437 回答
1

我将其写为答案,尽管这只是一个可能对您有所帮助的步骤,因为注释没有很多格式选项。

我写了这个示例脚本:

import win32clipboard as clp, win32api

clp.OpenClipboard(None)

rc= clp.EnumClipboardFormats(0)
while rc:
    try: format_name= clp.GetClipboardFormatName(rc)
    except win32api.error: format_name= "?"
    print "format", rc, format_name
    rc= clp.EnumClipboardFormats(rc)

clp.CloseClipboard()

然后我在资源管理器中选择了一个图像文件并复制了它;然后,脚本报告以下可用的剪贴板格式:

format 49161 DataObject
format 49268 Shell IDList Array
format 15 ?
format 49519 DataObjectAttributes
format 49292 Preferred DropEffect
format 49329 Shell Object Offsets
format 49158 FileName
format 49159 FileNameW
format 49171 Ole Private Data

这个“Preferred DropEffect”似乎很可疑,尽管我远非 Windows 专家。不过,我会先尝试使用 FileNameW,因为这可能会为您完成这项工作(抱歉,我没有安装 OneNote)。似乎它只期望将完整路径名编码为“utf-16-le”并'\0\0'在末尾带有一个空字符(即编码为 )作为数据。

于 2012-08-01T10:02:48.340 回答