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); }
public static extern IntPtr GetWindowRect(IntPtr hWnd, ref ScreenCapture.User32.RECT rect);