一、什么是Windows API?

  1.什么是Windows API?

  Windows 这个多作业系统除了协调应用程式的执行、分配内存、管理系统资源…之外, 她同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备…等目的,由於这些函数服务的对象是应用程式(Application), 所以便称之为 Application Programming Interface,简称 API 函数。WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。

  凡是在 Windows 工作环境底下执行的应用程式, 都可以调用Windows API。

  2.Windows API的历史与现状

  当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。而在WINDOWS程序设计领域处于发展的初期,WINDOWS程序员所能使用的编程工具唯有API函数,这些函数是WINDOWS提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。所以可以认为API函数是构筑整个WINDOWS框架的基石,在它的下面是WINDOWS的操作系统核心,而它的上面则是所有的华丽的WINDOWS应用程序。

  但是,没有合适的Windows编程平台,程序员想编写具有Windows风格的软件,必须借助API,API也因此被赋予至高无上的地位。那时的WINDOWS程序开发还是比较复杂的工作,程序员必须熟记一大堆常用的API函数,而且还得对WINDOWS操作系统有深入的了解。然而随着软件技术的不断发展,在WINDOWS平台上出现了很多优秀的可视化编程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。

  这些优秀可视化编程环境操作简单、界面友好(诸如VB、VC++、DELPHI等),在这些工具中提供了大量的类库和各种控件,它们替代了API的神秘功能,事实上这些类库和控件都是构架在WIN32 API函数基础之上的,是封装了的API函数的集合。它们把常用的API函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了WINDOWS应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。

  实际上如果我们要开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数,虽然类库和控件使应用程序的开发简单的多,但它们只提供WINDOWS的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用API函数来实现。

  这也是API函数使用的场合,所以我们对待API函数不必刻意去研究每一个函数的用法,那也是不现实的(能用得到的API函数有几千个呢)。正如某位大虾所说:API不要去学,在需要的时候去查API帮助就足够了。但是,许多API函数令人难以理解,易于误用,还会导致出错,这一切都阻碍了它的推广。本专题就是想帮助那些想快速掌握API函数用法的同志们。通过对API函数的分类,结合一些有趣的实例,应该可以达到快速掌握的目的。

----------------------------------------------------------------------------------------------------------------------------------------------

所谓API本来是为C和C++程序员写的。API说来说去,就是一种函数,他们包含在一个附加名为DLL的动态连接库文件中。用标准的定义来讲,API就是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,它使编程人员可以用不同类型的编程语言编制出的运行在Windows95和Windows NT操作系统上的应用程序。

API是Application Programming Interface的缩写,也就是应用程序调用系统功能的接口。Windows API主要包括系统定义的函数、消息及与之相关的数据类型。我们使用各种开发工具归根结底都是和API打交道。但是API本身比较难掌握,所以开发工具都提供了各种可视的或面向对象的手段,如控件、类等,来使用户即使不太了解API,也可以编写Windows程序。但是这些手段是有限的,不可能包括API的所有方面。所以一些复杂的功能仍然需要调用API来实现。

-----------------------------------------------------------------------------------

什么是API函数

Win32 API即为Windows应用程序编程接口(Application Programming Interface)。所有在Win32平台上运行的应用程序都可以调用这些函数。

  早期的PC机内存非常少,Windows的设计者们不仅要把大量的代码和资源放入,而且还要留出足够的空间让应用程序运行,解决这种矛盾的方法就是通过让多个程序共享常用的代码来实现,这些被共享的代码就是今天所说的API函数。

  随着软件技术的不断发展,在Windows平台上出现了很多优秀的可视化编程环境,程序员可以采用“所见即所得”的编程方式来开发具有精美用户界面和功能的应用程序。这些可视化编程环境操作简便、界面友好,比如:Visual C++、Delphi和Visual Basic等。在这些工具中提供了大量的控件,实现了API的部分功能,加速了Windows应用程序的开发。但程序员要想开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数。


  API函数的分类

表1

分类

单元

功能及库文件

基本管理

windows

操作系统的基本功能,提供分配内存、
管理任务、装入资源、文件操作等

shell例程

shellapi

win32提供的外壳例程,
如加载其它程序、管理登录等

mci接口

mmsystem

多媒体mci编程接口(winmm.dll)

注册表管理

regstr

win32系统中注册表的管理

消息传送接口

mapi

微软消息传送系统的编程接口(mapi32.dll)

winsocket

winsock

winsocket网络编程接口(wsock32.dll)

标准对话框

comdlg

win32的标准对话框,如打开文件、
打印等(comdlg32.dll)

activex

activex

对象连接与嵌入ole函数

win32外壳扩展

shlobj

针对系统外壳的编程接口,
对资源管理器的某些功能或对象进行扩展

  API函数按不同功能被存放在不同的动态链接库文件中,这些动态链接库文件一般是以DLL为扩展名。在表1中,列举出了编程时较常用的几大类API函数及其主要功能、库文件名和对应的Delphi单元。

  Delphi调用API函数实例

  Delphi中定义了相应单元,给出了所有Win32 API函数的接口。Delphi调用API函数非常简单,甚至不需要声明外部引用,只需将使用的单元名放在Uses子句中就可以,其它的工作全部由系统定义的单元完成。下面,我们给出几个Delphi中使用API函数的实例,帮助大家理解。

  1、在“文档”菜单中添加新项及清空项目

  在Windows的开始菜单中有一个文档菜单,保存了最近处理过的文档信息,如何增加新项或将其清空呢?我们可以利用API函数SHAddtoRecentDocs()来实现,它定义在Shlobj单元中,使用前要先在Uses中加以说明。下面为处理方法:

  uses shlobj;

  procedure TForm1.Button1Click(Sender: TObject);

  begin

   SHAddtoRecentDocs(SHARD_PATH, Pchar('c:/mydir/aaa.txt')); //增加新的一项

  end;

  procedure TForm1.Button2Click(Sender: TObject);

  begin

   SHAddtoRecentDocs(SHARD_PATH, nil); //清空文档菜单

  end;

  2、使窗口标题栏闪烁

  在Windows中,常用窗口标题栏的闪烁来提醒用户,向你的程序中加入这一功能一定很有意思。API函数Flash Windows( )可以使一个特定的窗口闪动一次,如果将其放在计时器中调用,标题栏闪烁就很容易实现。

  procedure TForm1.Button1Click(Sender: TObject);

  begin

   Timer1.Interval:=500; //计时器的间隔时间,每500毫秒触发一次

   Timer1.Enabled:=Not Timer1.Enabled; //切换计时器的激活或停止状态

  end;

  procedure TForm1.Timer1Timer(Sender: TObject);

  begin

   FlashWindow(Form1.Handle,TRUE); //闪烁标题栏

  end;

  FlashWindows()有两个参数:第一个参数指明窗口的句柄;第二个参数指定窗口是闪动还是恢复始状态。这个函数定义在Windows单元中,是Delphi的缺省单元,故不必再用Uses子句进行说明。

  3、在程序中播放WAV声音文件

  Windows启动时那声嘹亮的号角声是否让你感到振奋。OK!让我们在自己的程序中来实现它。仅仅播放一个WAV声音文件,当然不需要劳驾MediaPlayer构件,API函数SndPlaySound()就可以很好地完成这一工作。它定义在MMSystem单元中,有两个参数:第一个指明WAV文件的路径、文件名;第二个指明播放方式。实例如下:

  uses MMSystem;

  procedure TForm1.FormCreate(Sender: TObject);

  begin

   SndPlaySound('c:/windows/media/tada.wav',SND_ASYNC)

  end;

-------------------------------------------------------------------------------------

作为一个编程初学者来说,API函数也许是一个时常耳闻却感觉有些神秘的东西。单看它的复杂语法,就足令人望而生畏,但是任何事物在我们深入了解它之前,总是会有这种感觉的。我们这篇API入门教程的目的,就是要把API函数的来龙去脉告诉大家,破除对API函数的畏惧,使它成为我们编程的好助手。

大家可能在许多书上看到过API的英文全称(Application Programming Interface),WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。对这个定义的理解,需要追溯到操作系统的发展历史上,当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。而在WINDOWS程序设计领域处于发展的初期,WINDOWS程序员所能使用的编程工具唯有API函数,这些函数是WINDOWS提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。所以可以认为API函数是构筑整个WINDOWS框架的基石,在它的下面是WINDOWS的操作系统核心,而它的上面则是所有的华丽的WINDOWS应用程序。

但是,那时的WINDOWS程序开发还是比较复杂的工作,程序员必须熟记一大堆常用的API函数,而且还得对WINDOWS操作系统有深入的了解。然而随着软件技术的不断发展,在WINDOWS平台上出现了很多优秀的可视化编程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。

这些优秀可视化编程环境操作简单、界面友好(诸如VB、VC++、DELPHI等),在这些工具中提供了大量的类库和各种控件,它们替代了API的神秘功能,事实上这些类库和控件都是构架在WIN32 API函数基础之上的,是封装了的API函数的集合。它们把常用的API函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了WINDOWS应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。

实际上如果我们要开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数,虽然类库和控件使应用程序的开发简单的多,但它们只提供WINDOWS的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用API函数来实现。

这也是API函数使用的场合,所以我们对待API函数不必刻来研究每一个函数的用法,那也是不现实的(能用的到的API函数有几千个呢)。正如某位大虾所说:API不要去学,在需要的时候去查API帮助就足够了。

APIT INTRODUCT相关推荐

  1. FOX-Toolkit: Introduct

    ---- TOPIC TITLE WITH LOGO---> FOX-Toolkit:介绍 [Remove Frame] 为了以图解的方式来讲解你可以用来构建FOX应用程序的工具, 我们会展示一 ...

  2. 基于三角形重心扫描算法的APIT定位算法

    APIT定位算法的核心内容分两部分: APIT测试(使用面积法判断三角形内点): 设待定位节点为M,要对3个参考节点A,B,C组成的三角形区域△ABC进行APIT测试.对 于节点M,假设在广播消息阶段 ...

  3. Visual Studio 2005/2008/2010 简单更换配色主题(转自:http://apit.blogbus.com/logs/84846293.html)

    其实原来也没有什么简单的办法直到出现了这个站点, studiostyles 这个站点以导出的设置形式来提供支持 VS 2005/2008/2010的配色方案,并且有一个非常方便的工具用来制作自己的配色 ...

  4. 每天一本电子书 - JavaScript for Kids: A Playful Introduct

    JavaScript for Kids: A Playful Introduction to Programming 作者: Nick Morgan  出版社: No Starch Press 副标题 ...

  5. Briefly Introduct Direct-Boot FBE

    What is Direct Boot? Starting with Android N, a device that has been powered on can boot into a new ...

  6. php创建菜单_php实现微信公众号创建自定义菜单功能的实例代码

    目的 创建自定义菜单,实现菜单事件. 首先获取Access_Token 接口: 我用的是测试号,修改APPID和APPSECRET,然后浏览器访问上面这个Url即可生成Access_Token 然后配 ...

  7. 启明星会议室系统与Office365集成说明

    在本文,我们将介绍如何配置Office365,以便改系统能够支持启明星会议室预定系统. In this article, we will introduct how to config microso ...

  8. 重庆市公安局北碚分局所需容灾备份设备及软件采购

      项目编号:BBZC12-106-1 项目名称:重庆市公安局北碚分局所需容灾备份设备及软件采购 重庆市北碚区公共资源综合交易中心 二〇一二年六月二十五日 第一部分 招标邀请书 重庆市北碚区公共资源综 ...

  9. 机器人学习--室内定位方法综述

    参考:移动机器人室内定位技术综述:笔记-1 - 知乎搜素关键词: "indoor location", "indoor localization", " ...

最新文章

  1. python使用教程pandas-python学习教程之Numpy和Pandas的使用
  2. A free SSH client - putty[]
  3. 希捷推2TB 2.5英寸SSHD和5TB 2.5英寸机械硬盘
  4. python生成一定范围的符合正态分布的数
  5. awesome字体图标库
  6. Flink SQL Client讀取csv中的數據(轉載+總結)
  7. 在Centos 6.5 X64下切割m3u8
  8. Python 3 Basics
  9. 小红书成立六周年内部信:月活用户量已经突破8500万
  10. 六、hibernate之HQL
  11. linux grub.cnf grub64.efi 文件
  12. F2FS源码分析-1.1 [F2FS 元数据布局部分] F2FS文件系统的总体结构
  13. 开源开放 | OMAHA 联合 OpenKG 发布新冠诊疗图谱数据
  14. 被王思聪抽奖炸了的微博,究竟是算法背锅还是自己作死?
  15. 张朝阳也看蜗居,这段采访很有趣
  16. 用VBA程序开发Excel工具
  17. 02335网络操作系统
  18. Druid 索引服务的资源精细化调度
  19. Python+tkinter库实现简单图书管理系统
  20. VUE抽奖大转盘制作

热门文章

  1. 自建rtmp、rtsp媒体服务器及遇到的问题
  2. vs和vc的对应关系
  3. 电子皮带秤称重传感器电阻如何测量好坏判断
  4. 力扣(leetcode)[453. 最小操作次数使数组元素相等]我见识到了,算法的终极是数学
  5. BAT 开发工具汇总
  6. Dynamo绘制锚下螺旋筋
  7. 计算机在化工设计中的应用论文,计算机软件技术在化工设计的应用-软件技术论文-计算机论文(9页)-原创力文档...
  8. 阿里首创7天全薪陪伴假,员工关怀卷起来了?
  9. 3D模型欣赏:《转变》次时代 写实 战争 【3D游戏建模教程】
  10. java 解析修改dex_Android dex文件解析