Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengambil Tangkapan Skrin Tetingkap Aplikasi Tertentu Menggunakan C#?

Bagaimanakah Saya Boleh Mengambil Tangkapan Skrin Tetingkap Aplikasi Tertentu Menggunakan C#?

Mary-Kate Olsen
Lepaskan: 2025-01-17 12:07:10
asal
467 orang telah melayarinya

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

C# mengambil tangkapan skrin tetingkap aplikasi yang ditentukan

Dalam sesetengah kes, anda perlu mengambil tangkapan skrin aplikasi atau tetingkap tertentu dan bukannya keseluruhan skrin. Ini dicapai melalui API PrintWindow Win32, yang membolehkan tetingkap dicetak ke konteks peranti.

Pelaksanaan kod

Kod C# berikut menunjukkan cara mengambil tangkapan skrin tetingkap tertentu:

<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>
Salin selepas log masuk

Arahan lain

  • Fungsi PrintWindow memintas kawasan pelanggan tetingkap, bukan bahagian lain seperti sempadan atau menu.
  • Jika tetingkap sebahagiannya kelihatan, hanya bahagian yang kelihatan ditangkap.
  • Tangkapan skrin yang ditangkap boleh disimpan ke fail atau dipaparkan dalam pemapar imej.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengambil Tangkapan Skrin Tetingkap Aplikasi Tertentu Menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan