我很抱歉,因为我知道这个问题太笼统但我是新手,所以我很难让这个问题更具体。
我正在开发一个客户端的应用程序一些安全问题。他不希望用户能够打印屏幕或复制(ctrl + c程序的数据。现在,当我开始研究这个时,我发现当这些击键时他的操作系统将数据复制到缓冲区中。现在我试过检查当用户点击ctrl+c
或printscreen
的击键时,我的应用程序突然刷新缓冲区(或缓存我们说的任何内容)。现在我的问题是
1:如何使用Java刷新窗口的缓冲区?我应该检查哪个类API? (因为我搜索了很多,但我没有找到方法:(所以现在是SO专家的时间)
2:这个flushBuffer代码是否适用于所有操作系统?或者我是否需要对Windows / Linux / Mac进行单独检查
谢谢
答案 0 :(得分:2)
要禁用应用中任何组件的复制+粘贴功能(取自Disabling 'paste' in a jTextfield)
textComponent.setTransferHandler(null);
但除此之外的任何事情都将是一次黑客攻击。您可以使用jnativehook全局收听打印屏幕,然后可能以某种方式遮住窗口。我不知道,偏执是一件棘手的事。
答案 1 :(得分:1)
您可以清除复制粘贴缓冲区,如下所示:
只有空文本并将其复制到缓冲区。
除此之外,你可以做的事情并不那么可靠。
代码如下:
Action action = new DefaultEditorKit.CopyAction();
action.actionPerformed(
new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null));
修改:对于网络应用,请使用this answer clipboard jquery plugin查看this way。
答案 2 :(得分:0)
根据要求/安全问题,清除内存(允许数据写入其中)是错误的设计。更好地覆盖击键。例如ctrl/alt+(any key)
或printscr
要覆盖关键行为,您需要实现KeyListener
。一旦为该键定义了自定义行为,它就不允许默认操作(如复制/剪切..)
答案 3 :(得分:0)
这种替代方法怎么样:
说实话,我没有尝试过,我不确定它是否有用。它也可能是操作系统相关的