コード例 #1
0
 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);
 }
コード例 #2
0
        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);
        }
コード例 #3
0
 public static extern IntPtr GetWindowRect(IntPtr hWnd, ref ScreenCapture.User32.RECT rect);