首頁 > 後端開發 > C++ > 如何使用 C# 截取特定應用程式的螢幕截圖?

如何使用 C# 截取特定應用程式的螢幕截圖?

Susan Sarandon
發布: 2025-01-17 11:56:09
原創
885 人瀏覽過

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

C#截取指定應用程式螢幕截圖

使用Graphics.CopyFromScreen()截取整個螢幕截圖很簡單。但是,更複雜的需求是只截取特定應用程式的螢幕截圖。

利用PrintWindow函數

解決方案在於使用PrintWindow Win32 API。即使視窗被遮蔽或不在螢幕上,它也能截取視窗位圖。以下程式碼示範如何實作:

<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>
登入後複製

上述程式碼片段需要以下類別來定義RECT結構:

<code class="language-csharp">[StructLayout(LayoutKind.Sequential)]
public struct RECT {
    private int _Left;
    private int _Top;
    private int _Right;
    private int _Bottom;
    // ... RECT 结构体的其余代码 ...
}</code>
登入後複製

有了這些程式碼片段,您可以透過取得目標應用程式視窗的句柄輕鬆地截取其螢幕截圖。只需將PrintWindow方法中的hwnd替換為您所需應用程式視窗的句柄即可。

以上是如何使用 C# 截取特定應用程式的螢幕截圖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板