我有点挑战。
在我们产品的早期版本中,我们有一个错误消息窗口(最后的手段,未处理的异常),显示异常消息、类型、堆栈跟踪 + 各种信息。
这个窗口对打印屏幕很友好,因为如果用户只是简单地进行打印屏幕捕获,并将屏幕截图通过电子邮件发送给我们,我们几乎拥有开始诊断问题所需的一切。
然而,对于普通用户来说,该表单被认为过于技术性和“吓人”,因此它被调低为更友好的表单,仍然显示错误消息,但不显示堆栈跟踪和一些我仍然想要的更血腥的细节喜欢得到。此外,表单还添加了向我们发送电子邮件的功能,该文本文件包含我们之前拥有的所有内容以及许多其他技术细节,基本上是我们需要的一切。
但是,用户仍然使用 PrintScreen 来捕获表单的内容并将其通过电子邮件发送给我们,这意味着我现在可以处理的信息量并不理想。
所以我想知道。我是否可以预先渲染一个与我的表单大小相同的位图,上面包含我需要的所有内容,检测到 PrintScreen 被击中并在捕获之前用我的位图快速交换表单内容,然后再返回?
在你说“只是教育用户”之前,是的,那是行不通的。这些不是外面的用户,他们是我们客户处的用户,所以我们真的不能告诉他们要聪明得多。
或者,除此之外,有没有办法让我检测 PrintScreen,告诉 Windows 忽略它,而是通过将上述预渲染位图转储到准备放入电子邮件的剪贴板上来对它做出反应?
代码是 .NET 3.5 中的 C# 3.0,如果它很重要的话,但是指向某些东西的指针就足够了。
我们的错误报告窗口具有以下功能:
- 显示错误发生时截取的屏幕截图(包含当时所有打开的程序窗口,在显示错误对话框之前)
- 显示一个包含我们能想到的每一个血腥细节的文本文件(但没有敏感的东西)
- 将上述两个文件保存到磁盘,以供用户附加到电子邮件或其他文件中
- 通过电子邮件将上述两个文件发送给我们,方法是打开一个新的支持案例,或者输入现有的支持案例编号以添加更多信息
- 忽略问题并希望它消失(返回应用程序)
- 退出应用程序(最后的手段)
我们仍然得到一些用户的截图。不是全部,请注意,所以我的问题基本上是如何让 PrintScreen 按钮为那些仍在使用它的用户提供更多帮助。