博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#截取后台窗口的图片
阅读量:4674 次
发布时间:2019-06-09

本文共 3605 字,大约阅读时间需要 12 分钟。

c#截取后台窗口的图片,自测可用,据说性能很一般,用用吧

1         struct RECT 2         { 3             public int Left; // x position of upper-left corner 4             public int Top; // y position of upper-left corner 5             public int Right; // x position of lower-right corner 6             public int Bottom; // y position of lower-right corner 7         } 8         public static Bitmap GetWindow(IntPtr hWnd) 9         {10             IntPtr hscrdc = GetWindowDC(hWnd);11             RECT rect = new RECT();12             GetWindowRect(hWnd, out rect);13             IntPtr hbitmap = CreateCompatibleBitmap(hscrdc, rect.Right - rect.Left, rect.Bottom - rect.Top);14             IntPtr hmemdc = CreateCompatibleDC(hscrdc);15             SelectObject(hmemdc, hbitmap);16             PrintWindow(hWnd, hmemdc, 0);17             Bitmap bmp = Bitmap.FromHbitmap(hbitmap);18             DeleteDC(hscrdc); 19             DeleteDC(hmemdc);20             return bmp;21         }22 23         //API声明24 25         [DllImport("user32.dll")]26         private static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);27 28         [DllImport("gdi32.dll")]29         public static extern IntPtr CreateDC(30                     string lpszDriver,        // driver name驱动名  31                     string lpszDevice,        // device name设备名  32                     string lpszOutput,        // not used; should be NULL  33                     IntPtr lpInitData  // optional printer data  34          );35 36         [DllImport("gdi32.dll")]37         public static extern int BitBlt(38          IntPtr hdcDest, // handle to destination DC目标设备的句柄  39          int nXDest,  // x-coord of destination upper-left corner目标对象的左上角的X坐标  40          int nYDest,  // y-coord of destination upper-left corner目标对象的左上角的Y坐标  41          int nWidth,  // width of destination rectangle目标对象的矩形宽度  42          int nHeight, // height of destination rectangle目标对象的矩形长度  43          IntPtr hdcSrc,  // handle to source DC源设备的句柄  44          int nXSrc,   // x-coordinate of source upper-left corner源对象的左上角的X坐标  45          int nYSrc,   // y-coordinate of source upper-left corner源对象的左上角的Y坐标  46          UInt32 dwRop  // raster operation code光栅的操作值  47          );48 49         [DllImport("gdi32.dll")]50         public static extern IntPtr CreateCompatibleDC(51          IntPtr hdc // handle to DC  52          );53 54         [DllImport("gdi32.dll")]55         public static extern IntPtr CreateCompatibleBitmap(56          IntPtr hdc,        // handle to DC  57          int nWidth,     // width of bitmap, in pixels  58          int nHeight     // height of bitmap, in pixels  59          );60 61         [DllImport("gdi32.dll")]62         public static extern IntPtr SelectObject(63          IntPtr hdc,          // handle to DC  64          IntPtr hgdiobj   // handle to object  65          );66 67         [DllImport("gdi32.dll")]68         public static extern int DeleteDC(69          IntPtr hdc          // handle to DC  70          );71 72         [DllImport("user32.dll")]73         public static extern bool PrintWindow(74          IntPtr hwnd,               // Window to copy,Handle to the window that will be copied.   75          IntPtr hdcBlt,             // HDC to print into,Handle to the device context.   76          UInt32 nFlags              // Optional flags,Specifies the drawing options. It can be one of the following values.   77          );78 79         [DllImport("user32.dll")]80         public static extern IntPtr GetWindowDC(81          IntPtr hwnd82          );

 

转载于:https://www.cnblogs.com/maintell/p/5327885.html

你可能感兴趣的文章