【发布时间】:2013-03-18 11:29:54
【问题描述】:
我很抱歉,因为我知道这个问题太笼统了,但我是新手,所以我很难让这个问题更具体。
我正在开发一个应用程序,其中客户有一些安全问题。他不希望用户能够打印屏幕或复制(ctrl+c 程序的数据。现在当我开始处理这个问题时,我发现当这些击键时,他的操作系统会复制其缓冲区中的数据。现在我试图检查每当用户点击ctrl+c 或printscreen 的击键时,我的应用程序会突然刷新缓冲区(或缓存我们所说的任何内容)。现在我的问题是
1: 如何使用 Java 刷新窗口的缓冲区?我应该检查哪个类 API?(因为我搜索了很多但我没有找到方法 :( 所以现在是 SO 专家的时候了)
2:此 flushBuffer 代码是否适用于所有操作系统?或者我需要对 Windows/Linux/Mac 进行单独检查。
谢谢
【问题讨论】:
-
假设您已经成功地做到了这一点,那么您如何防止用户拿起他的智能手机/相机并拍摄他的电脑屏幕:)?
-
别忘了您还需要处理屏幕录像机(Gimps、camstudio 等)、屏幕截图辅助程序(截图工具)等程序。我记得很久以前的一个程序,Realplayer,它似乎无法打印屏幕,因为每当我尝试它时,视频根本不在屏幕截图中,而是显示黑屏。显然它所做的是直接写入视频内存 - 您可以尝试这样做,但请注意它是可绕过的(通过更改 Windows 中的视频设置)。
-
基本上你不能可靠地做到这一点。如果您的客户对适用于普通用户但不是更高级的东西感到满意(或者,就像 gerrytan 提到的,任何使用相机的人),那么只有远程可能的东西。另请注意,由于您将清除所有程序共享的复制缓冲区,因此您有破坏其他软件的危险。
-
@eis 理解 :) 但是清除缓冲区的方法是什么?
-
@despicable 添加为答案
标签: java linux winapi operating-system buffer