Python实现剪切板实时监控的方法

  介绍

这篇文章给大家分享的是有关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实现剪切板实时监控的方法