Maison >développement back-end >C++ >Comment puis-je prendre une capture d'écran d'une application spécifique en C# ?
C# prend des captures d'écran des applications spécifiées
Prendre une capture d'écran de tout l'écran est facile en utilisant Graphics.CopyFromScreen(). Cependant, un besoin plus complexe consiste à prendre des captures d’écran d’une application spécifique uniquement.
Utilisez la fonction PrintWindow
La solution réside dans l'utilisation de l'API PrintWindow Win32. Il peut capturer le bitmap de la fenêtre même si la fenêtre est masquée ou non à l'écran. Le code suivant montre comment procéder :
<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>
L'extrait de code ci-dessus nécessite les classes suivantes pour définir la structure 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>
Avec ces extraits de code, vous pouvez facilement prendre une capture d'écran de la fenêtre de l'application cible en obtenant son identifiant. Remplacez simplement hwnd dans la méthode PrintWindow par le handle de la fenêtre d'application souhaitée.
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!