#c# #c #winapi #screenshot #gdi
Вопрос:
Можно ли сделать снимок экрана частично скрытого окна, не выводя его на передний план? Я знаю, что это возможно, потому что API захвата экрана уже делает это.
https://developer.mozilla.org/en-US/docs/Web/API/Screen_Capture_API/Using_Screen_Capture
На рисунке показано всплывающее окно при запуске процесса захвата. Вы можете видеть одно и то же всплывающее окно на Discord или Slack всякий раз, когда вы хотите поделиться своим экраном. Во всплывающем окне вы можете увидеть список окон, которые я открыл. Некоторые окна частично или полностью скрыты. Однако во всплывающем окне отображается все их содержимое, что меня удивляет. Во всплывающем окне не отображаются свернутые окна, что нормально. Это работает кросс-платформенно.
Я хотел бы знать, как API захвата экрана делает это, так как мне это никогда не удавалось. Я лично пробовал использовать API Win32 GDI32, но мне не удалось сделать снимок экрана скрытого окна. Я бы предпочел кроссплатформенное решение, но на данный момент я ориентируюсь только на Windows 10 .
Заранее спасибо.
Комментарии:
1. Возможно, вы захотите взглянуть на wm_Print .
2. Только WinRT может это сделать: blogs.windows.com/windowsdeveloper/2019/09/16/… (с помощью инфраструктуры API дублирования вывода DXGI, но эта «старая» не позволяет захватывать только окно…)
3. Для этого также можно использовать API миниатюр DWM .
Ответ №1:
@simon-mourier Спасибо вам за комментарий. Это было полезно.
https://blogs.windows.com/windowsdeveloper/2019/09/16/new-ways-to-do-screen-capture/
#Ничто неуловимо