欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

真 ·openclipboard失败解决办法

程序员文章站 2022-03-15 22:57:54
...

真 ·openclipboard失败解决办法


这个问题一直困扰我很久, 在网上找了半天没有全是些垃圾办法和乱复制粘贴办法, 自己持续优化了很久才解决.
我是写python的,需要在一个软件上复制一些东西到我的程序里边, 第一次剪贴板错误, 说的是打开指定类型错误.最开始以为是编码问题, 后边在复制的时候就出想弹框,openclipboard失败.
开始错误为:

Traceback (most recent call last):
  File "main_pyauto.py", line 354, in <module>
    auto.get_blance()
  File "main_pyauto.py", line 189, in get_blance
    copy_data = self.getCopyText()
  File "main_pyauto.py", line 129, in getCopyText
    copy_text = wc.GetClipboardData()
TypeError: Specified clipboard format is not available
import win32clipboard
win32clipboard.OpenClipboard()
win32clipboard.GetClipboardData()

一直不清楚win32clipboard.OpenClipboard()这个里边填编码参数, 我也一直以为是参数导致的,源码给的参数选项有很多, 我一个不认识, 网上没找到相应的说明
真 ·openclipboard失败解决办法真 ·openclipboard失败解决办法
都不太明白什么意思, 后来发现, 填不填参数都我来说都影响不大, 或者没有影响.(前期我还用穷举法来填这个参数,真的是瓜皮程序员)
后来发现可能是剪贴板没有关闭,或者剪贴板混用造成的.用过之后关闭且清空.并且是每次都做了

win32clipboard.EmptyClipboard()
win32clipboard.CloseClipboard()

以上又导致一个问题, 不知道为毛有了多线程错误, 这个不是我代码里边的问题, 我都没用多线程, 具体情况都是, 我把获取到的文本, 首先判断是否获取成功,成功后打印, 结果运行时判断的步骤都已经运行过了,并且打印出来,在下一步具体操作时,居然程序显示没获取到.
奇了他妈妈的大怪!!!
同一名字变量有不同值.???我满头的大包.(现在我都没明白)

解决办法:
不过后来弄了很久, 在调用复制方法时, 首先清空, 我用的是os方法清空.后在用win32的东西清空.剪贴板问题得以解决, 没有弹框, 也没有编码问题, 便利几十遍都跑的通, 不过应该就直接跑第一句就可以了.os.system(“echo off | clip”).
其实就是terminal运行echo off | clip, 其他语言也应该差不多.

import win32clipboard as wc
import os
os.system("echo off | clip")
wc.OpenClipboard()
wc.EmptyClipboard()
wc.CloseClipboard()

不知道你们的问题是否能通过这样解决. 我的目前这样解决了, 就是用之前清空剪贴板, 用之后也清空一遍.

相关标签: bug解决