📜  保存剪贴板数据 win32clipboard python (1)

📅  最后修改于: 2023-12-03 15:07:01.041000             🧑  作者: Mango

保存剪贴板数据 win32clipboard python

简介

在使用电脑时,我们常常需要复制/剪切一些内容到剪贴板,如文字、图片、链接等。而部分场景下,我们也需要利用python将剪贴板的内容保存到本地文件或者在程序中使用。通过win32clipboard模块,我们可以方便地实现剪贴板数据的获取和修改。

安装
  • 使用pip安装win32clipboard
pip install pywin32
设置剪贴板数据
import win32clipboard

# 设置剪贴板文本
text = 'Hello world'
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(text)
win32clipboard.CloseClipboard()
  • OpenClipboard() 用于打开剪贴板,返回一个句柄
  • EmptyClipboard() 用于清空剪贴板内容
  • SetClipboardText() 用于设置剪贴板文本内容
  • CloseClipboard() 用于关闭剪贴板
获取剪贴板数据
import win32clipboard

win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()

# 获取文本内容
if isinstance(data, str):
    print(data)
    
# 获取图片内容
if isinstance(data, bytes):
    with open('clipboard_image.png', 'wb') as f:
        f.write(data)
  • GetClipboardData() 用于获取剪贴板数据
  • 数据类型包括:CF_BITMAP, CF_DIB, CF_DIBV5, CF_DSPBITMAP, CF_DSPENHMETAFILE, CF_DSPMETAFILEPICT, CF_ENHMETAFILE, CF_HDROP, CF_LOCALE, CF_METAFILEPICT, CF_OEMTEXT, CF_OWNERDISPLAY, CF_PALETTE, CF_PENDATA, CF_PRIVATEFIRST, CF_PRIVATELAST, CF_RIFF, CF_SYLK, CF_TEXT, CF_TIFF, CF_UNICODETEXT, CF_WAVE、 CF_HDROO、CI_LOCALE、CI_UNICODEPOINTER等。
  • isinstance 用于判断数据类型
  • 可以根据不同的数据类型进行操作,如获取文本、图片等
示例

如下是一个在python中实现将剪贴板图片保存到本地文件的示例:

import win32clipboard

win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()

if isinstance(data, bytes):
    with open('clipboard_image.png', 'wb') as f:
        f.write(data)

保存执行该脚本后,如果剪贴板中有图片,程序会自动将图片保存在当前目录下的clipboard_image.png文件中。