Пример #1
0
        public Image CaptureWindow(IntPtr handle)
        {
            IntPtr windowDC = ScreenCapture.User32.GetWindowDC(handle);

            ScreenCapture.User32.RECT rect = default(ScreenCapture.User32.RECT);
            ScreenCapture.User32.GetWindowRect(handle, ref rect);
            int    nWidth  = rect.right - rect.left;
            int    nHeight = rect.bottom - rect.top;
            IntPtr intPtr  = ScreenCapture.GDI32.CreateCompatibleDC(windowDC);
            IntPtr intPtr2 = ScreenCapture.GDI32.CreateCompatibleBitmap(windowDC, nWidth, nHeight);
            IntPtr hObject = ScreenCapture.GDI32.SelectObject(intPtr, intPtr2);

            ScreenCapture.GDI32.BitBlt(intPtr, 0, 0, nWidth, nHeight, windowDC, 0, 0, 13369376);
            ScreenCapture.GDI32.SelectObject(intPtr, hObject);
            ScreenCapture.GDI32.DeleteDC(intPtr);
            ScreenCapture.User32.ReleaseDC(handle, windowDC);
            Image result = Image.FromHbitmap(intPtr2);

            ScreenCapture.GDI32.DeleteObject(intPtr2);
            return(result);
        }
Пример #2
0
 public static extern IntPtr GetWindowRect(IntPtr hWnd, ref ScreenCapture.User32.RECT rect);