The situation . I have software that shares screen sharing over the Internet, where one user acts as a host and other users act as viewers / participants.
In addition to the presentation windows, the presenter also has a set of NOT-DETECTED WINDOWS that appear on the screen (a panel of buttons to start sharing / stop / etc., Skype windows, etc.).
The host can configure the screen sharing software to make these ILLEGAL WINDOWS invisible (i.e. they will not appear in the screen sharing, which is sent to visitors, but the contents of the window behind them will appear in the screenshot).
Screenshots are sent at about 10 frames per second or faster.
Question : how can I programmatically capture the screen, except for these non-DETECTION-WINDOW windows?
Notes
- Due to the higher frames per second, I cannot minimize / maximize / set the alpha for these windows, because then the windows will flicker. The application is written in Win32 C ++.
- I would use multi-level windows, but due to the layout function of Windows 7 Desktop this cannot be used out of the box (and in Windows 8 you can no longer use DwmEnableComposition to temporarily and programmatically disable the composition)
- I could use a layered window approach for Windows XP / 2000/7, etc., and a different approach for Windows 8 (if any), although I would prefer one process that works on all systems.
- I could also try to βcomposeβ screenshots by capturing individual images (desktop, windows that need to be captured), and use their z-index to create the final image, but due to the required frames for the average value, this process will be too slow.
Sucata mihnea
source share