У меня есть проблемы.
В более ранней версии нашего продукта у нас было окно сообщения об ошибке (последнее средство, необработанное исключение), в котором отображалось сообщение об исключении, его тип, трассировка стека + различные биты и фрагменты информации.
Это окно было дружественным к экрану печати, так как если пользователь просто сделал захват экрана печати и отправил нам скриншот по электронной почте, у нас было почти все, что нужно для диагностики проблемы.
Тем не менее, форма была сочтена слишком технической и "страшной" для обычных пользователей, поэтому она была уменьшена до более дружественной, по-прежнему показывая сообщение об ошибке, но не трассировку стека и некоторые более кровавые детали, которые я все еще хотел бы получить. Кроме того, в форму были добавлены возможности отправлять нам по электронной почте текстовый файл, содержащий все, что у нас было раньше, + множество других технических деталей, в основном все, что нам нужно.
Однако пользователи по-прежнему используют PrintScreen для захвата содержимого формы и отправки по электронной почте нам, что означает, что у меня теперь меньше, чем оптимальный объем информации.
Так что мне было интересно. Могу ли я предварительно отрендерить растровое изображение того же размера, что и моя форма, со всем необходимым на нем, обнаружить, что PrintScreen был поражен, и быстро поменять содержимое формы с моим растровым изображением до захвата, а затем снова после этого?
И прежде чем вы скажете "просто обучать пользователей", да, это не сработает. Это не наши пользователи, а пользователи наших клиентов, поэтому мы не можем сказать им, что им нужно все это очень много.
Или, за исключением этого, есть ли способ для меня обнаружить PrintScreen, сказать Windows игнорировать его и вместо этого реагировать на него, выгружая вышеупомянутый предварительно обработанный растровый рисунок в буфер обмена, готовый для размещения в электронном письме?
Код - C # 3.0 в .NET 3.5, если это имеет значение, но указатели на что-то, на что можно посмотреть, достаточно хороши.
Наше окно сообщений об ошибках имеет следующие возможности:
- Показать снимок экрана, который был сделан при возникновении ошибки (содержит все открытые окна программы на тот момент, до того, как отобразился диалог ошибки)
- Показать текстовый файл, содержащий все кровавые детали, которые мы можем придумать (но без чувствительных вещей)
- Сохраните два вышеупомянутых файла на диск для последующего прикрепления пользователем к электронному письму или еще чего-нибудь подобного
- Отправка вышеупомянутых двух файлов нам по электронной почте, либо путем открытия нового обращения в службу поддержки, либо путем ввода номера существующего обращения в службу поддержки, чтобы добавить в него дополнительную информацию
- Игнорировать проблему и надеяться, что она исчезнет (возврат в приложение)
- Выход из приложения (в крайнем случае)
Мы все еще получаем скриншоты от некоторых пользователей. Не все, заметьте, поэтому мой вопрос заключается в том, как сделать так, чтобы кнопка PrintScreen еще больше помогла нам тем пользователям, которые все еще ее используют.