【发布时间】:2021-10-28 23:33:45
【问题描述】:
目前我有 C# 应用程序,它利用 SetWindowDisplayAffinity,它应该防止选定的窗口通过将它们涂黑来捕获。但是,根据this post 看来,有些早期版本的 Windows 在这种机制中存在错误。
那么,是否有可能通过 pinvoke 或其他方式检测到当前正在捕获屏幕,以便在不调用系统 API 的情况下手动关闭我的窗口?
【问题讨论】:
-
在一个带有高分辨率摄像头的智能手机很普遍的时代......你真的认为这值得吗?
-
经验法则:如果用户可以查看,则用户可以复制。这只是您想要投入多少努力来迫使用户自己投入努力的问题。
-
更简单的方法是确认可以实现此功能的版本,并将您的应用程序从不支持的版本上运行列入黑名单,告诉用户请升级/更新。你不能期望自己构建比操作系统中已经内置的更好的机制来逃避屏幕捕获,即使这些机制也不是密封的——你不能直接与显示驱动程序/合成器交互,不像操作系统。