为什么Python的win32api.keybd_事件与win32冲突剪贴板.OpenClipboard()?

2024-09-22 15:21:51 发布

您现在位置:Python中文网/ 问答频道 /正文

请看图片: problem

代码是:

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()

更奇怪的是,当我在Python的交互式环境中编写代码时,一切都如图所示: enter image description here

总之,如果我将代码保存在.py文件和python xxx.py中,则会出现错误,但如果我在交互式环境中编写代码,则一切正常。在

如果我需要在.py文件中编写代码,请告诉我为什么以及如何解决这个问题。谢谢。在


Tags: 文件代码pyimportevent环境图片snapshot
1条回答
网友
1楼 · 发布于 2024-09-22 15:21:51

问题解决了。 解决办法很简单。再给我一个行号。在

import win32con
import win32clipboard
import win32api
import time

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

#this is the solution
time.sleep(1)

win32clipboard.OpenClipboard()
win32clipboard.CloseClipboard()

这是因为当win32api.keybd_event发送打印屏幕键时,它不会等到截图完成。相反,它将继续运行以下代码。但在这个时候,屏幕正在打印,剪贴板正在使用,所以win32clipboard无法获取剪贴板。在

相关问题 更多 >