c源码运用api函数获取系统信息

c源码运用api函数获取系统信息

ID:20364992

大小:286.05 KB

页数:6页

时间:2018-10-12

c源码运用api函数获取系统信息_第1页
c源码运用api函数获取系统信息_第2页
c源码运用api函数获取系统信息_第3页
c源码运用api函数获取系统信息_第4页
c源码运用api函数获取系统信息_第5页
资源描述:

《c源码运用api函数获取系统信息》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、运用API函数获取系统信息API函数是构筑Windows应用程序的基石,足Windows编程的必备利器。每一种Windows应用程序幵发工具都提供了间接或直接调用了WindowsAPI函数的方法,或者是调用WindowsAPI函数的接口,也就是说具备调用动态连接库的能力。VisualC#和艽它开发工具一样也能够调川动态链接库的API函数。木文中笔者就结合实例向大家介绍在VisualC#巾如何调用各种返回值的API,该实例就是一个通过API函数调用荻取系统信息的程序。在VisualC#中调用API的基本过程:首先,在调用API之前,你必须先导入Syst

2、em.Runtime.InteropServices这个名称空间。该名称空间包含了在VisualC#中调川API的一些必要集合,具体的方法如下:usingSystem.Runtime.InteropServices;在导入了名称空间后,我们要声明在程序中所要用到的API函数。我们的程序主要是获取系统的相关信息,所以用到的API函数都是返回系统信息的。先给出在VisualC#中声明API的方法:[Dlllmport("kemel32")】publicstaticexternvoidGetWindowsDirectory(StringBuilderWin

3、Dir,intcount);其中,"Dlllmport"厲性用来从不可控代码屮调用一个方法,它指定了DLL的位置,该DLL中含调用的外部方法;nkemel32”设定了类库名;"public"指明函数的访问类型为公存的;"static”修饰符声明一个静态元素,而该元素属于类型木身而不是指定的对象;"extern"表示该方法将在工程外部执行,同时使用Dlllmport导入的方法必须使用"extern"修饰符;最后GetWindowsDirectory函数包含了两个参数,一个为StringBuilder类型的,另一个为int类型的,该方法返回的内容存在于S

4、tringBuilder类型的参数屮。同时,因为我们在这里使用到了StringBuilder类,所以在程序的开始处,我们还得添加System.Text这个名称空间,方法同上。M•他几个API函数的声明如下:[Dlllmport("kemel32”)]publicstaticexternvoidGetSystemDirectory(StringBuilderSysDirJntcount);[Dlllmport("kernel32n)]publicstaticexternvoidGetSystemlnfo(refCPUJNFOcpuinfo);[Dlll

5、mport("kernel32,')]publicstaticexternvoidGlobalMemoryStatus(refMEMORYJNFOmeminfo);[Dlllmport(nkernel32")]publicstaticexternvoidGetSystemTime(refSYSTEMTIMEJNFOstinfo);以上几个API的作用分别是获取系统路径,获得CPU相关信息,获得内存的相关信息,获得系统时I'Hj等。在声明完所有的API函数后,我们发现后三个函数分別用到了CPUJNFO、MEMORYJNFO、SYSTEMTIMEJNFO

6、等结构,这些结构并非是.Net内部的,它们从何而來?¥实,我们在用到以上API调用时均需用到以上结构,我们将函数调川获得的信息存放在以上的结构体中,最后返回给程序输出。这些结构体比较复杂,但是如果开发者能够熟练运用,那么整个API世界将尽在幵发者的掌握之屮。以下就是上述结构体的声明://定义以下各结构//定义CPU的信息结构[StructLayout(LayoutKind.Sequential)]publicstructCPUJNFO{publicuintdwOemld;publicuintdwPageSize;publicuintIpMinimum

7、ApplicationAddress;publicuintIpMaximumApplicationAddress;publicuintdwActiveProcessorMask;publicuintdwNumberOfProcessors;publicuintdwProcessorType;publicuintdwAllocationGranularity;publicuintdwProcessorLevel;publicuintdwProcessorRevision;}//定义内存的信息结构[StructLayout(LayoutKind.Sequ

8、ential)]publicstructMEMORYJNFO{publicuintdwLength;publ

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。