Heim >Backend-Entwicklung >C++ >Wie kann ich mit C# einen Screenshot eines bestimmten Anwendungsfensters erfassen?
Erstellen Sie einen spezifischen Anwendungs-Screenshot mit C#
Manchmal müssen Sie möglicherweise nur einen Screenshot eines bestimmten Anwendungsfensters und nicht des gesamten Bildschirms erstellen. In diesem Fall ist der Vorgang etwas komplizierter.
PrintWindow API: Lösung für das Abfangen von Anwendungen
Mit der PrintWindow-API in Windows können Sie eine Bitmap eines bestimmten Fensters erfassen, auch wenn es durch andere Elemente verdeckt ist oder sich außerhalb des Bildschirms befindet.
Code-Implementierung
Um PrintWindow zu nutzen, befolgen Sie diese Schritte:
Hier ist ein Codebeispiel:
<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>
Zusammenfassung
Mit der PrintWindow-API können Sie problemlos Screenshots bestimmter Anwendungen erstellen, auch wenn diese Anwendungen möglicherweise minimiert oder durch ein oberes Fenster verdeckt sind. Diese Technologie bietet viele Möglichkeiten zur Fenstermanipulation und Bildaufnahme.
Das obige ist der detaillierte Inhalt vonWie kann ich mit C# einen Screenshot eines bestimmten Anwendungsfensters erfassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!