使用Aero桌面在Windows上实时桌面捕获到内存

时间:2014-01-11 02:45:31

标签: c# c++ directx capture dwm

使用C ++或C#,我试图以实时速度(超过30fps)将桌面捕获到内存中。这样我就能做任何我想做的事。但我不能用Windows Aero桌面做到这一点。

但是,即使Windows Aero处于开启状态,某些桌面捕获软件也会进行实时捕获。与Google Chrome Desktop Capture,TeamViewer和Windows远程桌面一样,它们可以以实时速度(30fps)捕获整个桌面,以防快速移动视频在桌面上播放。

根据互联网上的信息,我到目前为止尝试了以下方法:

  1. GDI BitBlt捕获或DirectX GetFrontBuffer 如果Windows Aero为ON,则性能非常低。 长时间使用此方法继续捕获将最终通过Windows关闭Windows Aero。

  2. DWMRegisterThumbnail 即使Windows Aero处于打开状态,这也将具有非常好的性能。 但是,问题是在所有窗口都是复合后,这无法获得桌面的图像。因此,不会捕获分层窗口(工具提示,下拉列表框)。

  3. Magnifier.dll 即使Windows Aero处于打开状态,这也会有一些良好的性能。 但是,magnifier.dll会直接绘制到一个窗口,所以我无法直接将图像捕获到内存中。

  4. 如果有人知道或了解他们是如何实现的,请给我一个建议。

0 个答案:

没有答案