В общем пока я пришел к следующим выводам:
Захватывать экран можно через несколько АПИ.
1) GDI (медленно, можно захватывать перекрывающиеся окна)
2) DirectX Desktop Duplication - (очень быстро, но перекрывающиеся окна захватывать нельзя)
3) Magnification API - (пока еще не вырубили прикольную фичу - убирать окна, которые не хочется захватывать)
https://docs.microso...scalingcallback
4) Через недокументированные DwmpDxGetWindowSharedSurface из dwmapi.dll или DwmGetDxSharedSurface
http://undoc.airesof...aredSurface.php
Позволяют обойти запрет на захват созданный через setwindowdisplayaffinity
https://docs.microso...displayaffinity
5) С помощью UWP Capture. Обещают новые функции:
https://blogs.window...screen-capture/
5) Полноэкранные directx приложения захватываются только с помощью инжекта длл, установки хуков и перехвата DirectX методов.
6) Чувак хакнул dwm.dll и перехватывал напрямую через него
Я попросил дать исходники, на что получил ответ:
Sorry we had to take it down because of a copyright claim from microsoft.
Сообщение отредактировано Malcev: 07 Mar 2020 - 02:09