【问题标题】:Is there any way to detect a screen capture or recording?有没有办法检测屏幕截图或录制?
【发布时间】:2016-02-02 21:14:37
【问题描述】:

我正在为一个朋友制作一个 Winforms 程序,他想要实现的功能之一是隐藏文本框的内容不被记录;这意味着他希望它不受屏幕截图和屏幕录像的影响。

此时我试图解释这是徒劳的,解释说

  1. 有大量程序可用于记录/捕获屏幕,尝试查看所有程序不仅过于详尽而无法解释,而且毫无意义,因为任何称职的程序员都可以投入一个可以在不使用任何已知名称的情况下截取屏幕截图的个人程序
  2. 即使您设法阻止了所有程序,人们也可以对屏幕拍照

为了回答拍摄屏幕照片的问题,他说,虽然我们不能让程序完美,但我们可以尽可能地让别人“破解”它。 (个人认为他是对的,但我认为我们不应该在这种简单的解决方法上太过分)

然而,他对存在大量不同录制节目的问题的回答有点有趣,但我不知道足以给他信心的回答。他认为,所有程序中都必须有一些共同的动作,因为在某种程度上,它们都会抓取屏幕上显示的数据的副本以供使用,并且我们理论上应该能够检测到该动作并做出相应的反应。

所以我的问题是这样的:有谁知道录屏的程序是否有共同的动作,如果有共同的动作,它是什么?

【问题讨论】:

    标签: screen screenshot screen-capture


    【解决方案1】:

    所有屏幕捕获程序的工作方式都是相同的,即与图形引擎交互以在某个时间点捕获屏幕图像,但就目前而言,当屏幕捕获完成时没有事件触发完成,因此无法检测何时发生捕获。

    编辑:屏幕捕获程序访问屏幕的方式是调用GetDC(NULL)。然后它使用 BitBit 函数将内容复制到位图中。调用GetDC() 时未触发任何事件,可能存在 Windows 内置的方法,该方法尚未被 Microsoft 记录并隐藏在 Windows API 的深处,但目前没有任何记录。

    有关这方面的更多信息,请查看Windows Confidential: What You See Is What You get

    【讨论】:

    • 并且太多程序与图形引擎交互,以致无法标记访问它的东西?还是与图形引擎交互不会触发任何事件?
    • 交互根本不会触发任何已知事件。
    • 但是如果我要找一个特定的,如果我知道要听什么,我能检测到它吗? (例如,像 snap chat 如何检测屏幕截图?)
    • 如果您确切知道要查看哪些屏幕捕获程序以及新的服务名称,那么理论上您可以编写一个程序来监视已启动的服务,并在它们出现时触发您可以工作的事件但是这种方法在检测键盘上的打印屏幕按键时是无用的。 Snapchat 管理屏幕截图保护只是因为尝试在 iOS 设备上截屏会中断屏幕上的触摸,这就是为什么您必须不断触摸屏幕才能使 SnapChat 工作的原因,Windows 没有这样的功能或解决方法。
    • GetDC(NULL) 确实不是真正的解决方案。来自它的位 Blitting 从主 GDI 表面而不是来自帧缓冲区本身。您必须连接到 DWM 以获得正确的桌面图像。有些应用程序不使用 GetDC(NULL),其中之一是放大镜。和大多数游戏。启动放大镜,将其设置为镜头视图,点击 PrintScreen 并注意您会看到黑色窗口。在任何独占模式游戏中尝试打印屏幕。
    【解决方案2】:

    在截屏的情况下,如果我们监控剪贴板并检测到前台应用程序正在运行,我们可以识别活动。 在截图工具的情况下,如果捕获屏幕截图,它会进入剪贴板,我们可以直接粘贴。

    【讨论】:

    • 这是一个很好的真正答案,我希望我能早早地想到它,但你正在恢复一个长期死的帖子
    • 截屏和将数据放到剪贴板上的相关性为零。字面上没有。这一点用处不大。
    【解决方案3】:

    阻止窗口内容显示在屏幕截图中的受支持方法是标记相应的窗口,以便操作系统可以将其清空。

    这是使用 Windows 7 中引入的SetWindowDisplayAffinity API 调用完成的。传递WDA_MONITOR 标志将允许窗口显示在监视器上。该窗口将出现在其他任何地方(例如捕获屏幕时)没有任何内容。

    【讨论】:

      猜你喜欢
      • 2016-05-11
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 2015-01-09
      • 1970-01-01
      相关资源
      最近更新 更多