• c#截取后台窗口的图片


    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 hwnd
    82          );
  • 相关阅读:
    相遇相知都是缘
    [BTS]6912,5641,5773,5410错误处理!
    [BTS]Cumulative Functloids用法
    职业生涯又一个转折点
    BizTalk Group Day 北京!
    [BTS]10008错误如何处理?
    [ERROR]创建BAM视图时报错
    [BTS]使用BizTalk开发应用系统,就是这么简单!
    [BTS]BizTalk2006 SqlAdapter UpdateGram的Update用法
    [BTS]为什么BTSharePointAdapterWS.asmx无法预览?
  • 原文地址:https://www.cnblogs.com/maintell/p/5327885.html
Copyright © 2020-2023  润新知