如何通过编程获取C#异常的ScreenShots?

时间:2012-11-28 10:11:08

标签: c#-3.0

我知道如何通过编程拍摄屏幕截图但我想拍摄我在消息框中显示的例外的ScreenShots出现在运行时?有可能吗?请建议我...提前致谢

    Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);    
Graphics graphics = Graphics.FromImage(bitmap as Image);    
graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);    
bitmap.Save("c:\\screenshot.jpeg", ImageFormat.Jpeg); 

1 个答案:

答案 0 :(得分:0)

如果您想要使用MessageBox.Show()创建的消息框的屏幕截图,那将会有点棘手。以下是几个选项:

  1. 使用ex.ToString()(其中ex是您的Exception对象),跳过屏幕截图并捕获错误内容。
  2. 创建自定义消息框表单,以便您可以获取屏幕截图的大小和位置。
  3. 使用消息框的标题查找其句柄,看看是否可以获取其位置和大小。坦率地说,我不确定这会起作用。
  4. 另外,请记住MessageBox.Show()是模态的。如果您将截屏代码放在此行之后,则消息框将在代码运行之前消失。你可以通过一个线程解决这个问题,但这也可能比它的价值更多,并且由于时间问题可能不可靠。

    就个人而言,我建议只使用错误内容并跳过屏幕截图。它会更有用,并且可以包含您不希望在消息框中显示用户的信息。