Задать вопрос
dbratus
@dbratus

Как в .Net Windows Forms сделать так, чтобы содержимое формы не было видно на screenshot-е?

Небольшая предистория. Наше приложение, падая, выводит сообщение об ошибке с номером отчета, который нужно послать в службу поддержки. На форме написано, что номер нужно скопировать при помощи кнопки «Copy to clipboard» на той же форме, но пользователи не читают сообщений. Вместо этого они аттачат скриншот, и саппорту приходится переписывать 32-значный номер ошибки вручную. Естественно, они задолбались. Требуется сделать невозможным для пользователей скриншотить эту форму. Может быть тогда они начнут читать, что на ней написано.
  • Вопрос задан
  • 2661 просмотр
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 7
Ocelot
@Ocelot
Какой-то порочный подход «Всё запретить!». Юзеры тогда будут фотографировать экран на мобильник и присылать фото.
А что мешает приложению самому составлять отчет об ошибке, и выводить только окошко с кнопками «отправить отчет в СП» и «не отправлять»?
Ответ написан
Muff
@Muff
Проще для саппорта написать распознавалку 32-значного номера на скриншоте.
Ответ написан
taliban
@taliban
php программист
При работе приложения произошла ошибка!
Две кнопки и больше НИЧЕГО!

1. Отправить сообщение об ошибке в саппорт (автоматически)
2. Посмотреть сообщение об ошибке

При нажатии на первую, программа сама шлет что надо куда надо, при нажатии на вторую программа показывает то что пользователь видит у Вас сейчас + некое описание.

Не надо городить велосипедов, сами себе усложняете жизнь (и саппорту своему)
Ответ написан
Комментировать
@gelas
Какой странный у Вас подход.
1. Сделайте кнопку «отправить отчет».
2. Не хотите делать кнопку, добавьте какой-нибудь QR код на форму, чтоб выш сапорт не вводил его руками.

В любом случае, не стоит по пустякам воспитывать и заставлять пользователей, сделайте так чтоб правильный вариант был самым удобным.
Ответ написан
Комментировать
@ivsedm
Если оставлять ввод кода саппортом, то можно 32 цифры перевести в 16-ричную систему или в 32-ричную систему исчисления. Тогда в первом случае 32 цифры «свернутся» в 8 знаков, а во втором вообще в 4.
Ответ написан
@tangro
Очень ржачный подход — запретить скриншоты делать, чтобы люди буквы копировали. Как писали выше — лучше автоматом отчеты отсылать. Тем более, что для этой цели есть куча платных и фревых либ. Да даже голая винда это умеет.

Ну а если Вы и вправду зададитесь целью это сделать, то нифига на .NET у Вас это не выйдет. Скриншоты делаются через WinAPI функции GetDC, BitBlt и т.д. И им плевать, на .NET Ваше приложение или нет. Соответственно, чтобы их обмануть, нужно написать свою длл-ку (на асме или на С++), найти какая часть винды делает скриншоты, подгрузить в память этого модуля свою длл-ку, запустить в ней удаленный поток, повесить хуки на GetDC, BitBlt (и может что-то еще), в этих хуках распознавать, кто и что пытается заскриншотить и вырезать из этих скриншотов свою форму. В общем, недели 2-3 работы для очень опытного системного программиста. Вы уверен, что Ваш саппорт настолько задолбался, что это имеет смысл? И, к стати, прикрутить к проге либу отправки сгенеренных отчетов — это я так думаю работы часа на 3 для .NET джуниора. Так что корректируйте цели.
Ответ написан
@cencio
никак такого не сделать.
Вам нужно переделать форму на другую логику, есть два варианта:
1. Добавить кнопку — «Сообщить в поддержку» по нажатию на которую отправлять лог с ошибкой на свой сервак
2. Делать тоже самое автоматически, без запроса пользователя.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы