Take specific application screenshot using C#
Sometimes, you may only need to take a screenshot of a specific application window, rather than the entire screen. In this case, the process is a little more complicated.
PrintWindow API: Solution for application interception
The PrintWindow API in Windows allows you to capture a bitmap of a specified window, even if it is obscured by other elements or located off-screen.
Code implementation
To take advantage of PrintWindow, follow these steps:
Here is a code example:
<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>
Summary
Using the PrintWindow API, you can easily take screenshots of specific applications, even if those applications may be minimized or obscured by an upper window. This technology offers many possibilities for window manipulation and image acquisition.
The above is the detailed content of How Can I Capture a Screenshot of a Specific Application Window Using C#?. For more information, please follow other related articles on the PHP Chinese website!