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
转载于:https://www.cnblogs.com/furenjun/archive/2005/12/04/290365.html
C#中对 API函数的调用相关推荐
- Linux 编程中的API函数和系统调用的关系【转】
转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...
- vue 执行函数this_在vue中使用回调函数,this调用无效的解决
let self = this //使用新变量替换this,以免this无效 //updatestudentinfotoserver是一个将本身部分数据异步上传的接口,接收三个参数,其中第一个是数据, ...
- Lua5.1中的API函数
lua_State* luaL_newstate() Lua脚本的编译执行是相互独立的,在不同的线程上执行.通过luaL_newstate()函数可以申请一个虚拟机,返回指针类型 lua_State. ...
- C++对象模型8——构造函数和析构函数中对虚函数的调用、全局对象构造和析构、局部static数组的内存分配
一.构造函数和析构函数中对虚函数的调用 仍然以https://blog.csdn.net/Master_Cui/article/details/109957302中的代码为例 base3构造函数和析构 ...
- VB中API函数的调用
1.API函数 API的英文全称(Application Programming Interface),WIN32 API也就是MicrosoftWindows32位平台的应用程序编程接口 ...
- VS2010中VB.NET中API函数的调用
API有两种调用方式: 第一种使用declare的API调用, Declare Function publicname Lib "libname" [Alias "ali ...
- 海康播放器sdk开发中的PlayM4_SetDecCallBack函数的调用
该函数如下: BOOL PlayM4_SetDecCallBack(LONG nPort,void (CALLBACK* DecCBFun)(long nPort,char * pBuf,long ...
- 破解必备,软件破解中常用API函数大全
在软件破解中,常用软件破解方法就是下断点快速找事件,在命令行BP下断点,shift+f9找事件然后再alt+f9返回. 快捷方法,ctrl+A分析代码.ctrl+N 找要下断的API函数.右键> ...
- linux启动程序api编程,Linux编程中关于API函数与系统调用间关系
用户态xyz()函数,内核最终一般会调用形如sys_xyz()的服务例程来处理(不过也有一些例外,这里暂时不考虑) 函数xyz()是直接提供给用户编程使用的.图中"SYSCALL" ...
最新文章
- html 鼠标单击单元格,vue-easytable点击表格中某个单元格操作
- 历史为什么丑化隋朝_隋朝于中国历史,到底处于什么样的地位,为何它一直被低估...
- jQuery筛选器常用总结
- 开发者的利器:Docker 理解与使用
- 机器学习12推荐系统
- [转] boost undefined reference to 'pthread_create 问题
- 201409-1-相邻数对
- 自学linux指令分析-mkdir
- 小客车年检(年审)相关的技术参数一览
- 设置桌面上计算机的图标更改,电脑如何修改桌面应用的图标
- 企业微信如何快速共享打印
- 免费搭建个人网站流程!马上拥有自己的网站!
- JS中apply与call的用法
- 求n的阶乘的算法框图_递归算法是一种直接或者间接调用自身函数或者方法的算法...
- python 翻译模块 翻译API使用(百度、有道、谷歌)
- 【虚幻引擎UE】UE5 可编辑动态样条线轨迹及AI跟随路径移动(含工程源码)
- linux模拟器玩三国战记,三国战纪手游下载(街机)-三国战纪安卓官网版v0.14.30.0-Linux公社...
- 惠普服务器BIOS密码是多少位
- thinkphp封装短信宝验证码
- 2016校招offer
热门文章
- 车辆贷款违约预测 Top1(2021科大讯飞)
- linux6.5防火墙开端口,Linux(CentOS6.5) 开放端口,配置防火墙
- centos进程php-fpm,CentOS 6.x 开启Nginx和Php-fpm状态统计
- HTTP的缺点与HTTPS
- 关闭Windows 2008下面应用程序出错后的提示
- 基于Jupyter Notebook---卷积神经网络的图像分类(keras对猫狗图像数据集进行分类)
- Java 多线程 之 wait等待 线程实例
- Windows 10 环境VS报表rdlc 中文乱码解决方案
- 机房三维(3D)监控系统和机房可视化动力环境监控系统两者有什么特点?
- C语言OJ项目参考(2963) 判断三角形