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()这个里边填编码参数, 我也一直以为是参数导致的,源码给的参数选项有很多, 我一个不认识, 网上没找到相应的说明
都不太明白什么意思, 后来发现, 填不填参数都我来说都影响不大, 或者没有影响.(前期我还用穷举法来填这个参数,真的是瓜皮程序员)
后来发现可能是剪贴板没有关闭,或者剪贴板混用造成的.用过之后关闭且清空.并且是每次都做了
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()
不知道你们的问题是否能通过这样解决. 我的目前这样解决了, 就是用之前清空剪贴板, 用之后也清空一遍.