有时候写脚本的时候会有操作系统剪切板的需求,就是

获取剪切板中的字符串

清空剪切板

向剪切板中写入字符串

方法包括使用 tkinter , ctypes 这两个 python 标准库, 或者安装 Qt 等第三方库来操作剪切板。

ctypes 操作剪切板

先写 windows 系统下 ctypes 库如何操作剪切板吧。ctypes 这个库主要用于调用动态链接函数或共享库,使用起来比较难。

于是我在 gist 上找了一段代码,是面向对象的写法,还有一两处不兼容 python3 。略作修改后放在简书上,也许能方便有需求的人。虽然我看不太懂这段代码,但好在调用起来还挺简单的,后面会有简单的调用示例。

'''

操作剪切板:读取剪切板的字符串;清空剪切板;向剪切板中写入字符串(只能写入 ascii 字符)。

win10, python3,

'''

from ctypes import *

user32 = windll.user32

kernel32 = windll.kernel32

def get_clipboard():

user32.OpenClipboard(c_int(0))

contents = c_char_p(user32.GetClipboardData(c_int(1))).value

user32.CloseClipboard()

return contents

def empty_clipboard():

user32.OpenClipboard(c_int(0))

user32.EmptyClipboard()

user32.CloseClipboard()

def set_clipboard(data):

user32.OpenClipboard(c_int(0))

user32.EmptyClipboard()

alloc = kernel32.GlobalAlloc(0x2000, len(bytes(data, encoding='utf_8'))+1)

# alloc = kernel32.GlobalAlloc(0x2000, len(data)+1)

lock = kernel32.GlobalLock(alloc)

cdll.msvcrt.strcpy(c_char_p(lock),bytes(data, encoding='utf_8'))

# cdll.msvcrt.strcpy(c_char_p(lock), data)

kernel32.GlobalUnlock(alloc)

user32.SetClipboardData(c_int(1),alloc)

user32.CloseClipboard()

调用 get_clipboard() 获取剪切板数据

if __name__ == '__main__':

# 获取剪切板内字符串

text_raw = get_clipboard()

print('{0} {1}'.format(text_raw, type(text_raw)))

try:

text_str = text_raw.decode('utf_8')

print('{0} {1}'.format(text_str, type(text_str)))

except:

print('剪切板为空。')

剪切板为空时,输出结果为:

None

剪切板为空。

复制一个字符串后运行上面的测试代码(在这里我复制了 python ),输出结果为:

b'Python'

Python

剪切板中无数据时,get_clipboard() 返回 None。

当剪切板中有数据时,get_clipboard() 将其以 bytes 格式返回;

使用 text_str = text_raw.decode('utf_8')将 bytes 转化为 str。

调用 empty_clipboard() 清空剪切板

if __name__ == '__main__':

# 清空剪切板

empty_clipboard()

text = get_clipboard()

print(text)

复制一个字符串后运行代码,输出结果为:

None

调用 set_clipboard() 写入剪切板

if __name__ == '__main__':

# 向剪切板内写入 ascii 字符串

set_clipboard('py!')

text = get_clipboard()

print(text)

输出结果为:

b'py!'

相关

完整代码在 github 上。

如果这篇文章有任何错误或不适当的地方,请在评论里指出。或者你有更好的方法,也请写在评论里,感谢!

python剪贴板操作_python 操作剪切板相关推荐

  1. python获取剪切板图片_python 获取剪切板内容的两种方法

    第一种 # -*- coding: utf-8 -*- # @Time : 2020/3/16 21:26 # @File : get_text_from_cupboard_13.py # @Auth ...

  2. python elasticsearch模块_Python 操作 ElasticSearch

    Python操作ElasticSearch Python批量向ElasticSearch插入数据 Python 2的多进程不能序列化类方法, 所以改为函数的形式. 直接上代码: #!/usr/bin/ ...

  3. python自动化库_Python操作自动化库PyAutoGUI的方法

    Python操作自动化库PyAutoGUI的方法 发布时间:2020-07-23 17:24:46 来源:亿速云 阅读:73 作者:小猪 这篇文章主要讲解了Python操作自动化库PyAutoGUI的 ...

  4. Linux向日葵同步剪贴板,向日葵Windows客户端“剪切板”功能:打破“无形的墙”...

    经常使用远程控制的朋友,可能会遇到这样的问题:想要复制被控电脑中的一段文字到主控端,该如何操作呢?虽然要复制的内容已经"同屏出现",但是主控端被控端之间仿佛有一堵"无形的 ...

  5. python处理数据库_python操作数据库

    操作mysql image.png db_config = { 'user': 'root', 'password': 'qwe123', 'db': '数据库名', 'charset': 'utf8 ...

  6. python数据库实例_Python操作MySQL数据库9个实用实例

    用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-pytho ...

  7. python mysql实例_Python 操作MySQL详解及实例

    使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy. Python-MySQL资格最老,核心由C语言打造, ...

  8. python word自动化_python操作word,自动化办公

    **安装依赖:** ``` pip install python-docx ``` **简单的写入一点内容:** ``` import docx file=docx.Document() #创建内存中 ...

  9. python操作word详细操作_Python操作Word的入门教程

    Python操作Word的入门教程 前言 今天来介绍下,如何用 Python 来操作 Word. 再来介绍操作 Word 之前,先来说一个最近看书学到的法则,即 3W 法则. 3W:3W分别指 Wha ...

最新文章

  1. tomcat server.xml中文版
  2. Linux configure 参数解释,程序的这装,卸载
  3. SpringBoot集成Mybatis(0配置注解版)
  4. Android音频系统之AudioPolicyService
  5. linux 内核重定位,Linux 内核学习笔记:预备知识之“目标文件”
  6. 一个类的java代码_求一段java代码,定义一个类
  7. markdown备忘
  8. python中wx_python中wx模块的具体使用方法
  9. Atitit. 有限状态机 fsm 状态模式
  10. 堆排序Java代码实现
  11. 实现应用于AlphaGo得增强式学习算法,代码实现1
  12. Python3对多股票的投资组合进行分析
  13. html5 文本框只能输入正整数,控制input文本框只能输入正整数
  14. Java、JSP报刊订阅管理系统的设计与实现
  15. 大论文 自动生成标题目录、图目录和表目录
  16. ISTQB基础级认证参考书
  17. ✔G【OPA695】【单运放 】<高速>宽带放大模块 1.4G 高速电流型运放 同相反相带偏移
  18. b spring之扩展ioc机制
  19. 使用windows远程连接kali的桌面
  20. 哇!Delphi 2007 for PHP

热门文章

  1. [献给用智能ABC输入法的人]永恒的经典 智能ABC输入法技巧大集合.txt
  2. 为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快
  3. Layout(布局)
  4. 《MT6582平台上调试耳机插尽后无响应问题》
  5. Origin 画箱图
  6. 【李某某进入少管所服刑 满18周岁后移送成人监狱】
  7. 2023届互联网大厂校招薪资曝光,如何拿到大厂offer?
  8. Windows7修改文件默认图标
  9. 如何通俗地理解傅立叶变换?
  10. 成功不难,改变习惯而已!