仅录制一个窗口的视频

时间:2012-11-05 23:22:53

标签: c# screen-capture

我需要将我的屏幕捕获为视频,因为我使用了Expression Encoder 4,但在我的应用程序中我还需要捕获一个窗口,但是我找不到这样做的方法,我试过EE4动态更改ScreenCaptureJobCaptureRectangle,但这似乎不可能。所以我的问题是,您是否知道使用C#或C ++进行“单窗口捕获”?

1 个答案:

答案 0 :(得分:2)

可以获取你感兴趣的窗口的窗口句柄,设置一个计时器,并在每个计时器滴答捕获该窗口的内容。这样做并非易事,但肯定是可能的。我多年前在C中做过,但代码早已不复存在。

如果您只想捕获屏幕的矩形区域,问题会更简单。您可以获取窗口句柄,查询其大小和位置,然后从屏幕复制该区域。在C或C ++中,您将获得桌面DC并从中复制位。在C#中,您可以创建一个与窗口大小相同的Bitmap,调用Graphics.FromImage来获取图像的Graphics对象,然后调用CopyFromScreen来获取窗口内容。缺点是这只有在没有任何东西覆盖有问题的窗口时才有效。如果有什么东西覆盖了窗口的任何部分,你就会捕获它。

在任何情况下,您最终都需要合并到视频中的图像流。有许多库可以做到这一点。对于C#解决方案,您可以先查看create video from streamed images c#。我怀疑有类似的C ++库。还有一些命令行工具可以做到,虽然我对它们的经验不太令人满意。