dbratus
@dbratus

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

Небольшая предистория. Наше приложение, падая, выводит сообщение об ошибке с номером отчета, который нужно послать в службу поддержки. На форме написано, что номер нужно скопировать при помощи кнопки «Copy to clipboard» на той же форме, но пользователи не читают сообщений. Вместо этого они аттачат скриншот, и саппорту приходится переписывать 32-значный номер ошибки вручную. Естественно, они задолбались. Требуется сделать невозможным для пользователей скриншотить эту форму. Может быть тогда они начнут читать, что на ней написано.
  • Вопрос задан
  • 2630 просмотров
Пригласить эксперта
Ответы на вопрос 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. Делать тоже самое автоматически, без запроса пользователя.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Такском Москва
от 90 000 ₽
IT Smart Finance Новосибирск
от 90 000 ₽
deeplay Новосибирск
от 100 000 до 150 000 ₽
03 дек. 2020, в 01:10
200000 руб./за проект
03 дек. 2020, в 00:05
3000 руб./за проект