通过win32clipboard访问剪贴板

时间:2013-12-31 09:52:28

标签: pywin32

我正在开展一个项目,我必须不断检查剪贴板内容。如果剪贴板内容与某些指定数据匹配,则应从剪贴板中删除它。 经过大量的谷歌搜索,我发现它可以通过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。您可以使用任何其他语言或任何其他方法。

1 个答案:

答案 0 :(得分:2)

无限轮询循环(尤其是没有延迟的循环)将成为一个问题,因为没有锁定就无法读取内容。相反,您应该考虑成为Clipboard viewerpywin32msdn),这样您就会收到剪贴板内容更改的通知,然后您可以检查它(获取并退出)。如果你在pywin32WM_DRAWCLIPBOARD上稍微google一下,你会发现一些python implementations