Ситуация:У меня есть программное обеспечение, которое выполняет совместное использование экрана через Интернет, где один пользователь выступает в качестве докладчика, а другие пользователи выступают в роли зрителей/участников.
Помимо окон презентации, у докладчика также есть набор НЕ -ОБЩИЙ -ОКНА, которые появляются на экране (панель кнопок для запуска/остановки совместного использования/и т. д., окно Skype и т. д. ).
Докладчик может настроить в настройках программного обеспечения совместного доступа к экрану, чтобы сделать эти -ОБЩИЕ -WINDOWS невидимыми (, т. е. они не будут отображаться в совместном использовании экрана, которое отправляется участникам, но содержимое окон за ними появится на снимке экрана ).
Скриншоты отправляются со скоростью приблизительно 10 кадров -в -секунду или быстрее.
Вопрос:как можно программно захватить экран, кроме этих НЕ -ОБЩЕГО -окна WINDOWS?
Примечания:
- Из-за более высоких кадров -на -секунд значение, я не могу минимизировать/максимизировать/установить альфу для этих окон, потому что тогда окна будут мерцать. Приложение написано на Win32 C++.
- Я бы использовал многослойные окна, но из-за функции композиции рабочего стола Windows 7 ее нельзя использовать вне -из -поля -(, а в Windows 8 вы больше не можете использовать DwmEnableComposition для временно и программно отключить композицию)
- Я мог бы использовать подход многоуровневого окна для Windows XP/2000/7 и т. д. и другой подход для Windows 8 (, если он есть ), хотя я бы предпочел один процесс это работает на всех системах
- Я мог бы также попытаться «составить» скриншоты, захватив отдельные изображения (рабочего стола,окна, которые необходимо захватить ), и использовать их индекс z -для создания конечного изображения, но из-за требуемого значения кадров -в секунду -этот процесс будет слишком медленным.
задан Sucata Mihnea 4 May 2012 в 08:48
поделиться