获取剪贴板中的数据源

时间:2014-09-14 03:44:43

标签: java linux clipboard

我如何知道剪贴板中的数据来源是什么? 例如,当我将某些东西从Firefox复制到剪贴板时,我希望得到的源是Firefox。 在Linux中有没有命令可以做到这一点?或者有没有办法在Java中做到这一点?

此外,有没有办法跟踪用户粘贴数据。

我想检测一下,例如用户是否尝试从组织的系统中复制重要数据,然后他/她尝试将其粘贴到其他地方。

提前感谢您的帮助(:

2 个答案:

答案 0 :(得分:0)

这不是语言问题,而是API问题。在Windows中,GetClipboardOwner()API调用通常指示上次更新剪贴板的应用程序(通过句柄)。它不是100%可靠。例如,如果应用程序已终止,则它将为null 根据这篇文章,这个函数存在于Java中,但似乎更不可靠,并且可能大部分未被使用。 Java clipboardOwner Purpose?

我认为您最好的解决方案是使用各种剪贴板格式的存在/不存在来寻找证据。像TEXT这样的简单格式无济于事,但RTF和HTML等复杂格式将揭示线索。在Windows上,有一个" html片段的格式"称为CF_HTML,它有一个从一个浏览器到另一个浏览器看起来不同的标题。我会想象类似于Java / Linux的出口?看一下这些文档,有一个名为DataFlavor的东西,它似乎有一组非常丰富的属性,比如mimetype。您有可能获得指纹"通过查看复制时存在的每个dataflavor的属性来查看FireFox。

答案 1 :(得分:-1)

无法用Java确定剪贴板中的数据来源(对于Linux我不确定,但我对此表示怀疑)。

为了确保合理的数据不会让您的应用程序不允许复制数据或将数据保存在应用程序内部剪贴板中,并且不要将其转发到系统剪贴板。在Java中,您可以控制将数据复制到系统剪贴板中。

如果您使用应用程序内部剪贴板,请注意用户可以首先将敏感数据复制到目标,该目标允许将内容复制到系统剪贴板,然后将其进一步复制到应用程序之外。