View Post
API应用程序接口
作者:Jackie 发文时间:2005.04.05 赛迪网
API是一组作为应用程序呼叫某个功能与服务的函数。程序设计师可依据API函数撰写程序,让操作系统或某个程序激活某个程序以执行特定的功能。
例如,WIN32 API就是Microsoft Windows 32位平台的应用程序接口。Windows API 就像是Windows与某支程序之间的接口;也像积木一般,可以架构出各种接口丰富、功能灵活的应用程序。
基本上,API是操作系统的框架,通常包含在名为.DLL的动态连接库文件中,可控制Windows各个组件、外观与服务。而这一套事先预定的函数,可与在API下方的操作系统的核心沟通,进而呼叫其它程序或服务,且让程序设计师依据API,架构出各种的Windows应用程序。
大多数的开发工具,如VB、VC++、DELPHI等,都事先提供大量的函式库与控件目,而这些函数就是架构在WIN32 API之上,等于是封装所有函数的集合,让程序设计师可将心血投注于软件功能设计,而非与操作系统或其它程序沟通的技术细节,对于加速应用程序开发大有帮助。
*什么是Windows API
首先在这里先纠正一个大家的常见错误,API,大家老是在问API怎么用,实现什么什么功能调用什么样的API,都没有在前面加入Windows ,这样是不规范的,API(Application Programming Interface)是应用程序接口的意思,EXCEL有API,dos有API,你问的是什么呢?也许太严格了,但是对你有好处,因为我给一个外企做程序的时候,注解里有调用xxxxx API函数,他们就问我是什么的API,搞的我很狼狈!
到底什么是Windows API呢?
Windows API即为Microsoft 32位平台的应用程序编程接口(Application Programming Interface)。所有在Win32平台上运行的应用程序都可以调用这些函数。
使用Windows API,应用程序可以充分挖掘Windows的32位操作系统的潜力。 Mircrosoft的所有32位平台都支持统一的API,包括函数、结构、消息、宏及接口。使用 Windows API不但可以开发出在各种平台上都能成功运行的应用程序,而且也可以充分利用每个平台特有的功能和属性。
在具体编程时,程序实现方式的差异依赖于相应平台的底层功能的不同。最显著的差异是某些函数只能在更强大的平台上实现其功能。例如,安全函数只能在Windows NT操作系统下使用。另外一些主要差别就是系统限制,比如值的范围约束,或函数可管理的项目个数等等。
还有一种理解的方法:
API只不过是一系列函数的组合,可以让程序员来调用,从技术角度来看,可以将DOS中断函数当做DOS API,你用dBase开发程序,那么你调用的是dBase API
你使用Visual Basic 的 OLE控制ExceL,那么你就是使用了eXCEL的API。这样是不是更好理解呢?
标准Windows API函数可以分为以下几类:
窗口管理
窗口通用控制
Shell特性
图形设备接口
系统服务
国际特性
网络服务
为什么使用 Windows API
在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API函数。这些函数在程序员手中犹如“积木块”一样,可搭建出各种界面丰富、功能灵活的应用程序。不过,由于这些函数结构复杂,所以往往难以理解,而且容易误用。
随着软件技术的不断发展,在Windows平台上出现了很多优秀的可视化编程环境,程序员可以采用“所见即所得”的编程方式来开发具有精美用户界面和功能的应用程序。这些可视化编程环境操作简便、界面友好,比如:Visual C++,Delphi,Visual Basic等等。在这些工具中提供了大量的类库和各种控件,它们替代了API的神秘功能。事实上,这些类库和控件都是构筑在Windows API的基础上的,但它们使用方便,加速了Windows应用程序的开发,所以受到程序员的普遍采用。有了这些类库和控件,程序员们便可以把主要精力放在整体功能的设计上,而不必过于关注具体细节。不过,这也导致了非常多的程序员在类库面前“固步自封”,对下层API函数的强大功能一无所知。
实际上。程序员要想开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数。虽然类库和控件使应用程序的开发容易得多,但它们只提供Microsoft Windows的一般功能,对于一些比较复杂和特殊的功能来说,单使用类库和控件是难以实现的,必须直接使用API函数来编写。API函数是构筑整个Windows框架的基石,只有充分理解和利用API函数,才能深入到Windows的内部,充分发挥各种32位平台的强大功能和灵活性,才能成功地扩展和突破类库、控件和可视开发环境的限制。