Heim > Backend-Entwicklung > C++ > Wie kann ich einen Screenshot einer bestimmten Anwendung in C# erstellen?

Wie kann ich einen Screenshot einer bestimmten Anwendung in C# erstellen?

Susan Sarandon
Freigeben: 2025-01-17 11:56:09
Original
884 Leute haben es durchsucht

How Can I Take a Screenshot of a Specific Application in C#?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage