3

自動テストが失敗したときに使用する簡単な PrintScreen メソッドを作成しました。これは、エラーとその瞬間の画面の印刷画面をメールで送信できるようにするためです。PrintScreen.Save() のコードは次のようになります。

public static class PrintScreen
{
    public static string Save(string fileName)
    {
        var printScreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
        var graphics = Graphics.FromImage(printScreen);
        graphics.CopyFromScreen(0, 0, 0, 0, printScreen.Size);
        if (File.Exists(fileName))
            File.Delete(fileName);
        printScreen.Save(fileName, ImageFormat.Jpeg);
        Thread.Sleep(500);
        return fileName;
    }
}

コンピューターでテストを実行すると、この方法は正常に機能します。ただし、スケジュールされた自動テストには別のコンピューターを使用します。そして、RDP を介して接続します (自動テストにはデスクトップとの対話が必要です。コンピューターがロックされている間は実行できません)。これが私の問題です。プリントスクリーンが画面を占有しないことがあります。

だから私の質問はこれです:「より良い」方法を書くのに他の方法はありますか、それとも私の現在の方法に何か問題がありますか?. どんな提案でも大歓迎です。

私の調査はこれを結論付けています。

  • スクリーンセーバーまたはシミュレートが無効になっています。
  • 私のローカルマシンで完全に動作します。
  • 私がそれをデバッグしたとき、すべてがうまくいきます。
  • リモート コンピュータには 1 つの画面しかありません。

私が行方不明のファイルへの保存からのエラーはありますか?

宜しくお願いしますジョナス

4

1 に答える 1

0

この問題でご迷惑をおかけして申し訳ありません。しかし、コードに具体的なエラーはありませんでした。このファイルの一部を削除していたのはアンチウイルスプログラムであることが判明しましたが、すべてではありませんでした。そして、私のローカルコンピュータ上の私のウイルスプログラムは同じではありません。私は今、自分のプロセスを安全なプロセスとして追加することができましたが、今ではうまくいくと思います。私はそれを数回試しましたが、はるかにうまく機能します。

回答をありがとう、彼らは私に私のコードについてもう少し考えさせてくれました、そしてあなたの時間を割いて申し訳ありません。//ジョナス

于 2012-08-03T08:31:16.643 に答える