次のコードを使用してForm
スクリーンショットをキャプチャしています。
this.TopMost = true;
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
this.Activate();
Application.DoEvents();
Bitmap screenShotBMP = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
Graphics screenShotGraphics = Graphics.FromImage(screenShotBMP);
screenShotGraphics.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
screenShotBMP.Save(imagePath, ImageFormat.Gif);
screenShotGraphics.Dispose();
screenShotBMP.Dispose();
this.TopMost = false;
this.FormBorderStyle = FormBorderStyle.Sizable;
this.WindowState = FormWindowState.Minimized;
サーバーにログインすると、正常に動作します (生成されたスクリーンショットを確認できます)。ただし、ロックすると、次の行になります。
screenShotGraphics.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
「ハンドルが無効です」というエラーが表示されます。
誰もログインしていないときにデスクトップがないためだと知りました。
私が持っているのは、5分ごとに実行するようにスケジュールされたWinFormsアプリケーションで、実行時に..のスクリーンショットを撮る必要がありForm
ます.
解決策を教えてください。