Есть такая тулза PrivacyKeyboard. С ее помощью можно запретить создание скриншота. Она перехватывает функции BitBlt и ScratchBlt. Кто-нибудь может объяснить, как она определяет, что эти фуекции вызываются именно для создания скриншота ?
не логично было бы открыть любой исходник который делает скрин экрана, и глядеть какими параметрами вызываются данные функции ?
А вот вопрос в тему. Как Windows Media Player и другие плэйеры заменяют картинку чёрным прямоугольником? Они же не перехватывают никаких функций.
Это побочный эффект... Overlay... Аппаратное ускорение... Нечто вероятное этому. http://labnol.blogspot.com/2005/11/capture-still-images-from-windows.html
А он и не заполняет. Показ изображение идет через апаратное окно (Overlay) которое идет поверх всего. И данные в нем напрямую недоступны. А в новых видео картачках даже шифруется (чтоб неграбили)
несколько вопросов (извиняюсь если тупые, с графикой не работал почти) 1. контекст экрана - это то что возвращаете GetDC(0) ? он одинаков для всех процессов ? 2. как быть если делается копия не всего экрана, а например только одного окна ? перечислять все окна и сравнивать контексты ?
что то я наверное не допонял. делаю в программе hdc = GetDC(NULL) при разных запусках получаю разные значения, почему ?
Нет, нет. GetDC(0) возвращает контекст текущего дисплея, их может быт несколько (см. SwitchToDesktop). А процессы могут быть прикреплены к различным "станциям окон" (window stations).