真 ·openclipboard失败解决办法

真 ·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失败解决办法_第1张图片
都不太明白什么意思, 后来发现, 填不填参数都我来说都影响不大, 或者没有影响.(前期我还用穷举法来填这个参数,真的是瓜皮程序员)
后来发现可能是剪贴板没有关闭,或者剪贴板混用造成的.用过之后关闭且清空.并且是每次都做了

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解决)