2

バックグラウンド:

ビジネスアプリケーションを開発していますが、最終段階で、主に接続とエッジのユースケースで、いくつかの異常なエラーが発生しています。

この種の例外については、ユーザーがスクリーンショットを撮り、コメントを添えて電子メールで送信する、エラーの詳細を含む素敵なダイアログを提供するようになりました。

問題:

より良いエクスペリエンスを提供したいと思います。同じダイアログに単一のボタンを提供したいと思います。クリックすると、outlook が開き、電子メールが準備され、スクリーンショットが添付され、場合によってはログ ファイルが添付され、ユーザーはコメントを追加して押すことができます。送信ボタン。

質問:

このスクリーンショットをプログラムで取得し、Outlook メールに添付ファイルとして追加するにはどうすればよいですか?

備考:

アプリは Microsoft .Net Framework 2.0、C#、または VB です

4

2 に答える 2

6

次のコードは、質問のスクリーンショット ビットを実行します。

public byte[] TakeScreenshot()
{
    byte[] bytes;
    Rectangle bounds = Screen.PrimaryScreen.Bounds;
using (Bitmap bmp = new Bitmap(bounds.Width, bounds.Height, PixelFormat.Format32bppArgb)) { using (Graphics gfx = Graphics.FromImage(bmp)) { gfx.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy);
using (MemoryStream ms = new MemoryStream()) { bmp.Save(ms, ImageFormat.Jpeg); bytes = ms.ToArray(); } } }
return bytes; }

これは、メイン画面のスクリーンショットを含むバイト配列を返します。複数のモニターを扱う必要がある場合は、 ScreenのAllScreensプロパティも確認する必要があります。

このようなライブラリは、未処理の例外をすべて処理したり、スクリーンショットを撮ってメールで送信したりできますが、スクリーンショットを新しい Outlook メールに添付するのではなく、自分で送信しようとする可能性が高くなります。

于 2009-07-03T16:52:39.777 に答える
6

まず、スクリーンショットを送信するには、次のコードを使用できます。

//Will contain screenshot
Bitmap screenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
Graphics screenshotGraphics = Graphics.FromImage(bmpScreenshot);
//Make the screenshot
screenshotGraphics.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
screenshot.save("a place to temporarily save the file", ImageFormat.Png);

Outlook からメールを送信するには、ここで説明する方法を使用できます。

于 2009-07-03T16:57:52.900 に答える