使用C++或C#,我试图以实时速度(超过30fps)将桌面捕获到内存中.这样我就能做任何我想做的事.但我不能用Windows Aero桌面做到这一点.
但是,即使Windows Aero处于打开状态,某些桌面捕获软件也会进行实时捕获.与Google Chrome Desktop Capture,TeamViewer和Windows远程桌面一样,它们可以以实时速度(30fps)捕获整个桌面,以防快速移动视频在桌面上播放.
根据互联网上的信息,到目前为止我尝试了以下方法:
GDI BitBlt捕获或DirectX GetFrontBuffer如果Windows Aero打开,这将具有非常低的性能.长时间使用此方法继续捕获将最终通过Windows关闭Windows Aero.
DWMRegisterThumbnail即使Windows Aero处于打开状态,这也将具有非常好的性能.但是,问题是在所有窗口都是复合后,这无法获得桌面的图像.因此,将不会捕获分层窗口(工具提示,下拉列表框).
Magnifier.dll即使Windows Aero开启,这也会有一些良好的性能.但是,magnifier.dll会直接绘制成一个窗口,所以我无法直接将图像捕获到内存中.
如果有人知道或了解他们是如何实现的,请给我一个建议.