Using C++ or C#, I am trying to capture desktop in real time speed(more than 30fps) into memory. So that I can do whatever I want. But I can't do it with Windows Aero desktop.
However, some desktop capture software does real time capture even though Windows Aero is ON. Like Google Chrome Desktop Capture, TeamViewer and Windows Remote Desktop, they can capture entire desktop in a real time speed (30fps) in case of a fast movement video is playing back on a desktop.
Based on the information on the Internet, I tried following method so far:
GDI BitBlt capture or DirectX GetFrontBuffer This will have very low-performance if Windows Aero is ON. Keep capturing with this method for long time will eventually turning off Windows Aero by Windows.
DWMRegisterThumbnail This will have very good performance even though Windows Aero is ON. However, the problem is this cannot obtain the image of desktop after all windows are composite. So, layered window(tooltip, drop down list box) will not be captured.
Magnifier.dll This will have somewhat good performance even though Windows Aero is ON. However, magnifier.dll will directly draw into a window, so I cannot directly capture the image into memory.
If someone knows or clue of how they achieve it, please give me an advise.