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

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

Небольшая предистория. Наше приложение, падая, выводит сообщение об ошибке с номером отчета, который нужно послать в службу поддержки. На форме написано, что номер нужно скопировать при помощи кнопки «Copy to clipboard» на той же форме, но пользователи не читают сообщений. Вместо этого они аттачат скриншот, и саппорту приходится переписывать 32-значный номер ошибки вручную. Естественно, они задолбались. Требуется сделать невозможным для пользователей скриншотить эту форму. Может быть тогда они начнут читать, что на ней написано.
  • Вопрос задан
  • 2672 просмотра
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Merion Academy
    Администрирование MS Windows Server
    1 месяц
    Далее
  • Нетология
    Инженер по автоматизации
    13 месяцев
    Далее
  • Skillbox
    Системный администратор с нуля
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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. Делать тоже самое автоматически, без запроса пользователя.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Монетка Екатеринбург
от 130 000 до 160 000 ₽
Гринатом Петрозаводск
До 80 000 ₽
Алабуга Екатеринбург
от 127 500 ₽