检测python中的粘贴

问题描述 投票:6回答:2

我想检测用户何时在ANY应用程序中粘贴了一些东西,因此我可以通过将新项目复制到剪贴板中来进行后续处理(用例:我有要从数据库复制的项目列表-一个接一个地插入网页,并在粘贴完成后自动将下一个粘贴到剪贴板中。)

当前,我有一个使用Tkinter的按钮,当使用以下代码按下时,该按钮将复制一个字段。

self.root.clipboard_clear()
self.root.clipboard_append(text)

然后,我需要某种方法来检测何时在另一个应用程序中执行了粘贴操作,因此我可以将下一个项目加载到剪贴板中。我希望能在Win / Mac / Linux上同时使用这三个工具。有什么想法吗?

python tkinter clipboard
2个回答
1
投票

免责声明:我不是剪贴板专家。这个答案是我对它们如何工作的理解。这可能是完全错误的。

几乎没有特定于平台的方法可以解决此问题,更不用说以跨平台的方式了。从剪贴板粘贴的操作包括两个未连接的步骤:

  1. 查看/阅读剪贴板内容
  2. 以特定于应用程序的方式使用该数据

[在第二步中,应用程序可能会检查从剪贴板读取的数据类型,如果与活动上下文中可以粘贴的数据类型不匹配(例如,图像不能粘贴到纯文本编辑器)。如果发生粘贴,它将在用户空间中发生,并且每个应用程序可能会做不同的操作。在所有平台下检测所有可能的实现根本没有任何意义。

充其量您可以监视窥视剪贴板内容的行为,但是任何应用程序都可以在没有用户任何明确动作的情况下急切地检查剪贴板,因此这些事件并不一定要对该数据进行任何可观察的利用。

以下来自现实世界的松散比喻可能会说服您放弃寻找解决方案。假设您已申请某种配方并获得了专利。该专利已发布,任何人都可以阅读。您能否要求一种有效的方法来检测根据专利食谱烹饪的任何菜肴?


0
投票

在ms-windows上,您似乎应该可以使用global hook(使用SetWindowsHookExA)来拦截相关的WM_PASTE消息。

© www.soinside.com 2019 - 2024. All rights reserved.