如何在CF逖HDROP格式上设置win32clipboard数据?

2024-04-26 07:01:33 发布

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

当我试图将图像发送到剪贴板时,遇到了alpha通道的丢失,所描述的here解决方案都不能与我正在使用的软件一起工作,但是当我将粘贴png文件复制到这个软件中时,alpha通道似乎被保留了下来。 考虑到这一点,我想在Windows资源管理器允许的文件上模拟Ctrl+C。使用Clipview我发现字段{}与我的目标相关。试图使用win32clipboard设置此字段

import win32clipboard
win32clipboard.OpenClipboard(0)
file1="C:\\Users\\User\\Desktop\\test.png"
win32clipboard.SetClipboardData(15, file1)
win32clipboard.CloseClipboard()

我没有发现任何错误,但当我尝试使用这个新的剪贴板内容时,它不起作用,因为正如所述,thereunicode文件名元组必须存储在CF_HDROP字段中。在

我不知道该怎么办。我也试过 file1= (unicode('C:\\Users\\User\\Desktop\\CANEVAS\\test.png'),) 但我有个错误:

TypeError: expected a readable buffer object.


Tags: 文件test图像alpha软件herepng错误
1条回答
网友
1楼 · 发布于 2024-04-26 07:01:33

documentation for CF_HDROP上写着

The data consists of an STGMEDIUM structure that contains a global memory object. The structure's hGlobal member points to a DROPFILES structure as its hGlobal member.

win32剪贴板.GetClipboardData具有对CF_HDROP的内置支持。它解码STGMEDIUM和DROPFILES结构以生成文件名的元组。在

该文档没有说明SetClipboardData具有从文件名元组构造STGMEDIUM和DROPFILES结构的相应代码。在

我对Python或它的FFI了解不多,不知道构造结构并将它们传递给SetClipboardData函数有多简单。或者如果有一个现有的库可以为你做这件事。在

相关问题 更多 >