C# を使用して特定のアプリケーションのスクリーンショットを取得します
画面全体ではなく、特定のアプリケーション ウィンドウのスクリーンショットのみを撮る必要がある場合があります。この場合、プロセスは少し複雑になります。
PrintWindow API: アプリケーションインターセプトのソリューション
Windows の PrintWindow API を使用すると、指定したウィンドウが他の要素で隠されている場合や画面外にある場合でも、そのウィンドウのビットマップをキャプチャできます。
コードの実装
PrintWindow を利用するには、次の手順に従います:
コード例は次のとおりです:
<code class="language-csharp">using System.Drawing; using System.Runtime.InteropServices; public static class ScreenshotHelper { [DllImport("user32.dll")] private static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags); [DllImport("user32.dll")] private static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); public static Bitmap CaptureWindow(IntPtr hwnd) { RECT rc; GetWindowRect(hwnd, out rc); Bitmap bmp = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb); Graphics gfxBmp = Graphics.FromImage(bmp); IntPtr hdcBitmap = gfxBmp.GetHdc(); PrintWindow(hwnd, hdcBitmap, 0); gfxBmp.ReleaseHdc(hdcBitmap); gfxBmp.Dispose(); return bmp; } } [StructLayout(LayoutKind.Sequential)] public struct RECT { public int Left; public int Top; public int Right; public int Bottom; }</code>
概要
PrintWindow API を使用すると、特定のアプリケーションが最小化されているか、上部のウィンドウで隠れている場合でも、そのアプリケーションのスクリーンショットを簡単に撮ることができます。このテクノロジーは、ウィンドウ操作と画像取得に多くの可能性をもたらします。
以上がC# を使用して特定のアプリケーション ウィンドウのスクリーンショットをキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。