我正在开展一个项目,我必须不断检查剪贴板内容。如果剪贴板内容与某些指定数据匹配,则应从剪贴板中删除它。 经过大量的谷歌搜索,我发现它可以通过win32clipboard api轻松完成。 我使用Python作为编程语言。 以下是文件(CF_HDROP)格式的代码:
import win32clipboard
import win32con
def filecopy():
try:
win32clipboard.OpenClipboard()
print win32clipboard.GetClipboardData(win32con.CF_HDROP)
win32clipboard.CloseClipboard()
except TypeError:
pass
以下是文字格式的代码:
import win32clipboard
def textcopy():
try:
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
print data
win32clipboard.CloseClipboard()
except TypeError:
pass
我在无限循环中调用上面的函数。
个人功能正常运作。但win32clipboard的问题是, 在win32clipboard.OpenClipboard()命令之后,win32clipboard锁定剪贴板并仅在CloseClipboard()命令后实现它。在我之间我无法复制剪贴板中的任何内容。
我该如何解决这个问题? 任何其他建议也欢迎达到最终目标。
注意:没有必要使用python。您可以使用任何其他语言或任何其他方法。
答案 0 :(得分:2)
无限轮询循环(尤其是没有延迟的循环)将成为一个问题,因为没有锁定就无法读取内容。相反,您应该考虑成为Clipboard viewer
(pywin32和msdn),这样您就会收到剪贴板内容更改的通知,然后您可以检查它(获取并退出)。如果你在pywin32
和WM_DRAWCLIPBOARD
上稍微google一下,你会发现一些python implementations。