我试图从Python程序将文件放入Windows剪贴板,以便用户可以使用Windows资源管理器将文件粘贴到所选的位置。下面的代码是将文件添加到剪贴板,文件可以使用cmd.exe粘贴,但在Windows资源管理器中,“粘贴”显示为灰色,Ctrl + V不会粘贴任何内容。
os.system("dir %s | CLIP.exe" % self.clip_folder)
clip.exe
不会将文件放到剪贴板上。只有文字。如果你打开记事本,你可能会粘贴dir %s
的输出。
您需要找到可以为您执行此操作的Python包,或者使用SetClipboardData
类型调用Win32函数CF_HDROP
以指定剪贴板上所需的文件列表。
虽然,在我的Python 3.7的情况下
我可以用pythoncom和win32clipboard实现。
这是我的示例代码和github repo。您可以从Microsoft主页获取更多信息。
stg = pythoncom.STGMEDIUM()
stg.set(pythoncom.TYMED_HGLOBAL, buf)
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
try:
print(stg)
print(stg.data)
win32clipboard.SetClipboardData(win32clipboard.CF_HDROP, stg.data)
print("clip_files() succeed")
finally:
win32clipboard.CloseClipboard()