C#中对 API函数的调用

 1                                              C#中对 API函数的调用
 2
 3
 4    using System;
 5    using System.Runtime.InteropServices;
 6
 7GDI32#region    GDI32 
 8  [DllImport("gdi32.dll",EntryPoint="DeleteDC")] 
 9  public static extern IntPtr DeleteDC(IntPtr hDc); 
10
11  [DllImport("gdi32.dll",EntryPoint="DeleteObject")] 
12  public static extern IntPtr DeleteObject(IntPtr hDc); 
13
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
17  [DllImport ("gdi32.dll",EntryPoint="CreateCompatibleBitmap")] 
18  public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight); 
19
20  [DllImport ("gdi32.dll",EntryPoint="CreateCompatibleDC")] 
21  public static extern IntPtr CreateCompatibleDC(IntPtr hdc); 
22
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
28  #endregion
29
30USER32#region USER32
31  [DllImport("user32.dll", EntryPoint="GetDesktopWindow")]
32  public static extern IntPtr GetDesktopWindow();
33
34  [DllImport("user32.dll",EntryPoint="GetDC")]
35  public static extern IntPtr GetDC(IntPtr ptr);
36
37  [DllImport("user32.dll",EntryPoint="GetSystemMetrics")]
38  public static extern int GetSystemMetrics(int abc);
39
40  [DllImport("user32.dll",EntryPoint="GetWindowDC")]
41  public static extern IntPtr GetWindowDC(Int32 ptr);
42
43  [DllImport("user32.dll",EntryPoint="ReleaseDC")]
44  public static extern IntPtr ReleaseDC(IntPtr hWnd,IntPtr hDc);
45  
46  #endregion
47
48public struct SIZE
49 {
50  public int x;
51  public int y;
52 }
53
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
64  public  int      WindowsWidth=0;
65  public  int      WindowsHeight=0;
66
67//获取所需的数据
68private void InvokeApiFunction()
69{
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   {
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
posted on 2005-12-04 13:59 DotNet编程 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/furenjun/archive/2005/12/04/290365.html

C#中对 API函数的调用相关推荐

  1. Linux 编程中的API函数和系统调用的关系【转】

    转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...

  2. vue 执行函数this_在vue中使用回调函数,this调用无效的解决

    let self = this //使用新变量替换this,以免this无效 //updatestudentinfotoserver是一个将本身部分数据异步上传的接口,接收三个参数,其中第一个是数据, ...

  3. Lua5.1中的API函数

    lua_State* luaL_newstate() Lua脚本的编译执行是相互独立的,在不同的线程上执行.通过luaL_newstate()函数可以申请一个虚拟机,返回指针类型 lua_State. ...

  4. C++对象模型8——构造函数和析构函数中对虚函数的调用、全局对象构造和析构、局部static数组的内存分配

    一.构造函数和析构函数中对虚函数的调用 仍然以https://blog.csdn.net/Master_Cui/article/details/109957302中的代码为例 base3构造函数和析构 ...

  5. VB中API函数的调用

    1.API函数       API的英文全称(Application Programming Interface),WIN32 API也就是MicrosoftWindows32位平台的应用程序编程接口 ...

  6. VS2010中VB.NET中API函数的调用

    API有两种调用方式: 第一种使用declare的API调用, Declare Function publicname Lib "libname" [Alias "ali ...

  7. 海康播放器sdk开发中的PlayM4_SetDecCallBack函数的调用

    该函数如下: BOOL   PlayM4_SetDecCallBack(LONG nPort,void (CALLBACK* DecCBFun)(long nPort,char * pBuf,long ...

  8. 破解必备,软件破解中常用API函数大全

    在软件破解中,常用软件破解方法就是下断点快速找事件,在命令行BP下断点,shift+f9找事件然后再alt+f9返回. 快捷方法,ctrl+A分析代码.ctrl+N 找要下断的API函数.右键> ...

  9. linux启动程序api编程,Linux编程中关于API函数与系统调用间关系

    用户态xyz()函数,内核最终一般会调用形如sys_xyz()的服务例程来处理(不过也有一些例外,这里暂时不考虑) 函数xyz()是直接提供给用户编程使用的.图中"SYSCALL" ...

最新文章

  1. html 鼠标单击单元格,vue-easytable点击表格中某个单元格操作
  2. 历史为什么丑化隋朝_隋朝于中国历史,到底处于什么样的地位,为何它一直被低估...
  3. jQuery筛选器常用总结
  4. 开发者的利器:Docker 理解与使用
  5. 机器学习12推荐系统
  6. [转] boost undefined reference to 'pthread_create 问题
  7. 201409-1-相邻数对
  8. 自学linux指令分析-mkdir
  9. 小客车年检(年审)相关的技术参数一览
  10. 设置桌面上计算机的图标更改,电脑如何修改桌面应用的图标
  11. 企业微信如何快速共享打印
  12. 免费搭建个人网站流程!马上拥有自己的网站!
  13. JS中apply与call的用法
  14. 求n的阶乘的算法框图_递归算法是一种直接或者间接调用自身函数或者方法的算法...
  15. python 翻译模块 翻译API使用(百度、有道、谷歌)
  16. 【虚幻引擎UE】UE5 可编辑动态样条线轨迹及AI跟随路径移动(含工程源码)
  17. linux模拟器玩三国战记,三国战纪手游下载(街机)-三国战纪安卓官网版v0.14.30.0-Linux公社...
  18. 惠普服务器BIOS密码是多少位
  19. thinkphp封装短信宝验证码
  20. 2016校招offer

热门文章

  1. 车辆贷款违约预测 Top1(2021科大讯飞)
  2. linux6.5防火墙开端口,Linux(CentOS6.5) 开放端口,配置防火墙
  3. centos进程php-fpm,CentOS 6.x 开启Nginx和Php-fpm状态统计
  4. HTTP的缺点与HTTPS
  5. 关闭Windows 2008下面应用程序出错后的提示
  6. 基于Jupyter Notebook---卷积神经网络的图像分类(keras对猫狗图像数据集进行分类)
  7. Java 多线程 之 wait等待 线程实例
  8. Windows 10 环境VS报表rdlc 中文乱码解决方案
  9. 机房三维(3D)监控系统和机房可视化动力环境监控系统两者有什么特点?
  10. C语言OJ项目参考(2963) 判断三角形