-2

次のコードを使用して、フォームを一番上に表示し、スクリーンショットを撮り、保存してから最小化しようとしています。

            this.WindowState = FormWindowState.Maximized;
            this.FormBorderStyle = FormBorderStyle.None;
            this.TopMost = true;

            Application.DoEvents();

            string keys = "%" + "{PrtSc}";
            SendKeys.SendWait(keys);
            Clipboard.GetImage().Save(imagePath, ImageFormat.Jpeg);

            this.FormBorderStyle = FormBorderStyle.Sizable;
            this.WindowState = FormWindowState.Minimized;
            this.TopMost = false;

コードは常にウィンドウを一番上にしてスクリーンショットを撮ると思いました。ただし、100% は機能していないことに気付きました。マシンが遅すぎるため、ウィンドウを最前面に表示するコードを実行すると、ウィンドウ全体が表示されません。トップに表示されない場合があるため、写真にはユーザー アクティビティが含まれています。

それを完全に一番上に持ってきて、完了するまで待ってから、スクリーンショットを撮って元に戻すにはどうすればよいですか。

申込用紙は1枚となりますのでご注意ください。

4

1 に答える 1

0

おそらくタイマーを追加します。コードの最初の部分 ("Application.DoEvents();" まで) を実行し、タイマーを開始します。ティック コードで「this.TopMost」ステータスを確認し、それが最上位のフォームである場合にのみ、スクリーン ショットを撮り、タイマーを停止します。

于 2013-03-11T14:08:50.900 に答える