如何创建对用户完全可见但在屏幕截图中不可见的窗口。我知道这是可能的,因为Neo SafeKeys (一个用来击败键盘记录器的屏幕键盘)没有出现在我安装的键盘记录软件所拍摄的屏幕截图中。
为了给你一个概念,这个窗口对用户是完全可见的,但是当截屏时,Neo SafeKeys窗口根本不出现(就像它甚至不存在一样)。
Neo SafeKeys表示,它在窗口上方使用了一个看不见的保护层来保护屏幕截图。我在互联网上找遍了,想知道怎样才能重现这个场景,但都无济于事。有谁知道这是如何实现的(对用户可见但在屏幕截图中不可见的窗口)?
发布于 2013-04-11 04:00:03
您可以做的是,您可以阻止PrtScn键在按下时执行任何操作。请看一下this article,同时向您展示如何做到这一点。
本文所做的就是清理剪贴板。取而代之的是捕获屏幕图像并以数字方式移除应用程序,然后将修改后的图像放到剪贴板上,从而产生使窗口透明的“效果”。
此外,你可能想看看this SO question,它提供了一种替代方法,让你的窗口只显示为“蓝色”,尽管这不容易做到。
发布于 2013-04-11 04:23:16
有人知道这是如何实现的吗(对用户可见但在屏幕截图中不可见的窗口)?
使用DirectX直接渲染到设备。
发布于 2013-04-11 04:21:36
在C#应用程序中,您可以设置一个全局钩子来监视键盘事件。然后,您的应用程序将成为打印屏幕的全局处理程序。现在,如果另一个应用程序管理的屏幕本机打印,不能阻止它,但是任何通过windows运行的东西,你都可以得到。
DLL挂钩是可以在托管代码中使用的为数不多的全局挂钩之一,因为它不需要将WM_KEYBOARD_LL注入到每个目标中。
有关您可以在此处访问的一些代码:
Adam's Blog
请记住,这些是全局钩子,因此您希望确保不会影响任何其他(其他应用程序)。我在过去使用过这些,因为我们在主机上展示了我们工作的应用程序中的power point。基本上,我们不希望用户调用任何powerpoint菜单或键盘快捷键,所以我们使用了全局钩子。我们总是检查用户是否在某个区域(屏幕)和我们的应用程序中,否则我们会影响其他应用程序的功能(包括我们自己的!)
Microsoft信息:
Hooks Overview
https://stackoverflow.com/questions/15935195
复制相似问题