C# は指定されたアプリケーションのスクリーンショットを取得します
Graphics.CopyFromScreen() を使用すると、画面全体のスクリーンショットを簡単に取得できます。ただし、より複雑なニーズは、特定のアプリケーションのみのスクリーンショットを取得することです。
PrintWindow 関数を使用する
解決策は、PrintWindow Win32 API を使用することです。ウィンドウが隠れているか、画面上にない場合でも、ウィンドウのビットマップをキャプチャできます。次のコードは、これを行う方法を示しています。
<code class="language-csharp">[DllImport("user32.dll")] public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); [DllImport("user32.dll")] public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags); public static Bitmap PrintWindow(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; }</code>
上記のコード スニペットでは、RECT 構造を定義するために次のクラスが必要です:
<code class="language-csharp">[StructLayout(LayoutKind.Sequential)] public struct RECT { private int _Left; private int _Top; private int _Right; private int _Bottom; // ... RECT 结构体的其余代码 ... }</code>
これらのコード スニペットを使用すると、ターゲット アプリケーション ウィンドウのハンドルを取得して、そのウィンドウのスクリーンショットを簡単に撮ることができます。 PrintWindow メソッドの hwnd を目的のアプリケーション ウィンドウのハンドルに置き換えるだけです。
以上がC# で特定のアプリケーションのスクリーンショットを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。