![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Как запретить по PrtSc(Alt+ PrtSc) копирование содержимого окна нарисованного с помощью WINAPI? Видел такое в одной программе, не помню название, вместо картинки чёрное поле.
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 6 Всего: 135 |
Если программа, о которой ты говоришь - media player classic или подобная ( воспроизводит видео ), то там рисование делается не при помощи winAPI, а overlay'ем. Если программа не использует overlay, directx, opengl и иже с ними, то запретить printScreen нельзя
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
можно. В шадоу надо будет похукать NtGdiBitBlt , NtUserQueryWindow и тд. --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 6 Всего: 135 |
Artemon, судя по
запретить можно только hot-keys, а не
просветите, пожалуйста, неграмотного, плохо знающего русская языки, what does it means: и что это за функции -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
функции из shadow ssdt.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Вот только шас придумал метод один. Шас попробую реализовать , если получиться отпишу.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
И так время хоть и позднее но начнем))
Идея была пореверсить , и пройти поэтапно создание скрина. Как я и говорил выше , проблему можно решить перехватом сервисов.Можно и через драйвер фильтр клавиатуры сделать.Ближе к делу. Создание скриншота сводиться к вызову xxxSnapWindow.
Объемная функция , в ней производиться ряд проверок в том числе и на принадлежность потока в винлогону(тогда скрин не делается). Далее идет работа с буфером обмена( собственно вам там и надо подменять на свой черный квадрат). Если посмотреть ссылки на эту функция вырисовывается следующая картина. ![]() Вам предстоит разобрать эту цепочку коллов , и выцепить xxxSnapWindow. Вот , что у меня получилось. ![]() Определяет пид процесса , окно которого снимают если : -окно в фокусе(мышкой выделено) -alt+prtsc PS. Если модеры не против код драйвера покажу. Это сообщение отредактировал(а) bra1ny - 31.3.2010, 13:25 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
лично я не против, т.к. драйвер втихую подкинуть непросто, а сама его функция может быть ориентирована на защиту авторского права
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| OlegIT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 684 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Спасибо за разъяснения. Примерно понял, но... Сходу всё это не понятно как реализовать. Может вместе с драйвером, подскажите, где об этом почитать, перехват сообщений, подмена картинки на черный квадрат?
|
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Вот мой пример. http://www.everfall.com/paste/id.php?n6lt1zpy439s
Так один нюанс с определением чего снимают. В xxxSnapWindow передается структура WND( недокументированная ) , через нее можно вытащить всю информацию о процессе. По поводу черного квадрата.Смотрите как xxxSnapWindow работает с буфером обмена. Добавлено через 12 минут и 12 секунд Да забыл добавить , xp sp2 только. Я там везде смещения , только для нее использую. --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Только , что для семерки посмотрел , там тоже она присутствует(xxxSnapWindow). Так что думаю данный способ вполне переносим.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
Запретить фотографировать. |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Если быть точнее про черный квадрат то вам надо будет перехватить _SetClipboardData с флагом CF_BITMAP.
ее формат
Дерзайте) --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Вот кстати структура WND
так что все из нее выудить можно. --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |