是否有可能"欺骗"PrintScreen,在捕获之前用其他东西替换我的表单内容?

ang*_*son 5 windows detect printscreen

我有点挑战.

在我们产品的早期版本中,我们有一个错误消息窗口(最后的手段,未处理的异常),它显示了异常消息,类型,堆栈跟踪+各种信息.

这个窗口是打印屏幕友好的,因为如果用户只是做了一个打印屏幕捕获,并通过电子邮件发送给我们屏幕截图,我们几乎拥有了开始诊断问题所需的一切.

然而,对于普通用户来说,这种形式被认为过于技术性和"可怕",所以它被归结为一个更友好的形式,仍然显示错误信息,但不是堆栈跟踪和一些更残酷的细节,我仍然喜欢搞定.此外,该表格还增加了向我们发送电子邮件的功能,其中包含我们之前拥有的所有内容以及许多其他技术细节,基本上我们需要的一切.

但是,用户仍然使用PrintScreen来捕获表单的内容并将电子邮件发送给我们,这意味着我现在的信息量不会超过最佳状态.

所以我很想知道.我是否有可能预先渲染一个与我的表格大小相同的位图,我需要的一切,检测到PrintScreen被击中,并在捕获之前用我的位图快速换出表单内容,然后再返回?

在你说"只是教育用户"之前,是的,那是行不通的.这些不是用户,他们是我们客户的用户,所以我们真的不能告诉他们这么多.

或者,除此之外,有没有办法让我检测PrintScreen,告诉Windows忽略它,然后通过将一个前面提到的预渲染位图转储到剪贴板上准备好放入电子邮件来对它作出反应?

代码是.NET 3.5中的C#3.0,如果它很重要,但是要查看/ for的东西的指针就足够了.

我们的错误报告窗口具有以下功能:

  • 显示错误发生时的截图(包含当时程序的所有打开窗口,显示错误对话框之前)
  • 显示一个文本文件,其中包含我们可以想到的每个血腥细节(但没有敏感的东西)
  • 将上述两个文件保存到磁盘,后者附加到用户的电子邮件或其他内容
  • 通过电子邮件将上述两个文件发送给我们,方法是打开新的支持案例,或者输入现有的支持案例编号以向其添加更多信息
  • 忽略问题并希望它消失(返回应用程序)
  • 退出申请(最后的手段)

我们仍然会收到一些用户的截图.不是全部,请注意,所以我的问题基本上是如何让PrintScreen按钮为那些仍在使用它的用户提供更多帮助.

Mat*_*nen 1

当错误弹出窗口处于活动状态时,是否可以完全禁用“打印屏幕”按钮?让它显示一条消息,类似于“请使用屏幕中间清晰可见的按钮来报告错误”我同意它破坏了预期的功能,但如果你的用户真的那么愚蠢,你能做什么......

或者,让它自动报告错误(或者将数据存储在本地,以便稍后获取,如果您因某种原因无法在不询问的情况下发送),而不询问用户。如果您希望能够将打印屏幕截图与详细的错误数据连接起来,请让它发送一个唯一的 ID,其中的数据也会显示在弹出窗口的一角。