Heim >Backend-Entwicklung >C++ >Wie kann ich einen Screenshot einer bestimmten Anwendung in C# erstellen?
C# erstellt Screenshots bestimmter Anwendungen
Mit Graphics.CopyFromScreen() ist es ganz einfach, einen Screenshot des gesamten Bildschirms zu erstellen. Eine komplexere Anforderung besteht jedoch darin, Screenshots nur einer bestimmten Anwendung zu erstellen.
Verwenden Sie die PrintWindow-Funktion
Die Lösung liegt in der Verwendung der PrintWindow Win32 API. Es kann die Fensterbitmap auch dann erfassen, wenn das Fenster verdeckt ist oder nicht auf dem Bildschirm. Der folgende Code zeigt, wie das geht:
<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>
Der obige Codeausschnitt erfordert die folgenden Klassen, um die RECT-Struktur zu definieren:
<code class="language-csharp">[StructLayout(LayoutKind.Sequential)] public struct RECT { private int _Left; private int _Top; private int _Right; private int _Bottom; // ... RECT 结构体的其余代码 ... }</code>
Mit diesen Codeausschnitten können Sie ganz einfach einen Screenshot des Zielanwendungsfensters erstellen, indem Sie dessen Handle abrufen. Ersetzen Sie einfach hwnd in der PrintWindow-Methode durch das Handle Ihres gewünschten Anwendungsfensters.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Screenshot einer bestimmten Anwendung in C# erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!