6

如何创建一个对用户来说完全可见但在屏幕截图中不可见的窗口。我知道这是可能的,因为我安装的键盘记录软件截取的屏幕截图中没有出现 Neo SafeKeys(用于击败键盘记录程序的屏幕键盘)。

为了让您了解,该窗口对用户是完全可见的,但是当截取屏幕截图时,Neo SafeKeys 窗口根本不会出现(就好像它甚至不存在一样)。

Neo SafeKeys 表示它在窗口上方使用了一个不可见的保护层来防止屏幕截图。我已经在整个互联网上搜索,看看我怎样才能重现这个,但无济于事。有谁知道如何执行此操作(用户可见但在屏幕截图中不可见的窗口)?

4

5 回答 5

4

您可以做的是阻止 PrtScn 键在按下时执行任何操作。看看这篇文章,同时向您展示如何做到这一点。

本文所做的是清除剪贴板。您可以做的是捕获屏幕图像并以数字方式删除您的应用程序,然后将修改后的图像放在剪贴板上,从而产生使窗口透明的“效果”。

此外,您可能想查看这个 SO question,它提供了一种使您的窗口仅显示为“蓝色”的替代方法,尽管它不容易做到。

于 2013-04-10T20:00:02.760 回答
4

有谁知道如何执行此操作(用户可见但在屏幕截图中不可见的窗口)?

使用 DirectX 直接渲染到设备。

于 2013-04-10T20:23:15.870 回答
1

在您的 C# 应用程序中,您可以设置一个全局挂钩来监视键盘事件。然后您的应用程序将成为打印屏幕的全局处理程序。现在,如果另一个应用程序管理的屏幕在本机打印,则无法阻止,但任何通过 Windows 运行的东西,您都可以处理。

WM_KEYBOARD_LL 挂钩是可用于托管代码的少数全局挂钩之一,因为它不需要将 DLL 注入每个目标。

对于一些代码,您可以访问这里:

亚当的博客

请记住,这些是全局挂钩,因此您要确保没有其他(其他应用程序)受到影响。我过去曾使用过这些,因为我们在我们处理的应用程序中托管显示一个电源点。基本上,我们不希望用户调用任何 powerpoint 菜单或键盘快捷键,因此我们使用了全局挂钩。我们总是检查用户是否在某个区域(屏幕)和我们的应用程序中,否则我们会影响其他应用程序的功能(包括我们自己的!)

微软信息:

钩子概述

于 2013-04-10T20:21:35.817 回答
1

有这个..... 视觉密码学

活的例子在这里

但这可以通过拍摄多个屏幕截图并将它们放在彼此之上等等来轻松编码......

于 2013-04-10T20:29:47.870 回答
0

如果您使用的是 Windows,并且可以避免发生屏幕记录,您可以实施一个不错的解决方案,例如虚拟桌面,将您的进程嵌入其中。当进程在虚拟桌面中运行时,可以绕过运行在 win32 Api 上的屏幕记录工具。

看看这篇文章,你可以偷偷看看如何实现一个很好的解决方案来逃避屏幕和键盘监控。

http://www.codeproject.com/Articles/7392/Lock-Windows-Desktop?fid=62485&select=3139662&fr=101#xx0xx

于 2013-05-25T04:37:48.820 回答