python处理剪切板只获取文字

剪切板处理

#从这个找到的例子win32clipboardDemo.py
import win32clipboard
from win32clipboard import *
import time
import win32con


# 速度快 容易出错
class niubi():
    def lihai(self):
        while True:
            t = jianting().main()
            print(t)


class jianting():
    cf_names = {}
    def __init__(self):
        for name, val in list(win32con.__dict__.items()):
            if name[:3] == "CF_" and name != "CF_SCREENFONTS":  # CF_SCREEN_FONTS==CF_TEXT!?!?
                self.cf_names[val] = name
        #print(self.cf_names)
    def clipboard_get(self):
        """获取剪贴板数据"""
        data = ""
        if IsClipboardFormatAvailable(win32clipboard.CF_UNICODETEXT):
            win32clipboard.OpenClipboard()
            try:
                data = win32clipboard.GetClipboardData(win32clipboard.CF_UNICODETEXT)
            finally:
                win32clipboard.CloseClipboard()
        return data

    def TestClipboardEnum(self):
        OpenClipboard()
        try:
            # Enumerate over the clipboard types
            enum = 0
            while 1:
                enum = EnumClipboardFormats(enum)
                if enum == 0:
                    break
                assert IsClipboardFormatAvailable(
                    enum
                ), "Have format, but clipboard says it is not available!"
                n = self.cf_names.get(enum, "")

                if not n:
                    try:
                        n = GetClipboardFormatName(enum)
                    except error:
                        n = "unknown (%s)" % (enum,)

                print("Have format", n)
            print("Clipboard enumerator tests worked correctly")
        finally:
            CloseClipboard()


    def main(self):
        """后台脚本:每隔0.3秒,读取剪切板文本,检查有无指定字符或字符串,如果有则执行替换"""
        # recent_txt 存放最近一次剪切板文本,初始化值只多执行一次paste函数读取和替换
        recent_txt = self.clipboard_get()
        while True:
            # txt 存放当前剪切板文本
            txt = self.clipboard_get()
            # 剪切板内容和上一次对比如有变动,再进行内容判断,判断后如果发现有指定字符在其中的话,再执行替换
            if txt != recent_txt:
                # print(f'txt:{txt}')
                recent_txt = txt  # 没查到要替换的子串,返回None
                #self.TestClipboardEnum() #枚举剪切板类型
                return recent_txt

            # 检测间隔(延迟0.3秒)
            time.sleep(0.3)
            



if __name__ == '__main__':
    niubi().lihai()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值