1.API函数
作为一个编程初学者来说,API函数也许是一个时常耳闻却感觉有些神秘的东西。单看它复杂的语法,就足令人望而生畏,但是任何事物在我们深入了解它之前,总是会有这种感觉的。我们这篇API入门教程的目的,就是要把API函数的来龙去脉告诉大家,破除对API函数的畏惧,使它成为我们编程的好助手。
2.例子
大家可能在许多书上看到过API的英文全称(Application Programming Interface),WIN32 API也就是MicrosoftWindows32位平台的
应用程序编程接口。对这个定义的理解,需要追溯到
操作系统的发展历史上,当
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帮助就足够了。
3.API函数大全
WNetCancelConnection2 结束一个网络连接
WNetGetLastError 获取网络错误的扩展错误信息
2. API之消息函数
PostMessage 将一条消息投递到指定窗口的消息队列
PostThreadMessage 将一条消息投递给
应用程序
RegisterWindowMessage 获取分配给一个字串
标识符的消息编号
SendMessage 调用一个窗口的
窗口函数,将一条消息发给那个窗口
3. API之文件处理函数
CloseHandle 关闭一个
内核对象。其中包括文件、文件映射、进程、
线程、安全和同步对象等
CopyFile 复制文件
CreateDirectory 创建一个新目录
CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台
CreateFileMapping 创建一个新的文件映射对象
DeleteFile 删除指定文件
DeviceIoControl 对设备执行指定的操作
DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值
FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值
FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间
FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构
FindClose 关闭由FindFirstFile函数创建的一个搜索句柄
FindFirstFile 根据文件名查找文件
GetDriveType 判断一个磁盘驱动器的类型
GetFileSize 判断文件长度
GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母
GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值
LockFile 锁定文件的某一部分,使其不与其他
应用程序共享
LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件
LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于
压缩文件
MapViewOfFile 将一个文件映射对象映射到当前
应用程序的地址空间
MoveFile 移动文件
OpenFile 这个函数能执行大量不同的文件操作
ReadFile 从文件中读出数据
RegCloseKey 关闭
系统注册表中的一个项(或键)
RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数
RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件
RegSetValueEx 设置指定项的值
SetFilePointer 在一个文件中设置当前的读写位置
SetFileTime 设置文件的创建、访问及上次修改时间
UnmapViewOfFile 在当前
应用程序的内存地址空间解除对一个文件映射对象的映射
WriteFile 将数据写入一个文件
4. API之打印函数
AddJob 用于获取一个有效的路径名,以便用它为作业创建一个
后台打印文件。它也会为作业分配一个作业编号
AddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口
AddPrinterConnection 连接指定的打印机
ClosePrinter 关闭一个打开的打印机对象
DeleteForm 从打印机可用表单列表中删除一个表单
DeletePrinter 将指定的打印机标志为从系统中删除
DeletePrinterConnection 删除与指定打印机的连接
DocumentProperties 打印机配置控制函数
EndDocAPI 结束一个成功的打印作业
EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页
Escape 设备控制函数
OpenPrinter 打开指定的打印机,并获取打印机的句柄
PrinterProperties 启动打印机属性对话框,以便对打印机进行配置
ScheduleJob 提交一个要打印的作业
SetPrinter 对一台打印机的状态进行控制
StartDoc 开始一个打印作业
StartPage 打印一个新页前要先调用这个函数
CreateFont 用指定的属性创建一种
逻辑字体
CreateFontIndirect 用指定的属性创建一种
逻辑字体
DrawText 将文本描绘到指定的矩形中
EnumFontFamilies 列举指定设备可用的
字体
ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数
GetCharABCWidths 判断TureType
字体中一个或多个字符的A-B-C大小
GetKerningPairs 取得指定
字体的字距信息
GetTextAlign 接收一个设备场景当前的文本对齐标志
GetTextCharset 接收当前选入指定设备场景的字体的
字符集标识符
GetTextCharsetInfo 获取与当前选定
字体的
字符集有关的详细信息
GetTextMetrics 获取与选入一种设备场景的物理
字体有关的信息
GrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态
SetTextAlign 设置文本对齐方式,并指定在
文本输出过程中使用设备场景的当前位置
SetTextColor 设置当前文本颜色。这种颜色也称为“前景色”
TextOut 文本绘图函数
6. API之菜单函数
AppendMenu 在指定的菜单里添加一个菜单项
CreatePopupMenu 创建一个空的弹出式菜单
DestroyMenu 删除指定的菜单
DrawMenuBar 为指定的窗口重画菜单
GetMenu 取得窗口中一个菜单的句柄
GetMenuCheckMarkDimensions 返回一个菜单复选符的大小
GetMenuContextHelpId 取得一个菜单的帮助场景ID
GetMenuDefaultItem 判断菜单中的哪个条目是默认条目
GetMenuItemCount 返回菜单中条目(菜单项)的数量
GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID
GetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息
GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息
GetSubMenu 取得一个
弹出式菜单的句柄,它位于菜单中指定的位置
InsertMenu 在
菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动
LoadMenu 从指定的模块或
应用程序实例中载入一个菜单
LoadMenuIndirect 载入一个菜单
MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点
ModifyMenu 改变菜单条目
SetMenuContextHelpId 设置一个菜单的帮助场景ID
SetMenuDefaultItem 将一个菜单条目设为默认条目
SetMenuItemBitmaps 设置一幅特定位图,令其在指定的
菜单条目中使用,代替标准的复选符号(√)
SetMenuItemInfo 为一个菜单条目设置指定的信息
BitBlt 将一幅位图从一个设备场景复制到另一个
CreateBitmap 按照规定的格式创建一幅与设备有关位图
CreateBitmapIndirect 创建一幅与设备有关位图
CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容
CreateDIBSection 创建一个DIBSection
DestroyIcon 清除图标
DrawIcon 在指定的位置画一个图标
LoadBitmap 从指定的模块或应用程序实例中载入一幅位图
LoadCursor 从指定的模块或应用程序实例中载入一个
鼠标指针
LoadIcon 从指定的模块或应用程序实例中载入一个图标
LoadImage 载入一个位图、图标或指针
PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景
PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对
位图进行旋转处理
SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式
StretchBlt 将一幅位图从一个设备场景复制到另一个
StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景
8. API之绘图函数
AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作
AngleArc 用一个连接弧画一条线
Arc 画一个圆弧
BeginPath 启动一个路径分支
Chord 画一个弦
CreateEnhMetaFile 创建一个增强型的图元文件设备场景
CreateHatchBrush 创建带有阴影图案的一个刷子
CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子
CreatePen 用指定的样式、宽度和颜色创建一个
画笔
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔
CreateSolidBrush 用纯色创建一个刷子
DeleteEnhMetaFile 删除指定的增强型图元文件
DeleteMetaFile 删除指定的图元文件
DeleteObject 删除GDI对象,对象使用的所有
系统资源都会被释放
DrawFrameControl 描绘一个标准控件
DrawState 为一幅图象或绘图操作应用各式各样的效果
EndPath 停止定义一个路径
EnumEnhMetaFile 针对一个增强型
图元文件,列举其中单独的图元文件记录
EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子
FillRect 用指定的刷子填充一个矩形
FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域
GdiComment 为指定的增强型图元文件设备场景添加一条注释信息
GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中
GetBkColor 取得指定设备场景当前的背景颜色
GetBkMode 针对指定的设备场景,取得当前的背景填充模式
GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄
GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区
GetMiterLimit 取得设备场景的斜率限制(Miter)设置
GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色
GetObjectAPI 取得对指定对象进行说明的一个结构
GetPath 取得对当前路径进行定义的一系列数据
GetPolyFillMode 针对指定的设备场景,获得多边形填充模式
GetROP2 针对指定的设备场景,取得当前的绘图模式
GetStockObject 取得一个固有对象(Stock)
GetWinMetaFileBits 通过在一个
缓冲区中填充用于标准
图元文件的数据,将一个增强型图元文件转换成标准windows图元文件
InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形
LineTo 用当前画笔画一条线,从当前位置连到一个指定的点
MoveToEx 为指定的设备场景指定一个新的当前画笔位置
PaintDesk 在指定的设备场景中描绘
桌面墙纸图案
PathToRegion 将当前选定的路径转换到一个区域里
Pie 画一个饼图
PlayMetaFile 在指定的设备场景中回放一个图元文件
Polygon 描绘一个多边形
Polyline 用当前画笔描绘一系列线段
PolyPolygon 用当前选定画笔描绘两个或多个多边形
Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充
RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充
SelectClipPath 将设备场景当前的路径合并到剪切区域里
SelectObject 为当前设备场景选择图形对象
SetArcDirection 设置圆弧的描绘方向
SetBkColor 为指定的设备场景设置背景颜色
SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点
SetEnhMetaFileBits 用指定内存
缓冲区内包含的数据创建一个增强型图元文件
SetMetaFileBitsEx 用包含在指定内存
缓冲区内的
数据结构创建一个图元文件
SetMiterLimit 设置设备场景当前的斜率限制
SetPixel 在指定的设备场景中设置一个像素的RGB值
SetPixelV 在指定的设备场景中设置一个像素的RGB值
SetPolyFillMode 设置多边形的填充模式
SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域
StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭
WidenPath 根据选定画笔的宽度,重新定义当前选定的路径
9. API之设备场景函数
CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
CreateDC 为专门设备创建设备场景
CreateRectRgn 创建一个矩形区域
DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源
DPtoLP 将
点阵从设备坐标转换到专用设备场景逻辑坐标
ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域
FillRgn 用指定刷子填充指定区域
GetDC 获取指定窗口的设备场景
GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项
GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息
GetRegionData 装入描述一个区域信息的RgnData结构或
缓冲区
GetRgnBox 获取完全包含指定区域的最小矩形
GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新
GetWindowDC 获取整个窗口(包括边框、滚动条、
标题栏、菜单等)的设备场景
GetWindowExtEx 获取指定设备场景的窗口范围
InvertRgn 通过颠倒每个像素值反转设备场景指定区域
LPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
OffsetRgn 按指定偏移量平移指定区域
ReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景
RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景
SaveDC 将指定设备场景状态保存到Windows设备场景堆栈
SetBoundsRect 设置指定设备场景的边界矩形
SetMapMode 设置指定设备场景的映射模式
SetViewportExtEx 设置设备场景视口范围
SetViewportOrgEx 设置设备场景视口起点
SetWindowExtEx 设置指定设备场景窗口范围
ValidateRgn 激活窗口中指定区域,把它从刷新区移走
Beep 用于生成简单的声音
ClipCursor 将指针限制到指定区域
ConvertDefaultLocale 将一个特殊的地方
标识符转换成真实的地方ID
CreateCaret 根据指定的信息创建一个插入符(
光标),并将它选定为指定窗口的默认插入符
EnumCalendarInfo 枚举在指定“地方”环境中可用的日历信息
EnumDateFormats 列举指定的“当地”设置中可用的长、短日期格式
EnumSystemCodePages 枚举系统中已安装或支持的代码页
ExitWindowsEx 退出windows,并用特定的选项重新启动
GetACP 判断目前正在生效的ANSI代码页
GetAsyncKeyState 判断函数调用时指定虚拟键的状态
GetCommandLine 获得指向当前命令行
缓冲区的一个指针
GetComputerName 取得这台计算机的名称
GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件
GetKeyboardState 取得键盘上每个虚拟键当前的状态
GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态
GetLastError 针对之前调用的api函数,用这个函数取得扩展
错误信息
GetLocalTime 取得本地日期和时间
GetNumberFormat 针对指定的“地方”,按特定的格式格式化一个数字
GetOEMCP 判断在OEM和ANSI
字符集间转换的windows代码页
GetSysColor 判断指定windows显示对象的颜色
GetSystemDefaultLangID 取得系统的默认语言ID
GetSystemDefaultLCID 取得当前的默认系统“地方”
GetSystemInfo 取得与底层硬件平台有关的信息
GetSystemMetrics 返回与windows环境有关的信息
GetSystemPowerStatus 获得与当前系统电源状态有关的信息
GetSystemTime 取得当前系统时间,这个时间采用的是“协同世界时间”(即UTC,也叫做GMT)格式
GetSystemTimeAdjustment 使内部
系统时钟与一个外部的时钟信号源同步
GetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)
GetTimeFormat 针对当前指定的“地方”,按特定的格式格式化一个系统时间
GetTimeZoneInformation 取得与系统时区设置有关的信息
GetUserDefaultLangID 为当前用户取得默认语言ID
GetUserDefaultLCID 取得当前用户的默认“地方”设置
GetUserName 取得当前用户的名字
GetVersion 判断当前运行的Windows和DOS版本
GetVersionEx 取得与平台和
操作系统有关的版本信息
LoadKeyboardLayout 载入一个键盘布局
MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换
SetComputerName 设置新的计算机名
SetEnvironmentVariable 将一个环境变量设为指定的值
SetKeyboardState 设置每个虚拟键当前在键盘上的状态
SetLocaleInfo 改变用户“地方”设置信息
SetLocalTime 设置当前地方时间
SetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步
SetThreadLocale 为当前线程设置地方
SetTimeZoneInformation 设置系统时区信息
ShowCaret 在指定的窗口里显示插入符(光标)
SystemParametersInfo 获取和设置数量众多的windows
系统参数
SystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间
ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符
11. API之进程和线程函数
ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个
命名管道连接
CreateEvent 创建一个事件对象
CreateMutex 创建一个
互斥体(MUTEX)
CreateNamedPipe 创建一个
命名管道。返回的句柄由管道的服务器端使用
CreatePipe 创建一个匿名管道
CreateProcess 创建一个新进程(比如执行一个程序)
DisconnectNamedPipe 断开一个客户与一个命名管道的连接
DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄
ExitProcess 中止一个进程
FreeLibrary 释放指定的动态链接库
GetCurrentProcess 获取当前进程的一个伪句柄
GetCurrentProcessId 获取当前进程一个唯一的
标识符
GetExitCodeProces 获取一个已中断进程的退出代码
GetExitCodeThread 获取一个已中止线程的退出代码
GetModuleFileName 获取一个已装载模板的完整路径名称
GetModuleHandle 获取一个
应用程序或动态链接库的模块句柄
GetSartupInfo 获取一个进程的启动信息
GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程
标识符
LoadModule 载入一个Windows
应用程序,并在指定的环境中运行
MsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回
ShellExecute 查找与指定文件关联在一起的程序的文件名
TerminateProcess 结束一个进程
WinExec 运行指定的程序
12. API之控件与消息函数
CascadeWindows 以层叠方式排列窗口
DeferWindowPos 该函数为特定的窗口指定一个新窗口位置
DestroyWindow 清除指定的窗口以及它的所有子窗口
DrawAnimatedRects 描绘一系列动态矩形
EnumChildWindows 为指定的父窗口枚举子窗口
EnumWindows 枚举窗口列表中的所有父窗口
FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口
FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口
GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)
GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息
GetClassLong 取得窗口类的一个Long变量条目
GetClassName 为指定的窗口取得类名
GetClientRect 返回指定窗口客户区矩形的大小
GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄
GetFocus 获得拥有输入焦点的窗口的句柄
GetForegroundWindow 获得前台窗口的句柄
GetParent 判断指定窗口的父窗口
GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系
GetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID
GetWindowLong 从指定窗口的结构中取得信息
GetWindowRect 获得整个窗口的范围矩形,窗口的边框、
标题栏、滚动条及菜单等都在这个矩形内
4.FOXAPI
FOXAPI是什么
Foxapi 是一个针对开发者提供一些预先定义的
接口,通过该接口开发者可以获取到相应的数据信息,方便开发者调用数据,从而间接减少代码编写。
FOXAPI何时使用
Foxapi 何时使用?当开发者遇到数据查询时,如:天气预报、股票信息、网站数据等查询时,就可以使用到它,它将会以预先设置好的格式展示出来。
为什么使用FOXAPI
Foxapi 为什么使用?使用它将会:减少服务器检索数据负担、减少编码检索数据的代码、缩减检索数据流程等等,使开发者更加快捷的查询各种数据。[1]