




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、页眉内容 C#API基础介绍 API(Application Programming Interface),我想大家不会陌生,它是我们Windows编程的常客, 虽然基于.Net平台的C#有了强大的类库,但是,我们还是不能否认API在Windows编程中 的重要性。大多数的编程语言都支持API编程,而.Net平台中的MFC ( Microsoft Foundation Class Library )构架本身就封装了大部分的API o 做为程序员,我们需要了解API从字面上了解便是编程接口,因此,做为开发者,需要了 解的只是API的使用方法。 API根据操作系统、处理器及功能性的不同而拥有很多不
2、同的类型。操作系统特用的 API: 每种操作系统都有许多通用的API以及一些特用的API ,这些特用的API只能在当前操 作系统中执行。 例如: Windows NT 支持 MS-DOS, Win16, Win32, POSIX (Portable Operating System Interface), OS/2 console API; 及 Win32 APIs. 而 Windows 95 支持 MS-DOS, Win16 以 Win16 接着添加下面的代码来声明一个API : Dlllmport(HUser32.dlln) public static extern int Message
3、Box(int h, string m, string c, int type); 此处Dlllmport属性被用来从不可控代码中调用一方法。” User32.dll 则设定了类库 名。Dlllmport属性指定dll的位置,这个dll中包括调用的外部方法。Static修饰符则声 明一个静态元素,而这个元素属于类型本身而不是上面指定的对象。extern则表示这个方法将 在工程外部执行,使用Dlllmport导入的方法必须使用extern修饰符。 MessageBox则是函数名,拥有4个参数,其返回值为数字。 大多数的API都能传递并返回值。 添中Click点击事件代码: protected v
4、oid button1 _Click(object sender, System.EventArgs e) ( MessageBox (0,API Message Box,API Demo,0); 编译并运行这个程序,当你点击按钮后,你将会看到对话框,这便是你使用的API函数。 使用结构体 操作带有结构体的API比使用简单的API要复杂的多。但是一旦你掌握了 API的过程, 那个整个API世界将在你的掌握之中。 下面的例子中我们将使用GetSystemlnfo API来获取整个系统的信息。 第一步还是打开C#建立一个FormI程,同样的添中一个Button按钮,在代码窗中输入 下面的代码,导入
5、Namespace : using ; 声明一个结构体,它将做为GetSystemlnfo的一个参数: StructLayout(LayoutKind.Sequential) public struct SYSTEMJNFO public uint dwOemld; public uint IpMinimumApplicationAddress; public uint IpMaximumApplicationAddress; public uint dwPageSize; public uint dwActiveProcessorMask; public uint dwNumberOfPro
6、cessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; 声明API函数: Dlllmport(nkernel32n) static extern void GetSystemlnfo(ref SYSTEMJNFO pSI); 添加下面的代码至按钮的点击事件处理中: 函数。 首先创建一个SYSTEMNFO结构体,并将其传递给GetSystemlnfo protected void
7、 butto_Click (object sender, System.EventArgs e) ( try SYSTEMJNFO pSI = new SYSTEM_INFO(); GetSystemlnfo(ref pSI); / / / 一旦你接收到返回的结构体,那么就可以以返回的参数来执行操作了。 (0,;: / / / catch(Exception er) MessageBox.Show (er Message); 调用API全部代码 /Created By Ajit Mungale 程序补充飞刀 namespace UsingAPI ( using System; using Sy
8、stem .Drawing; using System.Collections; using System.ComponentModel; using System.WinForms; using System.Data; using ; /Struct收集系统信息 StructLayout(LayoutKind.Seque ntial) public struct SYSTEMJNFO public uint dwOemld; public uint dwPageSize; public uint IpMinimumApplicationAddress; public uint IpMaxi
9、mumApplicati on Address; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocati on Granularity; public uint dwProcessorLevel; public uint dwProcessorRevision; ) /struct收集内存情况 StructLayout(LayoutKind.Seque ntial) public struct MEMORYST
10、ATUS public uint dwLength; public uint dwMemoryLoad; public uint dwTotalPhys; public uint dwAvailPhys; public uint dwTotalPageFile; public uint dwAvailPageFile; public uint dwTotalVirtual; public uint dwAvailVirtual; public class Forml : private comp onents; private menu About; private main Menul; p
11、rivate listBoxI; private buttonl; /获取系统信 自 Dlllmport(Mkernel32u) static extern void GetSystemlnfo(ref SYSTEM_INFO pSI); 获取内存信息 Dlllmport(”kemel32J 页眉内容 页眉内容 static extern void GlobalMemoryStatus(ref MEMORYSTATUS buf); / 处理器类型 public const int PROCESSOR_INTEL_386 = 386; public const int PROCESSOR_INT
12、EL_486 = 486; public const int PROCESSOR_INTEL_PENTIUM = 586; public const int PROCESSOR_MIPS_R4000 = 4000; public const int PROCESSOR_ALPHA_21064 = 21064; public Form1() In itializeComp on ent(); ) public override void Dispose() base.Dispose(); components.Dispose(); ) private void InitializeCompone
13、nt() p onents = new(); this.mai nMenul = new(); this.butt ord = new (); this.me nu About = new(); =new this.menuAbout; button 1 Location = new (148, 168); button 1 .Size = new (112, 32); buttonl.Tabindex = 0; buttonl.Text = buttonl.Click += new System.EventHandler (this.buttonl_Click); listBoxI 丄oca
14、tion = new(20, 8); listBoxI .Size = new(368, 147); listBoxI .Tabindex = 1; menuAbout.Text = menu About. I ndex = 0; menuAbout.Click += new System.EventHandler (this.menuAbout_Click); this.Text = System Information Using API; this.MaximizeBox = false; this.AutoScaleBaseSize = new (5, 13); this.Minimi
15、zeBox = false; this.Me nu = this.mai nMenul; this.ClientSize = new (408, 213); (this.listBoxI); (this.buttonl); protected void menuAbout_Click (object sender, System.EventArgs e) Form abt=new about(); abt.ShowDialog(); ,System.EventArgs e) protected void buttord_Click (object sender SYSTEMJNFO pSI =
16、 new SYSTEM_INFO(); GetSystemlnfo(ref pSI); string CPUType; switch (pSI.dwProcessorType) ( case PROCESSOR_INTEL_386 : CPUType= Intel 386”; break; case PROCESSOR_INTEL_486 : CPUType = Intel 486“ ; break; case PROCESSOR_INTEL_PENTIUM : CPUType = “Intel Pentium1; break; case PROCESSOR_MIPS_R4000 : CPUT
17、ype = “MIPS R4000; break; case PROCESSOR_ALPHA_21064 : CPUType = “DEC Alpha 21064”; break; default: CPUType = (unknown); ) listBoxI .Insertitem (0,Active Processor Mask : listBoxI .Insertitem (1 /Allocation Granularity : listBoxI .Insertitem (2,Number Of Processors : listBoxInsertltem (3,OEM ID list
18、BoxI .Insertitem (4,Page Size:+; listBoxI .Insertitem (5,Processor Level Value:+; listBoxI .Insertitem (6,Processor Revision:+ ; listBoxInsertltem (7,CPU type:+CPUType); listBoxI .Insertitem (8,Maximum Application Address: *+; listBoxI .Insertitem (9,Minimum Application Address: +; 从 GlobalMemoryStatus 获取返回值 MEMORYSTATUS memSt = new MEMORYSTATUS (); GlobalMemoryStatus (ref memSt); listBoxI .lnsertltem(10,Available (memSt.dwAvailPageFile/1024).ToString (); Page File :+ listBoxI .lnsertltem(11Available (memSt.dwAvailPhys/1024).ToString(); Physical Memory :H + li
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年企业间商业汇票贴现业务协议书
- 2025年正式版股权收益分配协议格式
- 2025年专业舞蹈艺术指导协议
- 2025年秋季青少年活动中心场地策划与维护协议
- 合同条款的法律风险控制策略
- 2025年典范珠宝客户满意服务协议
- 商业秘密保护的挑战与对策
- 2025年员工年终奖金发放标准协议
- 企业财务透明度与法律责任风险控制
- 智能化仓储与物资储备数字化转型
- 【护士资格考试】南京同仁医院模拟检测练习题
- (完整word版)省级温室气体清单编制指南
- 出版专业基础知识中级
- GB/T 9163-2001关节轴承向心关节轴承
- GB/T 7759-1996硫化橡胶、热塑性橡胶常温、高温和低温下压缩永久变形测定
- C919飞机试飞机组机务培训-动力装置课件
- 部编版高中语文必修下册文言文翻译及知识总结
- 物业工程部工具台帐
- 企业项目投资管理培训课件
- 中小尺寸oled电路设计及原理
- 烟道内喷涂施工方案
评论
0/150
提交评论