如何截取最小化窗口的屏幕截图?

时间:2016-06-21 19:58:36

标签: c# windows screenshot screen-capture

我正在构建一个特定Windows的小视频录制,但我只是注意到它在窗口最小化时不起作用,它只截取应用程序的窗口高级栏。有可能解决它吗?

这是我目前的代码:

public Bitmap GetScreenshot(IntPtr hwnd)
        {
            RECT rc;

            if (!GetWindowRect(hwnd, out rc))
                throw new Win32Exception(Marshal.GetLastWin32Error());

            Bitmap bmp = new Bitmap(rc.right - rc.left, rc.bottom - rc.top, PixelFormat.Format32bppArgb);
            using (var gfxBmp = Graphics.FromImage(bmp))
            {
                IntPtr hdcBitmap = gfxBmp.GetHdc();
                bool succeeded = PrintWindow(hwnd, hdcBitmap, 0);
                gfxBmp.ReleaseHdc(hdcBitmap);
                if (!succeeded)
                {
                    gfxBmp.FillRectangle(new SolidBrush(Color.Gray), new Rectangle(Point.Empty, bmp.Size));
                }
                IntPtr hRgn = CreateRectRgn(0, 0, 0, 0);
                GetWindowRgn(hwnd, hRgn);
                Region region = Region.FromHrgn(hRgn);
                if (!region.IsEmpty(gfxBmp))
                {
                    gfxBmp.ExcludeClip(region);
                    gfxBmp.Clear(Color.Transparent);
                }
                return bmp;
            }
        }

0 个答案:

没有答案