用python在剪贴板中存储文件

2024-10-01 09:38:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的研究表明它可能涉及win32剪贴板.CF_HDrop但我不确定。在

所以,总而言之,我的目标是有一段python代码,我可以点击它,它使用我桌面上一个名为'图片.png“比如说。结果是图片.png'存储在剪贴板中,并可以粘贴到其他程序中。本质上,与我在桌面上选择文件,右键单击并选择“复制”相同。在

编辑: 这个页面似乎暗示有一种使用win32的方法剪贴板.CF_HDrop不知何故: http://timgolden.me.uk/pywin32-docs/win32clipboard__GetClipboardData_meth.html

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


Tags: 模块文件方法图像目标png粘贴图片
2条回答

我写这篇文章作为答案,尽管这只是一个可能对你有帮助的步骤,因为评论没有很多格式选项。在

我写了这个脚本:

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()

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

^{2}$

这个“首选DropEffect”似乎有点可疑,尽管我还不是Windows专家。不过,我会先尝试使用FileNameW,因为这可能对您有帮助(对不起,我没有安装OneNote)。它似乎只需要编码为“utf-16-le”的完整路径名作为数据,并在末尾使用空字符(即编码为'\0\0')。在

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

为Python抓windows binaries

相关问题 更多 >