这篇文章给大家分享的是有关Python实现剪切板实时监控的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
小案例实现的功能如下:
使用正则对某些文本进行智能替换,如将python2格式的代码转换为python3格式。
<强>方式一:调用第三方pyperclip模块强>
拷贝[1]:import pyperclip [2]:拷贝,data =, pyperclip.paste () [3]:拷贝数据 [3]:,“print & # 39; Hello & # 39; \ r \ n - - - - - - - - - - - - - - - - - \ r \ n版权声明:本文为CSDN博主“…”的原创文章,遵循,CC 4.0, BY-SA 版权协议,转载请附上原文出处链接及本声明。\ r \ n原文链接:https://blog.csdn.net/.../article/details/..." [4]:拷贝,data =,数据[7:12] [5]:拷贝,pyperclip.copy(数据) [6]:拷贝,pyperclip.paste () 出[6]:& # 39;你好# 39;
<强>源码调用:强>内置ctypes模块中的ctypes.windll.user32接口编写,和熊猫包的代码一致,代码位置:pandas.io.clipboard。窗户,代码引用如下
import ctypes windll =ctypes.windll 时间=safeGetClipboardData CheckedCall (windll.user32.GetClipboardData) safeGetClipboardData.argtypes =,(单位) 时间=safeGetClipboardData.restype 处理 时间=safeSetClipboardData CheckedCall (windll.user32.SetClipboardData) (使用UINT safeSetClipboardData.argtypes =,,,处理) 时间=safeSetClipboardData.restype 处理
<强>优点:强>跨平台,接口调用方便简洁
<强>缺点:>强剪切板的数据格式只支持utf - 8文本,频繁读写速度较慢
<强>方式二:调用第三方win32clipboard模块
强>
拷贝[1]:import win32clipboard :,…… ,……:def clipboard_get (): ,……:“““获取剪贴板数据“““ ,……:win32clipboard.OpenClipboard () ,……:data =, win32clipboard.GetClipboardData () ,……:win32clipboard.CloseClipboard () ,……:return 数据 :,…… ,……:def clipboard_set(数据): ,……:“““设置剪贴板数据“““ ,……:win32clipboard.OpenClipboard () ,……:win32clipboard.SetClipboardData(13,数据) ,……:win32clipboard.CloseClipboard () ,……:return 真实的 :,…… [2]:拷贝,data =, clipboard_get () [3]:拷贝数据 [3]:,“print & # 39; Hello & # 39; \ r \ n - - - - - - - - - - - - - - - - - \ r \ n版权声明:本文为CSDN博主“…”的原创文章,遵循,CC 4.0, BY-SA 版权协议,转载请附上,原文出处链接及本声明。\ r \ n原文链接:https://blog.csdn.net/.../article/details/..." [4]:拷贝,clipboard_set(数据[7:12]) [4]:真实 [5]:拷贝,clipboard_get () 出[5]:& # 39;你好# 39;
<强>源码调用:强> C源码封装,python接口调用如下
def GetClipboardData (* args,, * * kwargs):, #, real signature unknown ,通过 def SetClipboardData (* args,, * * kwargs):, # real signature 未知 之前,通过><>强优点:强>原生C封装读写速度最快,支持多种剪切板数据格式
<强>缺点:强>只适用于windows平台,高频率读写会报错需要小心处理,utf - 8格式之外的数据格式需要熟悉winuser。h库自行设计编写
<强>方法三:调用内置tkinter模块强>
拷贝[1]:得到tkinter import * :,…… ,……:r =, Tk () [2]:拷贝,data =, r.clipboard_get () [3]:拷贝数据 [3]:,“print & # 39; Hello & # 39; \ n - - - - - - - - - - - - - - - - - \ n版权声明:本文为CSDN博主“…”的原创文章,遵循,CC 4.0, BY-SA 版权协议,转载请附上原文,出处链接及本声明。\ n原文链接:https://blog.csdn.net/.../article/details/..." [4]:拷贝,r.clipboard_append(数据[7:12]) [5]:拷贝,r.clipboard_get () 出[6]:& # 39;你好# 39;<强>注意:强>在win10系统测试后发现,使用tkinter模块只能获取剪切板数据,不能将数据写入剪切板,外部调用clipboard_board方法时,系统剪切板进程会被tk接管锁死,此时在其他的应用按ctrl + v,粘贴的应用会直接处于卡死的状态,或者粘贴后内容为空。
如果还是通过tk()对象将数据写入剪切板,只能采取下面的方法,设置延迟销毁tk对象,系统剪切板数据才会被更新,否则内容还是为空(实测如果设置0.2秒以内的频率读取,剪切板还是为空,这就很鸡肋了):
Python实现剪切板实时监控的方法