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中文網其他相關文章!