Heim > Backend-Entwicklung > C++ > Wie kann ich mit C# einen Screenshot eines bestimmten Anwendungsfensters erstellen?

Wie kann ich mit C# einen Screenshot eines bestimmten Anwendungsfensters erstellen?

Mary-Kate Olsen
Freigeben: 2025-01-17 12:07:10
Original
467 Leute haben es durchsucht

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

C# erstellt einen Screenshot des angegebenen Anwendungsfensters

In manchen Fällen ist es notwendig, einen Screenshot einer bestimmten Anwendung oder eines bestimmten Fensters zu erstellen, anstatt den gesamten Bildschirm. Dies wird durch die PrintWindow Win32-API erreicht, die das Drucken von Fenstern im Gerätekontext ermöglicht.

Code-Implementierung

Der folgende C#-Code zeigt, wie ein Screenshot eines bestimmten Fensters erstellt wird:

<code class="language-csharp">// 导入所需的Win32 API
[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);

// 定义表示RECT结构的类
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
    public int Left;
    public int Top;
    public int Right;
    public int Bottom;
}

// 获取窗口句柄和尺寸
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();

// 现在您拥有了表示指定窗口截图的位图</code>
Nach dem Login kopieren

Weitere Anweisungen

  • Die PrintWindow-Funktion fängt den Clientbereich des Fensters ab, nicht andere Teile wie den Rahmen oder das Menü.
  • Wenn das Fenster teilweise sichtbar ist, wird nur der sichtbare Teil erfasst.
  • Aufgenommene Screenshots können in einer Datei gespeichert oder in einem Bildbetrachter angezeigt werden.

Das obige ist der detaillierte Inhalt vonWie kann ich mit C# einen Screenshot eines bestimmten Anwendungsfensters 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