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