2012-11-28 16 views
-1

我知道如何通過編程拍攝屏幕截圖,但我想採取異常的屏幕截圖,我在消息框中顯示出現運行時?有可能嗎?請建議我...在此先感謝如何通過編程獲取C#異常的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); 
+2

什麼不工作? –

+0

我想將包含Exceptions細節的MessageBox保存爲bmp圖像。如何做到這一點我寫了這段代碼catch {block} –

+1

爲什麼要截圖而不僅僅是異常內容? – Botz3000

回答

0

如果你想有一個消息框的截圖使用MessageBox.Show()創建的,這將是一個有點棘手。這裏有幾個選項:

  1. 跳過截圖和捕獲錯誤,而不是內容,使用ex.ToString()(其中ex是你Exception對象)。
  2. 創建一個自定義消息框表單,以便您可以獲取其截圖的大小和位置。
  3. 使用消息框的標題來查找它的句柄並查看是否可以獲取其位置和大小。坦率地說,我不確定這會起作用。

另外,請記住,MessageBox.Show()是模態。如果你在這一行之後放置你的屏幕截圖代碼,那麼在代碼運行之前消息框將會消失。你可以通過一個線程來解決這個問題,但這也可能比它的價值更多的工作,並且由於計時問題可能不可靠。

就個人而言,我會建議只使用錯誤的內容並跳過截圖。它將更加有用,並且可以包含您不想在消息框中顯示用戶的信息。