public Image CaptureWindow(IntPtr handle) { ScreenCapture.img = null; try { IntPtr windowDC = ScreenCapture.User32.GetWindowDC(handle); ScreenCapture.User32.RECT rECT = new ScreenCapture.User32.RECT(); ScreenCapture.User32.GetWindowRect(handle, ref rECT); int num = rECT.right - rECT.left; int num1 = rECT.bottom - rECT.top; IntPtr intPtr = ScreenCapture.GDI32.CreateCompatibleDC(windowDC); IntPtr intPtr1 = ScreenCapture.GDI32.CreateCompatibleBitmap(windowDC, num, num1); IntPtr intPtr2 = ScreenCapture.GDI32.SelectObject(intPtr, intPtr1); ScreenCapture.GDI32.BitBlt(intPtr, 0, 0, num, num1, windowDC, 0, 0, 13369376); ScreenCapture.GDI32.SelectObject(intPtr, intPtr2); ScreenCapture.GDI32.DeleteDC(intPtr); ScreenCapture.User32.ReleaseDC(handle, windowDC); ScreenCapture.img = Image.FromHbitmap(intPtr1); ScreenCapture.GDI32.DeleteObject(intPtr1); } finally { GC.Collect(); GC.WaitForPendingFinalizers(); } return(ScreenCapture.img); }
public Image CaptureWindow(IntPtr handle) { IntPtr windowDC = ScreenCapture.User32.GetWindowDC(handle); ScreenCapture.User32.RECT rECT = new ScreenCapture.User32.RECT(); ScreenCapture.User32.GetWindowRect(handle, ref rECT); int num = rECT.right - rECT.left; int num1 = rECT.bottom - rECT.top; IntPtr intPtr = ScreenCapture.GDI32.CreateCompatibleDC(windowDC); IntPtr intPtr1 = ScreenCapture.GDI32.CreateCompatibleBitmap(windowDC, num, num1); IntPtr intPtr2 = ScreenCapture.GDI32.SelectObject(intPtr, intPtr1); ScreenCapture.GDI32.BitBlt(intPtr, 0, 0, num, num1, windowDC, 0, 0, 13369376); ScreenCapture.GDI32.SelectObject(intPtr, intPtr2); ScreenCapture.GDI32.DeleteDC(intPtr); ScreenCapture.User32.ReleaseDC(handle, windowDC); Bitmap bitmap = Image.FromHbitmap(intPtr1); ScreenCapture.GDI32.DeleteObject(intPtr1); return(bitmap); }
public static extern IntPtr GetWindowRect(IntPtr hWnd, ref ScreenCapture.User32.RECT rect);