![](/Images/OutliningIndicators/ContractedBlock.gif) ![](/Images/OutliningIndicators/ExpandedBlockStart.gif) 1 C#中对 API函数的调用 2![](/Images/OutliningIndicators/None.gif) 3![](/Images/OutliningIndicators/None.gif) 4 using System; 5 using System.Runtime.InteropServices; 6![](/Images/OutliningIndicators/None.gif) 7![](/Images/OutliningIndicators/ContractedBlock.gif) GDI32#region GDI32 8 [DllImport("gdi32.dll",EntryPoint="DeleteDC")] 9 public static extern IntPtr DeleteDC(IntPtr hDc); 10![](/Images/OutliningIndicators/InBlock.gif) 11 [DllImport("gdi32.dll",EntryPoint="DeleteObject")] 12 public static extern IntPtr DeleteObject(IntPtr hDc); 13![](/Images/OutliningIndicators/InBlock.gif) 14 [DllImport("gdi32.dll",EntryPoint="BitBlt")] 15 public static extern bool BitBlt(IntPtr hdcDest,int xDest,int yDest,int wDest,int hDest,IntPtr hdcSource,int xSrc,int ySrc,int RasterOp); 16![](/Images/OutliningIndicators/InBlock.gif) 17 [DllImport ("gdi32.dll",EntryPoint="CreateCompatibleBitmap")] 18 public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight); 19![](/Images/OutliningIndicators/InBlock.gif) 20 [DllImport ("gdi32.dll",EntryPoint="CreateCompatibleDC")] 21 public static extern IntPtr CreateCompatibleDC(IntPtr hdc); 22![](/Images/OutliningIndicators/InBlock.gif) 23 [DllImport ("gdi32.dll",EntryPoint="SelectObject")] 24 public static extern IntPtr SelectObject(IntPtr hdc,IntPtr bmp); 25 [DllImport("gdi32.dll")] 26 public static extern Int32 GetDeviceCaps(IntPtr hdc, Int32 capindex); 27![](/Images/OutliningIndicators/InBlock.gif) 28 #endregion 29![](/Images/OutliningIndicators/None.gif) 30![](/Images/OutliningIndicators/ContractedBlock.gif) USER32#region USER32 31 [DllImport("user32.dll", EntryPoint="GetDesktopWindow")] 32 public static extern IntPtr GetDesktopWindow(); 33![](/Images/OutliningIndicators/InBlock.gif) 34 [DllImport("user32.dll",EntryPoint="GetDC")] 35 public static extern IntPtr GetDC(IntPtr ptr); 36![](/Images/OutliningIndicators/InBlock.gif) 37 [DllImport("user32.dll",EntryPoint="GetSystemMetrics")] 38 public static extern int GetSystemMetrics(int abc); 39![](/Images/OutliningIndicators/InBlock.gif) 40 [DllImport("user32.dll",EntryPoint="GetWindowDC")] 41 public static extern IntPtr GetWindowDC(Int32 ptr); 42![](/Images/OutliningIndicators/InBlock.gif) 43 [DllImport("user32.dll",EntryPoint="ReleaseDC")] 44 public static extern IntPtr ReleaseDC(IntPtr hWnd,IntPtr hDc); 45 46 #endregion 47![](/Images/OutliningIndicators/None.gif) 48 public struct SIZE 49![](/Images/OutliningIndicators/ExpandedBlockStart.gif) { 50 public int x; 51 public int y; 52 } 53![](/Images/OutliningIndicators/None.gif) 54 public const int SM_CXSCREEN=0; 55 public const int SM_CYSCREEN=1; 56 public const int SM_CXMAXIMIZED=3; 57 public const int SM_CYMAXIMIZED=4; 58 private const int PHYSICALOFFSETX = 112; 59 private const int PHYSICALOFFSETY = 113; 60 public const int SRCCOPY = 13369376; 61 public int HardMarginLeft; 62 public int HardMarginTop; 63![](/Images/OutliningIndicators/None.gif) 64 public int WindowsWidth=0; 65 public int WindowsHeight=0; 66![](/Images/OutliningIndicators/None.gif) 67 //获取所需的数据 68 private void InvokeApiFunction() 69![](/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](/Images/OutliningIndicators/ContractedBlock.gif) { 70 SIZE size; 71 IntPtr hDC = GetDC(GetDesktopWindow()); 72 IntPtr hMemDC =CreateCompatibleDC(hDC); 73 size.cx = GetSystemMetrics(SM_CXSCREEN); 74 size.cy = GetSystemMetrics(SM_CYSCREEN); 75 this.WindowsHeight=GetSystemMetrics(SM_CYMAXIMIZED ) ; 76 this.WindowsWidth =GetSystemMetrics(SM_CXMAXIMIZED ) ; 77 HardMarginLeft = GetDeviceCaps(hDC , PHYSICALOFFSETX); 78 HardMarginTop = GetDeviceCaps(hDC , PHYSICALOFFSETY); 79 hBitmap = CreateCompatibleBitmap(hDC, size.x, size.y); 80 if (hBitmap!=IntPtr.Zero) 81![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 82 IntPtr hOld = (IntPtr) SelectObject(hMemDC, hBitmap); 83 BitBlt(hMemDC, 0, 0,size.x,size.y, hDC, 0, 0, SRCCOPY); 84 SelectObject(hMemDC, hOld); 85 DeleteDC(hMemDC); 86 ReleaseDC(GetDesktopWindow(), hDC); 87 Bitmap bmp = System.Drawing.Image.FromHbitmap(hBitmap); 88 DeleteObject(hBitmap); 89 GC.Collect(); 90 } 91 } 92 附: GetSystemMetrics 的相关参数说明: http://vbworld.sxnw.gov.cn/vbapi/detail/GetSystemMetrics.htm
|