Prendre une capture d'écran d'une application spécifique en utilisant C#
Parfois, vous devrez peut-être uniquement prendre une capture d'écran d'une fenêtre d'application spécifique, plutôt que de l'intégralité de l'écran. Dans ce cas, le processus est un peu plus compliqué.
API PrintWindow : Solution d'interception d'applications
L'API PrintWindow sous Windows vous permet de capturer un bitmap d'une fenêtre spécifiée, même si elle est masquée par d'autres éléments ou située hors écran.
Mise en œuvre du code
Pour profiter de PrintWindow, suivez ces étapes :
Voici un exemple de code :
<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>
Résumé
Grâce à l'API PrintWindow, vous pouvez facilement prendre des captures d'écran d'applications spécifiques, même si ces applications peuvent être minimisées ou masquées par une fenêtre supérieure. Cette technologie offre de nombreuses possibilités de manipulation de fenêtres et d'acquisition d'images.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!