API,全称Application Programming Interface,即应用程序编程接口。
API是一些预先定义函数,目的是用来提供应用程序与开发人员基于某软件或者某硬件得以访问一组例程的能力,并且无需访问源码或无需理解内部工作机制细节。
API就是 *** 作系统给应用程序的调用接口,应用程序通过调用 *** 作系统的 API而使 *** 作系统去执行应用程序的命令(动作)。在 Windows 中,系统API是以函数调用的方式提供的。
SDA和API
可以认为API是包含在SDK中的:SDK是一系列文件的组合,包括lib、dll、h、文档、示例等;API是对程序而言的,提供用户编程时的接口,即一系列模块化的类和函数。
API与GUI
两者都属于直接用户接口,不同的是API接口属于一种 *** 作系统或程序接口,但是GUI接口属于一种图形 *** 作系统。
扩展资料:
API分类
1Windows API:Windows application programming interface(WIndows应用程序接口)
Windows安装完,系统就有了一套简单的SDK,包含了一套完整的基础Windows API,如果安装VC或下载新的SDK后,就可以使用更加丰富的Windows API了。
凡是在 Windows工作环境底下执行的应用程序,都可以调用Windows API。
2linux API:linux application programming interface(linux应用程序接口)
在linux中,用户编程接口API遵循了UNIX中最流行的应用编程界面标准——POSIX标准。
-api(应用程序编程接口)
-SDK/API
API(Advanced Programmers Interface,高级程序员接口)(注:API实际是指Application Programming Interface,应用程序编程接口;此处疑为原文错误,不过在VB中也可以这么说吧!)是一套用来控制Windows的各个部件(从桌面的外观到位一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数用户的每个动作都会引发一个或几个函数的运行以Windows告诉发生了什么
这在某种程度上很象Windows的天然代码其他的语言只是提供一种能自动而且更容易的访问API的方法VB在这方面作了很多工作它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法
这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows例如,Form1PrintVB 将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数
同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Button_Click)
API函数包含在Windows系统目录下的动态连接库文件中(如User32dll,GDI32dll,Shell32dll)
API 声明
正如在"什么是API"中所说,API函数包含在位于系统目录下的DLL文件中你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用API Text Viewer
要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32apitxt(或MDB如果你已经把它转换成了数据库的话,这样可以加快速度注:微软的这个文件有很多的不足,你可以试一下本站提供下载的api32txt),选择"声明",找到所需函数,点击"添加(Add)"并"复制(Copy)",然后粘贴(Paste)到你的工程里使用预定义的常量和类型也是同样的方法
你将会遇到一些问题:
假设你想在你的窗体模块中声明一个函数粘贴然后运行,VB会告诉你:编译错误Declare 语句不允许作为类或对象模块中的 Public 成员看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(如 Private Declare Function)--不要忘了,可是这将使该函数只在该窗体模块可用
在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数常量或其他的什么东西共用了一个名称由于绝大多数的函数(也可能是全部,我没有验证过)都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行
你可以通过查看VB的Declare语句帮助主题来获取有关Alias的详细说明
消息(Messages)
好了,现在你已经知道什么是API函数了,但你也一定听说过消息(如果你还没有,你很快就会)并且想知道它是什么消息是Windows告诉你的程序发生了哪些事件或要求执行特定 *** 作的基本方法例如,当用户点击一个按钮,移动鼠标,或是向文本框中键入文字时,一条消息就会被发送给你的窗体
所有发送的消息都有四个参数--一个窗口句柄(hwnd),一个消息编号(msg)还有两个32位长度(Long)的参数
hwnd即要接受消息的一个窗口的句柄,msg即消息的标识符(编号)该标识符是指引发消息的动作类型(如移动鼠标),另外两个参数是该消息的附加参数(例如当鼠标移动时光标的当前位置)
但是,当消息发送给你时你为什么看不到呢--就象有人在偷你的信一样请先别恼火,让我告诉你
小偷其实是Visual Basic但它并没有偷走你的信,而是在阅读了之后挑出重要的以一种好的方式告诉你这种方式就是你代码中的事件(Event)
这样,当用户在你的窗体上移动鼠标时,Windows会发送一条WM_MOUSEMOVE消息给你的窗口,VB得到这条消息以及它的参数并运行你在事件MouseMove中的代码,同时VB会把这条消息的第二个32位数(它包含了x,y坐标,单位为像素(Pixel),每个位16位)转换为两个单精度数,单位为缇(Twip)
现在,如果你需要光标坐标的像素表示,然而VB已经把它转换成了缇,因此你需要重新把它转换为以像素为单位在这里,Windows给了你所需要的,但VB"好意地"进行了转换而使你不得不重新转换你可能会问--我难道不能自己接收消息吗答案是肯定的,你可以使用一种叫做子类处理(Subclass)的方法但你除非必须否则最好不要使用,因为这与VB的安全程序设计有一点点的违背(注:子类处理确实有很大的风险,但如果使用得当,是很有用处的不过有一点一定要注意,即千万不要使用VB的断点调试功能,这可能会导致VB崩溃!)
需要补充说明的是:你可以发送消息给你自己的窗口或其他的窗口,只需调用SendMessage或PostMessage(SendMessage会使接受到消息的窗口立刻处理消息,而PostMessage是把消息发送到一个称为消息队列的队列中去,等候处理(它将会在该消息处理完后返回,例如有些延迟))你必须制定接受消息的窗口的句柄,欲发送消息的编号(所有的消息的编号均为常量,你可以通过API Text Viewer查得)以及两个32位的参数。
另一种含义:
1:美国石油协会(API:American Petrolenm Institute):制定机油标准的组织。汽车用发动机机油必须符合API提出的标准。
2:API还有一种含意:空气污染指数。英文 air pollution index 的缩写
3:在JAVA中,API除了有应用“程序程序接口”的意思外,还特指JAVA API的说明文档,也称为JAVA帮助文档。
在这里定义
local external funtions
或
global external funtions
例如:
Function ULong lstrcpy(Ref String lpString1,Ref ULong lpString2) Library "kernel32dll"
然后
程序里直接使调用
首先,要知道: *** 作系统与用户间的接口有两种,一种是命令接口,另一种是程序接口。
什么是命令接口:
为了便于用户直接或者间接地控制自己的作业, *** 作系统向用户提供了命令接口,用户可以通过该接口向作业发出命令以控制作业的运行。该接口又进一步分为联机用户接口和脱机用户接口。(
参考资料:
什么是程序接口:
程序接口是提供给程序员在编程时使用的接口,是用户的程序取得 *** 作系统服务的唯一途径。可以说,程序接口是为用户程序在执行中访问系统资源而设置的。程序接口由一组系统调用命令(简称系统调用)组成。用户通过在程序中使用这些系统调用命令来请求 *** 作系统提供服务。
系统调用详解:
系统调用就是用户在程序中调用 *** 作系统所提供的一些子功能,每一个系统调用都是一个能完成特定功能的子程序。具体讲,系统调用就是通过系统调用命令中断现行的用户程序,而转去执行相应的子程序,以完成特定的系统功能;系统调用完成后,控制又返回到系统调用命令的下条指令,被中断的程序将继续执行下去。
需要注意的是:系统调用的执行是在管态下运行的。
Windows系统调用:
Windows *** 作系统提供了丰富的系统调用,这些系统调用又被进一步编写成不同的库函数后放入动态链接库DLL(DLL是动态链接库的英文缩写,全称是是Dynamic Link Library)中,这些库函数构成了Windows *** 作系统提供给程序员的编程界面,这个编程界面被称为应用编程接口API。
库函数:百科上的解释是:库函数顾名思义是把函数放到库里是别人把一些常用到的函数编完放到一个文件里,供别人用。别人用的时候把它所在的文件名用#include<>加到里面就可以了。
库分动态链接库和静态链接库。这些库是通过编译连接生成的(在编译软件里,可以设置文件生成库文件还是普通的EXE文件)。
其实库函数就好比是在word文件里写了几篇作文,然后保存成一个word文档,那么这个word文档就相当于一个库,里面的每一篇作文都是一个库函数。
动态链接库的英文缩写是DLL,Windows中,动态链接库一般被存放在C:\Windows\System目录下,DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。
所以说:API函数可以看做是一些函数,在windows *** 作系统下,这些函数通常存放在动态链接库中,其头文件通常包含在windowsh中(windowsh是VC 或者VS中带的)。这些存放在动态链接库里的API函数是 *** 作系统与用户程序之间的唯一接口,用户程序只能通过这些库函数(API函数)请求 *** 作系统服务,即用户程序只能通过这些存放在动态链接库里的API函数来实现系统调用。当用户程序中使用了这些API函数时,通常会发生系统调用, *** 作系统进入管态下运行,系统调用结束后,再返回到用户程序继续往下执行。
其实,C语言中最常用的printf和scanf函数,最后都是通过系统调用来完成的不止这两个函数,其实C语言的标准库函数,很多都是通过系统调用实现的。而要使用系统调用,windows下必然要使用存放在动态链接库里的API函数。当然,我们在程序中也可以不采用系统调用,因为没人规定你必须使用系统调用(当然,有时候采用系统调用会简单的多)。比如完成一个简单的加法运算程序,又比如单片机C语言编程,都没有系统调用。
许多应用软件,安装后,在其目录文件夹里通常会有一些DLL文件,这些DLL就是给该软件来调用的。
网上对API的解释如下:
API是系统的基石,是Windows的一砖一瓦。
明确一个概念,软件是运行在系统平台的支持上的,软件的功能其实就是向系统伸请,并由系统完成这些功能的过程。
那么软件要做的事情如何传递给系统呢,也就是这些API的作用了,系统定义了这些API函数,做为支持软件执行系统功能的接口。
不同的 *** 作系统自然API会是不同的
mfc就是对api的封装啊就是很好的例子,候杰的深入浅出mfc正是讲这些原理的
一、在VB中声明API函数有两种方法:如果我们只在某个窗体中使用API函数,我们可以在窗体代码的
General部分声明它:
声明的语法是:
Private Declare Function
Private Declare Sub
这里必须采用Private声明,因为这个API函数只能被一个窗体内的程序所调用。
如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同一个API函数,就需要在模块中
声明了。
先添加一个模块(如图示),
然后采用如下语法声明:
Public Declare Function
Public Declare Sub
Public声明的含义是把API函数作为一个公共函数或过程,在一个工程中的任何位置(包括所有的窗
体和模块)都能直接调用它。声明完毕我们就能在程序中使用此API函数了。
二、可采用以下几种方式使用API函数,以SetWindowPos函数为例:
(1)忽略函数返回值的调用:
SetWindowPos Form1hWnd, -2 ,0 ,0 ,0, 0, 3
注意此时函数的参数是不加括号的。
(2)Call方法调用:
Call SetWindowPos(Form1hWnd, -2, 0, 0, 0, 3)
注意这里需要加上括号,但我们不取回函数的返回值。
(3)取得函数返回值的调用:
MyLng = SetWindowPos(Form1hWnd, -2, 0, 0, 0, 3)
此时需要加上括号,而且我们必须事先定义一个变量(变量的类型与函数返回值类型相同)来存储
API函数的返回值。
三、几个问题的说明:
(1)声明中的Lib 和 Alias 是怎么回事
一般情况下WIN32API函数总是包含在WINDOWS系统自带的或是其它公司提供的动态连接库DLL中,而
Declare语句中的Lib关键字就用来指定DLL(动态连接库)文件的路径,这样VB才能找到这个DLL文件,然
后才能使用其中的API函数。如果我们只是列出DLL文件名而不指出其完整的路径的话,VB会自动到EXE文
件所在目录、当前工作目录、WINDOWS\SYSTEM目录、WINDOWS目录下搜寻这个DLL文件。所以如果所要使用
DLL文件不在上述几个目录下的话,我们应该指明其完整路径。
Alias用于指定API函数的别名,如果我们调用的API函数要使用字符串(参数中包含String型)的话
,Alias关键字是必须的。这是因为在ANSI和Unicode字符集中同一API函数的名称可能是不一样的,为了
保证不出现声明错误,我们使用Alias关键字指出API函数的别名,一般来说在WIN9X平台下我们把API函数
名后加一个大写A作为别名即可。
(2)常见的API参数类型的说明
API函数的参数中最常见的是长整Long型数据类型,例如API中的句柄、一些特定的常量、函数的返回
值都是此类型 的值;另外几种常见的参数类型有:整型Integer、Byte型、String型等。
(3)声明中的ByVal是作什么用的
这跟VB的参数传递方式有关,在默认情况下VB是通过地址传递方式传递函数的参数、而有些API函数
要求必须采用传值方式来传递函数参数(这两种参数传递方式是不同的,前者传递的是一个指针,而后者
要求是参数真实的值)。这样就会发生错误,解决的办法是在API函数参数声明的前面加上ByVal关键字,
这样VB就采用传值方式传递参数了。
(4)怎样得到完整的API函数声明
VB自带了API文本查看器API TEXT VIEWER,我们可以在其中找到API函数的完整声明,然后把它粘贴
到程序中即可。
API也就是Microsoft Windows 32位平台的应用程序编程接口。Windows这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外, 同时也是一个很大的服务中心,调用这个服务中心的各种服务,可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序,所以便称之为Application Programming Interface,简称API函数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)