【求助】Python's win32api.keybd_event 与 win32clipboard.OpenClipboard() 冲突的解决办法

35 views
Skip to first unread message

青南

unread,
Apr 9, 2016, 11:31:59 PM4/9/16
to python-cn(华蟒用户组,CPyUG 邮件列表)



代码如下:

import win32con
import win32clipboard
import win32api

win32api.keybd_event(win32con.VK_SNAPSHOT, 0, 0, 0)
win32api.keybd_event(win32con.VK_SNAPSHOT, 0, win32con.KEYEVENTF_KEYUP, 0)

win32clipboard.OpenClipboard()
win32clipboard.CloseClipboard()



当我将这段代码写到1个.py文件里面,并使用python xxx.py运行的时候,将会报错。

但是如果我使用Python的交互环境来运行同样的代码,却不会报错,如下图:


请问报错的原因是什么?如何解决报错?

青南

unread,
Apr 9, 2016, 11:52:39 PM4/9/16
to python-cn(华蟒用户组,CPyUG 邮件列表)
找到问题的原因了。

win32api.keybd_event发送了截屏键以后,并不会等待截屏完成,而是直接执行后面的代码。
这个时候,由于正在截屏,剪贴板是被占用的,因此win32clipboard就不能获取到剪贴板了。

这个问题的解决方法也非常的简单,在win32clipboard.OpenClipboard() 的上方添加一行time.sleep(1)就可以解决。



在 2016年4月10日星期日 UTC+8上午11:31:59,青南写道:
Reply all
Reply to author
Forward
0 new messages