Исключение определенных окон из захвата экрана

#c #winapi

#c #winapi

Вопрос:

Я пытаюсь захватить весь рабочий стол с помощью BitBlt , и я также хочу исключить определенные окна (моего собственного приложения) из захвата. Я могу установить для них WS_EX_LAYERED атрибут, но это не будет работать в Window 7 с включенной композицией рабочего стола. Показывать и скрывать окно нельзя, поскольку это приводит к мерцанию.

Комментарии:

1. Он устарел (т. Е. может не работать в будущих версиях Windows), но вы можете использовать пользовательское преобразование изображения в сочетании со списком фильтров окон . (Преобразование изображения просто копирует биты куда-то еще для сохранности.)

2. @Raymond: Мне это кажется достойным ответа, а не комментария. Я бы поддержал это.

3. Я не знаю, сработает ли это, но это просто и, возможно, стоит попробовать. Обработайте сообщение WM_PRINT, но ничего не рисуйте, также не передавайте сообщение в DefWindowProc.