C#中对 API函数的调用

 

ContractedBlock.gif ExpandedBlockStart.gif
 1None.gif                                              C#中对 API函数的调用
 2None.gif
 3None.gif
 4None.gif    using System;
 5None.gif    using System.Runtime.InteropServices;
 6None.gif
 7ContractedBlock.gifExpandedBlockStart.gifGDI32#region    GDI32 
 8InBlock.gif  [DllImport("gdi32.dll",EntryPoint="DeleteDC")] 
 9InBlock.gif  public static extern IntPtr DeleteDC(IntPtr hDc); 
10InBlock.gif
11InBlock.gif  [DllImport("gdi32.dll",EntryPoint="DeleteObject")] 
12InBlock.gif  public static extern IntPtr DeleteObject(IntPtr hDc); 
13InBlock.gif
14InBlock.gif  [DllImport("gdi32.dll",EntryPoint="BitBlt")] 
15InBlock.gif  public static extern bool BitBlt(IntPtr hdcDest,int xDest,int yDest,int wDest,int hDest,IntPtr hdcSource,int xSrc,int ySrc,int RasterOp); 
16InBlock.gif
17InBlock.gif  [DllImport ("gdi32.dll",EntryPoint="CreateCompatibleBitmap")] 
18InBlock.gif  public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight); 
19InBlock.gif
20InBlock.gif  [DllImport ("gdi32.dll",EntryPoint="CreateCompatibleDC")] 
21InBlock.gif  public static extern IntPtr CreateCompatibleDC(IntPtr hdc); 
22InBlock.gif
23InBlock.gif  [DllImport ("gdi32.dll",EntryPoint="SelectObject")] 
24InBlock.gif  public static extern IntPtr SelectObject(IntPtr hdc,IntPtr bmp); 
25InBlock.gif  [DllImport("gdi32.dll")] 
26InBlock.gif  public static extern Int32 GetDeviceCaps(IntPtr hdc, Int32 capindex); 
27InBlock.gif
28ExpandedBlockEnd.gif  #endregion

29None.gif
30ContractedBlock.gifExpandedBlockStart.gifUSER32#region USER32
31InBlock.gif  [DllImport("user32.dll", EntryPoint="GetDesktopWindow")]
32InBlock.gif  public static extern IntPtr GetDesktopWindow();
33InBlock.gif
34InBlock.gif  [DllImport("user32.dll",EntryPoint="GetDC")]
35InBlock.gif  public static extern IntPtr GetDC(IntPtr ptr);
36InBlock.gif
37InBlock.gif  [DllImport("user32.dll",EntryPoint="GetSystemMetrics")]
38InBlock.gif  public static extern int GetSystemMetrics(int abc);
39InBlock.gif
40InBlock.gif  [DllImport("user32.dll",EntryPoint="GetWindowDC")]
41InBlock.gif  public static extern IntPtr GetWindowDC(Int32 ptr);
42InBlock.gif
43InBlock.gif  [DllImport("user32.dll",EntryPoint="ReleaseDC")]
44InBlock.gif  public static extern IntPtr ReleaseDC(IntPtr hWnd,IntPtr hDc);
45InBlock.gif  
46ExpandedBlockEnd.gif  #endregion

47None.gif
48None.gifpublic struct SIZE
49ExpandedBlockStart.gifContractedBlock.gif dot.gif{
50InBlock.gif  public int x;
51InBlock.gif  public int y;
52ExpandedBlockEnd.gif }

53None.gif
54None.gif  public  const int SM_CXSCREEN=0;
55None.gif  public  const int SM_CYSCREEN=1;
56None.gif  public  const int SM_CXMAXIMIZED=3;
57None.gif  public  const int SM_CYMAXIMIZED=4;
58None.gif  private const int PHYSICALOFFSETX = 112;
59None.gif  private const int PHYSICALOFFSETY = 113;
60None.gif  public  const int SRCCOPY = 13369376;
61None.gif  public  int       HardMarginLeft;
62None.gif  public  int       HardMarginTop; 
63None.gif
64None.gif  public  int      WindowsWidth=0;
65None.gif  public  int      WindowsHeight=0;
66None.gif
67None.gif//获取所需的数据
68None.gifprivate void InvokeApiFunction()
69ExpandedBlockStart.gifContractedBlock.gifdot.gif{
70InBlock.gif   SIZE size;  
71InBlock.gif   IntPtr  hDC = GetDC(GetDesktopWindow()); 
72InBlock.gif   IntPtr hMemDC =CreateCompatibleDC(hDC);
73InBlock.gif   size.cx = GetSystemMetrics(SM_CXSCREEN);
74InBlock.gif   size.cy = GetSystemMetrics(SM_CYSCREEN);
75InBlock.gif   this.WindowsHeight=GetSystemMetrics(SM_CYMAXIMIZED )  ;
76InBlock.gif   this.WindowsWidth =GetSystemMetrics(SM_CXMAXIMIZED  )  ;
77InBlock.gif   HardMarginLeft = GetDeviceCaps(hDC , PHYSICALOFFSETX);
78InBlock.gif   HardMarginTop  = GetDeviceCaps(hDC , PHYSICALOFFSETY);
79InBlock.gif   hBitmap = CreateCompatibleBitmap(hDC, size.x, size.y);
80InBlock.gif   if (hBitmap!=IntPtr.Zero)
81ExpandedSubBlockStart.gifContractedSubBlock.gif   dot.gif{
82InBlock.gif    IntPtr hOld = (IntPtr) SelectObject(hMemDC, hBitmap);
83InBlock.gif    BitBlt(hMemDC, 00,size.x,size.y, hDC, 00, SRCCOPY);
84InBlock.gif    SelectObject(hMemDC, hOld);
85InBlock.gif    DeleteDC(hMemDC);
86InBlock.gif    ReleaseDC(GetDesktopWindow(), hDC);
87InBlock.gif    Bitmap bmp = System.Drawing.Image.FromHbitmap(hBitmap); 
88InBlock.gif    DeleteObject(hBitmap);   
89InBlock.gif    GC.Collect();
90ExpandedSubBlockEnd.gif    }

91ExpandedBlockEnd.gif}
92   附:
    GetSystemMetricsNone.gif的相关参数说明:
    http://vbworld.sxnw.gov.cn/vbapi/detail/GetSystemMetrics.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值