我正在尝试使用C#编写一个应用程序,可以检测Windows中是否有另一个应用程序在捕获屏幕视频。我可以查看进程列表并检测是否运行了特定进程,但这不是有效的方法,因为捕获应用程序的进程名称可能会更改。请问是否有任何方法可以实现这一点?谢谢!
如果你只是想检测同一台电脑上的进程是否正在录制屏幕,你可能可以找到一些方法来做到这一点。有一些API被许多屏幕录制软件使用,你可以用EasyHook或类似的东西拦截它们,但你会错过那些工作方式不同的API。例如,UltraVNC有一个镜像视频驱动程序,你可以安装它,它会给你屏幕更新的通知以及对视频帧缓冲区的直接访问权限,这对于屏幕录制或重播非常有用。你的代码将如何应对这种情况?更大的问题是,仅仅扫描本地机器是不足以保护你的应用免受录制的。你可以通过混合使用各种技术,如硬件叠加和HDCP输出,使其更加困难。当然,最大的问题是没有办法阻止别人把相机对准他们的显示器。你最终会花费很多时间在开发上,但增加的安全性并不太多...而且还会给你的最终用户带来一些不便。而那些决心打败它的人只需要对你的应用进行一些代码补丁,或者将手机相机对准正确的方向,安全就不复存在。在我看来,这似乎很荒谬。