APIT INTRODUCT
一、什么是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函数
早期的PC机内存非常少,Windows的设计者们不仅要把大量的代码和资源放入,而且还要留出足够的空间让应用程序运行,解决这种矛盾的方法就是通过让多个程序共享常用的代码来实现,这些被共享的代码就是今天所说的API函数。
随着软件技术的不断发展,在Windows平台上出现了很多优秀的可视化编程环境,程序员可以采用“所见即所得”的编程方式来开发具有精美用户界面和功能的应用程序。这些可视化编程环境操作简便、界面友好,比如:Visual C++、Delphi和Visual Basic等。在这些工具中提供了大量的控件,实现了API的部分功能,加速了Windows应用程序的开发。但程序员要想开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数。
API函数的分类
分类 |
单元 |
功能及库文件 |
基本管理 |
windows |
操作系统的基本功能,提供分配内存、 |
shell例程 |
shellapi |
win32提供的外壳例程, |
mci接口 |
mmsystem |
多媒体mci编程接口(winmm.dll) |
注册表管理 |
regstr |
win32系统中注册表的管理 |
消息传送接口 |
mapi |
微软消息传送系统的编程接口(mapi32.dll) |
winsocket |
winsock |
winsocket网络编程接口(wsock32.dll) |
标准对话框 |
comdlg |
win32的标准对话框,如打开文件、 |
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的英文全称(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相关推荐
- FOX-Toolkit: Introduct
---- TOPIC TITLE WITH LOGO---> FOX-Toolkit:介绍 [Remove Frame] 为了以图解的方式来讲解你可以用来构建FOX应用程序的工具, 我们会展示一 ...
- 基于三角形重心扫描算法的APIT定位算法
APIT定位算法的核心内容分两部分: APIT测试(使用面积法判断三角形内点): 设待定位节点为M,要对3个参考节点A,B,C组成的三角形区域△ABC进行APIT测试.对 于节点M,假设在广播消息阶段 ...
- Visual Studio 2005/2008/2010 简单更换配色主题(转自:http://apit.blogbus.com/logs/84846293.html)
其实原来也没有什么简单的办法直到出现了这个站点, studiostyles 这个站点以导出的设置形式来提供支持 VS 2005/2008/2010的配色方案,并且有一个非常方便的工具用来制作自己的配色 ...
- 每天一本电子书 - JavaScript for Kids: A Playful Introduct
JavaScript for Kids: A Playful Introduction to Programming 作者: Nick Morgan 出版社: No Starch Press 副标题 ...
- 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 ...
- php创建菜单_php实现微信公众号创建自定义菜单功能的实例代码
目的 创建自定义菜单,实现菜单事件. 首先获取Access_Token 接口: 我用的是测试号,修改APPID和APPSECRET,然后浏览器访问上面这个Url即可生成Access_Token 然后配 ...
- 启明星会议室系统与Office365集成说明
在本文,我们将介绍如何配置Office365,以便改系统能够支持启明星会议室预定系统. In this article, we will introduct how to config microso ...
- 重庆市公安局北碚分局所需容灾备份设备及软件采购
项目编号:BBZC12-106-1 项目名称:重庆市公安局北碚分局所需容灾备份设备及软件采购 重庆市北碚区公共资源综合交易中心 二〇一二年六月二十五日 第一部分 招标邀请书 重庆市北碚区公共资源综 ...
- 机器人学习--室内定位方法综述
参考:移动机器人室内定位技术综述:笔记-1 - 知乎搜素关键词: "indoor location", "indoor localization", " ...
最新文章
- python使用教程pandas-python学习教程之Numpy和Pandas的使用
- A free SSH client - putty[]
- 希捷推2TB 2.5英寸SSHD和5TB 2.5英寸机械硬盘
- python生成一定范围的符合正态分布的数
- awesome字体图标库
- Flink SQL Client讀取csv中的數據(轉載+總結)
- 在Centos 6.5 X64下切割m3u8
- Python 3 Basics
- 小红书成立六周年内部信:月活用户量已经突破8500万
- 六、hibernate之HQL
- linux grub.cnf grub64.efi 文件
- F2FS源码分析-1.1 [F2FS 元数据布局部分] F2FS文件系统的总体结构
- 开源开放 | OMAHA 联合 OpenKG 发布新冠诊疗图谱数据
- 被王思聪抽奖炸了的微博,究竟是算法背锅还是自己作死?
- 张朝阳也看蜗居,这段采访很有趣
- 用VBA程序开发Excel工具
- 02335网络操作系统
- Druid 索引服务的资源精细化调度
- Python+tkinter库实现简单图书管理系统
- VUE抽奖大转盘制作
热门文章
- 自建rtmp、rtsp媒体服务器及遇到的问题
- vs和vc的对应关系
- 电子皮带秤称重传感器电阻如何测量好坏判断
- 力扣(leetcode)[453. 最小操作次数使数组元素相等]我见识到了,算法的终极是数学
- BAT 开发工具汇总
- Dynamo绘制锚下螺旋筋
- 计算机在化工设计中的应用论文,计算机软件技术在化工设计的应用-软件技术论文-计算机论文(9页)-原创力文档...
- 阿里首创7天全薪陪伴假,员工关怀卷起来了?
- 3D模型欣赏:《转变》次时代 写实 战争 【3D游戏建模教程】
- java 解析修改dex_Android dex文件解析