C#截取指定應用程式視窗截圖
某些情況下,需要截取特定應用程式或視窗的截圖,而非整個螢幕。這可以透過PrintWindow Win32 API實現,該API允許將視窗列印到裝置上下文。
程式碼實作
以下C#程式碼示範如何截取指定視窗的截圖:
<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>
其他說明
以上是如何使用C#截取特定應用程式視窗的螢幕截圖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!