电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

API应用范文

来源:开心麻花作者:开心麻花2025-12-201

API应用范文(精选11篇)

API应用 第1篇

约翰内斯海德汉博士 (中国) 有限公司是一家德资企业, 建筑面积2万m2, 包括办公楼、生产厂房、动力厂房以及其他辅助用房, 生产用于数控机床的光栅尺等测量产品。工厂设备设施部以追求高质量高水平的设施维护为目标, 长期维持3~4名管理人员, 外包工人2~4人的水平, 专业维修服务分别与外包签订合同进行。

建厂之初, 公司就已在寻找合适的设备维护软件, 包括一些国内的和国外的, 试用后都感觉不太理想。要求软件应具备以下几个条件。

(1) 界面友好、操作不能过于复杂繁琐, 对提高设施维护水平、规范维护工作有益。

(2) 可以解决备件管理、库存管理、采购管理、巡检维护人员管理等问题, 即能尽可能涵盖设施维护相关方面, 每一方面都要实用。

(3) 具有较强的扩展性, 如需要可以将财务、物流、采购、生产等部门联系起来。

API的出现切合了以上需要。经过与API的几次洽谈, 最终选择了API。

二、海德汉API功能应用

1. API简介

API Maintenance Systems是智能的系统, 由瑞典斯凯福集团 (www.skf.com) 于20世纪80年代中期创立的, 最近10年API成为企业资产管理软件 (EAM) 的领导者之一。目前, API PRO已经在多个行业形成了个性化的应用和案例, 如食品和制药行业、能源和公用事业、港口和交通、OEM/承包商、其他行业。

2. EAM简介

EAM是面向资产密集型企业的企业信息化解决方案的总称。它以提高资产可利用率、降低企业运行维护成本为目标, 以优化企业维修资源为核心, 通过信息化手段, 合理安排维修计划及相关资源与活动。EAM以资产模型、设备台账为基础, 以工单的创建、审批、执行、关闭为主线, 合理、优化地安排相关的人、财、物资源, 将传统的被动检修转变为积极主动的预防性维修, 与实时的数据采集系统集成, 可以实现预防性维护。通过跟踪记录企业的维护历史活动, 将维修人员的个人知识转化为企业范围的智力资本。集成的工业流程与业务流程配置功能, 使得用户可以更方便地进行系统的授权管理和应用的客户化改造工作。

3. 海德汉一期选用模块

API系统所有功能都已经模块化 (见图1) , 企业可以根据自己实际需求来整体规划, 分步实施。以上深色模块是海德汉一期购买的功能。

4. 主要实现管理内容 (见图2)

一期在API系统里主要实现了设备设施资产数据管理、设备设施维修维护流程管理、备件管理、报表管理。现分别介绍如下。

(1) 资产基础数据管理 (见图3)

API可以实现的基础数据管理, 通过结构树可以找到每一个具体设备。每个设备可附加图纸、维修手手册、备件、照片、工单、工作历史、位置、供应信息等。

(2) 维修维护流程管理

由设备结构树中选择设备+进入工单界面+选择故障类型=工单生成。在工作过程中, 工单监视功能让管理人员更方便地监视各项工作进展情况。

(3) 备件管理

备件 (完整的备件信息包含了3个程序, 即备件基本信息、备件供应商信息、备件库存信息) 、备件搜索、维护对象 (可附技术说明、文档信息、成本和交易信息、消息模块) 。备件都有“属性”和“分类”两个分别定义的特质, 以利于将来数据分析和查询, 如备件分类可以是空调系统或是压缩空气系统。通过库存模块可以实现备件的管理, 包括直接入库、库存移动、报废、移入、移出、调整、归还入库、据工单预留、库存盘点、生成库存报表。设备与备件也可以关联, 备件可反馈到设备, 设备 (维护对象) 自动关联备件。

(4) 报表管理

例如图4的库存值列表, 选择仓库编码、备件分类等信息即可进行汇总。

三、API在海德的实施

1. 制定项目计划

(1) 项目组建立。项目组人员包括公司设施维护技术人员3人、IT人员1名、API工程师1名。IT人员将在软件安装、运行环境方面给予支持, 召开项目启动会议, 并制定推进软件实施项目计划。

(2) 系统安装和管理员培训;

(3) 实施调研;

(4) 数据收集及导入;

(5) 配置及测试;

(6) 工厂测试及最终用户培训;

(7) 报表设计与培训;

(8) 上线支持。

以上工作在两个月内完成。软件公司支持人员一个共10个工作日分两次到现场指导培训。之后双方通过电话解决工作中遇到的问题。1年之后, 工厂计划增加购买另两个模块以及另两个用户权限。

2. 数据导入

建立用户组, 设立权限和级别, 将备品备件的Excel数据导入系统, 包含价格、供货商等重要信息。将Excel形式的位置表, 设备结构树数据导入系统。建立库房名称和编号, 将Excel形式的故障现象代码表、故障原因代码表、维修方法代码表导入系统

3. 工单举例

作为具体工作的安排媒介, 工单在日常工作中占有重要的地位。以工程师张某安排工人李某和王某更换空调机皮带为例。

(1) 张某从设备树中找到空调机所在位置找到位置下的该空调机新建工单自动生成工单编号给工单起名“更换皮带”点备件选项指定备件名称 (库位等信息自动带出) 指定工作时间指定操作人员指定作业类型 (预防性维护/非计划性作业/基于条件的作业/计划性的纠正性维护/其他作业) 指定作业指导编码 (可选) 指定负责人指定成本中心 (可选) 指定工作间隔 (无或定期) 指定计划停机时间 (可选) 启动工单打印。

(2) 工作期间可查看工作执行状态、进行工单展望等工作。

(3) 工作完成后, 李某和王某签名 (也可选择非纸制形式, 从电脑中关单) , 填写具体工作时间和执行情况简述。工程师确认备件情况、时间、检查实际工作后, 软件系统中关闭工单, 此工单将进入历史工单。从皮带备件历史中可看到是哪个工单使用了备件以及具体的时间、数量等信息。

四、应用效果

1. 项目成功的必要条件

(1) 公司理念上认可, 经济上保障;

(2) 项目需求、目标定义明确;

(3) 确定实施团队成员, 充分调动每个人的参与积极性;

(4) 安排必要的时间学习软件, 接受培训;

(5) 充分准备, 包括数据整理、收集和流程整理及系统集成, 如设备树的建立经过了充分反复的论证才最终实施;

(6) 持续改进软件操作, 与软件供应商加强沟通;

(7) 工作中保持恒心, 坚持使用, 探索扩展和发掘已有功能;

(8) 总结一些使用窍门、快捷方法, 进行必要的创新。

2. 备件管理方面

由原来的无序存放变为有序存放, 由原来的没有编号变为每个备件都有一个系统唯一的编号。这样做的好处有: (1) 工单中需要的备件可以根据库位号快速寻找, 并在要发工单时预留; (2) 盘点时库存控制数据生成盘点表, 保留查询依据, 数量有出入时可根据工单查找使用纪录; (3) 最小库存自动判别可在数量低于最低设定值时报警。

另外, 使用API软件后备件可按名称、编号、成本中心、数量、条形码、类别、系统、库位、供货商、库房、价格、成本中心、属性等等查询、汇总、分析。唯一的备件可以分别关联到包括其的母设备, 在设备更换备件时可以在工单中方便快捷的调用, 并在半闭工单进行库存控制中消减数量。

3. 维护工作方面

(1) 由原先的维护工作仅用Office软件对大事件进行记录, 变为可对具体每一个设备从头至尾做过的保养和大修进行单独统计, 更换过什么备件、何时何人、何种故障原因、何种故障现现、何种解决办法, 也就是更加精确化具体化, 对每一个设备的生命周期可进行管理。

(2) 节约维修耗时。以前报修后, 要班长确认、技术员确认、报送迭修、备件查找、修复确认、工作登记、统计分析, 有时还要口头通知一些技术要点和细节, 比较耗时;现在因为软件的应用而简化了许多细节, 而且有据可依, 有据可查。

4. 效率改善与提升

(1) 平均故障时间 (MTTB, Mean time to breakdown) 与平均故障间隔时间 (MTBF, Mean time between fail) 得到改善;

(2) 规范化维护工作;

(3) 维护工作合格率的提高;

(4) 生产操作人员的参与;

(5) 备件的优化及库存管理;

(6) 减少停机次数并提高人员工作效率;

(7) 数据统计耗时由之前的缓慢或没有达到变成目前的快捷丰富。

5. 工作集成化方面

几乎所有的设施维护工作全部可以集成到软件中来管理, 包括维护人员和管理、工厂设施设备的管理、备品备件的管理、采购的管理、巡检、定期维护、应急修理、报表统计、盘点、工厂图纸、设备图纸技术资料、成本的管理。实际工作中, 生产部门、财务部门、采购部门等工作也可以融入到此软件中。

五、结论

C API函数 第2篇

WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作

WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚举网络资源

WNetGetConnection 获取本地或已连接的一个资源的网络名称 WNetGetLastError 获取网络错误的扩展错误信息

WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称

WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举的过程

2.API之消息函数

BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 PostMessage 将一条消息投递到指定窗口的消息队列 PostThreadMessage 将一条消息投递给应用程序

RegisterWindowMessage 获取分配给一个字串标识符的消息编号 ReplyMessage 答复一个消息

SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 SendMessageCallback 将一条消息发给窗口 SendMessageTimeout 向窗口发送一条消息 SendNotifyMessage 向窗口发送一条消息

3.API之文件处理函数

CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等

CompareFileTime 对比两个文件的时间 CopyFile 复制文件

CreateDirectory 创建一个新目录

CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 CreateFileMapping 创建一个新的文件映射对象 DeleteFile 删除指定文件

DeviceIoControl 对设备执行指定的操作

DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间

FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构

FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 FindFirstFile 根据文件名查找文件

FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件

FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区 FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 GetBinaryType 判断文件是否可以执行

GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数 GetCurrentDirectory 在一个缓冲区中装载当前目录

GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量

GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息 GetDriveType 判断一个磁盘驱动器的类型 GetExpandedName 取得一个压缩文件的全名 GetFileAttributes 判断指定文件的属性

GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制 GetFileSize 判断文件长度

GetFileTime 取得指定文件的时间信息

GetFileType 在给出文件句柄的前提下,判断文件类型

GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息

GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区

GetFullPathName 获取指定文件的完整路径名

GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母

GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径

GetOverlappedResult 判断一个重叠操作当前的状态

GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值

GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表

GetPrivateProfileString 为初始化文件中指定的条目取得字串 GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值

GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表

GetProfileString 为win.ini初始化文件中指定的条目取得字串 GetShortPathName 获取指定文件的短路径名

GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名 GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用 GetTempPath 获取为临时文件指定的路径 GetVolumeInformation 获取与一个磁盘卷有关的信息 GetWindowsDirectory 获取Windows目录的完整路径名 hread 参考lread hwrite 参考lwrite函数 lclose 关闭指定的文件 lcreat 创建一个文件

llseek 设置文件中进行读写的当前位置

LockFile 锁定文件的某一部分,使其不与其他应用程序共享 LockFileEx 与LockFile相似,只是它提供了更多的功能 lopen 以二进制模式打开指定的文件 lread 将文件中的数据读入内存缓冲区 lwrite 将数据从内存缓冲区写入一个文件

LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件 LZCopy 复制一个文件

LZInit 这个函数用于初始化内部缓冲区

LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件 LZRead 将数据从文件读入内存缓冲区

LZSeek 设置一个文件中进行读写的当前位置

MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间 MoveFile 移动文件

OpenFile 这个函数能执行大量不同的文件操作 OpenFileMapping 打开一个现成的文件映射对象

QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况 ReadFile 从文件中读出数据

ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调

RegCloseKey 关闭系统注册表中的一个项(或键)RegConnectRegistry 访问远程系统的部分注册表 RegCreateKey 在指定的项下创建或打开一个项

RegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数

RegDeleteKey 删除现有项下方一个指定的子项 RegDeleteValue 删除指定项下方的一个值

RegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx RegEnumKeyEx 枚举指定项下方的子项 RegEnumValue 枚举指定项的值

RegFlushKey 将对项和它的子项作出的改动实际写入磁盘 RegGetKeySecurity 获取与一个注册表项有关的安全信息

RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息 RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制

RegOpenKey 打开一个现有的注册表项

RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数 RegQueryInfoKey 获取与一个项有关的信息

RegQueryValue 取得指定项或子项的默认(未命名)值 RegQueryValueEx 获取一个项的设置值

RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息

RegRestoreKey 从一个磁盘文件恢复注册表信息

RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件 RegSetKeySecurity 设置指定项的安全特性 RegSetValue 设置指定项或子项的默认值 RegSetValueEx 设置指定项的值

RegUnLoadKey 卸载指定的项以及它的所有子项 RemoveDirectory 删除指定目录 SearchPath 查找指定文件

SetCurrentDirectory 设置当前目录

SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾 SetFileAttributes 设置文件属性

SetFilePointer 在一个文件中设置当前的读写位置 SetFileTime 设置文件的创建、访问及上次修改时间

SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果 SetVolumeLabel 设置一个磁盘的卷标(Label)

SystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构

UnlockFile 解除对一个文件的锁定 UnlockFileEx 解除对一个文件的锁定

UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射

VerFindFile 用这个函数决定一个文件应安装到哪里 VerInstallFile 用这个函数安装一个文件

VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称 VerQueryValue 这个函数用于从版本资源中获取信息 WriteFile 将数据写入一个文件

WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调

WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值

WritePrivateProfileString 在初始化文件指定小节内设置一个字串

WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值

WriteProfileString 在Win.ini初始化文件指定小节内设置一个字串

4.API之打印函数

AbortDoc 取消一份文档的打印

AbortPrinter 删除与一台打印机关联在一起的缓冲文件 AddForm 为打印机的表单列表添加一个新表单 AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号

AddMonitor 为系统添加一个打印机监视器 AddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口

AddPrinter 在系统中添加一台新打印机 AddPrinterConnection 连接指定的打印机

AddPrinterDriver 为指定的系统添加一个打印驱动程序 AddPrintProcessor 为指定的系统添加一个打印处理器 AddPrintProvidor 为系统添加一个打印供应商

AdvancedDocumentProperties 启动打印机文档设置对话框 ClosePrinter 关闭一个打开的打印机对象

ConfigurePort 针对指定的端口,启动一个端口配置对话框

ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 DeleteForm 从打印机可用表单列表中删除一个表单 DeleteMonitor 删除指定的打印监视器

DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 DeletePrinter 将指定的打印机标志为从系统中删除 DeletePrinterConnection 删除与指定打印机的连接 DeletePrinterDriver 从系统删除一个打印机驱动程序 DeletePrintProcessor 从指定系统删除一个打印处理器 DeletePrintProvidor 从系统中删除一个打印供应商

DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 DocumentProperties 打印机配置控制函数 EndDocAPI 结束一个成功的打印作业

EndDocPrinter 在后台打印程序的级别指定一个文档的结束

EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 EndPagePrinter 指定一个页在打印作业中的结尾 EnumForms 枚举一台打印机可用的表单 EnumJobs 枚举打印队列中的作业

EnumMonitors 枚举可用的打印监视器 EnumPorts 枚举一个系统可用的端口

EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 EnumPrinters 枚举系统中安装的打印机

EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 EnumPrintProcessors 枚举系统中可用的打印处理器 Escape 设备控制函数

FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象

FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化

FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因

FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区

GetForm 取得与指定表单有关的信息 GetJob 获取与指定作业有关的信息

GetPrinter 取得与指定打印机有关的信息

GetPrinterData 为打印机设置注册表配置信息

GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么

GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录

OpenPrinter 打开指定的打印机,并获取打印机的句柄

PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 ReadPrinter 从打印机读入数据 ResetDC 重设一个设备场景

ResetPrinter 改变指定打印机的默认数据类型及文档设置 ScheduleJob 提交一个要打印的作业

SetAbortProc 为Windows指定取消函数的地址 SetForm 为指定的表单设置信息

SetJob 对一个打印作业的状态进行控制 SetPrinter 对一台打印机的状态进行控制

SetPrinterData 设置打印机的注册表配置信息 StartDoc 开始一个打印作业

StartDocPrinter 在后台打印的级别启动一个新文档 StartPage 打印一个新页前要先调用这个函数

StartPagePrinter 在打印作业中指定一个新页的开始 WritePrinter 将发送目录中的数据写入打印机

5.API之文本和字体函数

AddFontResource 在Windows系统中添加一种字体资源 CreateFont 用指定的属性创建一种逻辑字体

CreateFontIndirect 用指定的属性创建一种逻辑字体

CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 DrawText 将文本描绘到指定的矩形中

DrawTextEx 与DrawText相似,只是加入了更多的功能 EnumFontFamilies 列举指定设备可用的字体 EnumFontFamiliesEx 列举指定设备可用的字体 EnumFonts 列举指定设备可用的字体

ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数

GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小

GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小 GetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸

GetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串 GetCharWidth 调查字体中一个或多个字符的宽度 GetFontData 接收一种可缩放字体文件的数据

GetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息 GetGlyphOutline 取得TureType字体中构成一个字符的曲线信息 GetKerningPairs 取得指定字体的字距信息

GetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息 GetRasterizerCaps 了解系统是否有能力支持可缩放的字体

GetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素 GetTextAlign 接收一个设备场景当前的文本对齐标志 GetTextCharacterExtra 判断额外字符间距的当前值

GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符 GetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息 GetTextColor 判断当前字体颜色。通常也称为“前景色”

GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息

GetTextExtentPoint 判断一个字串的大小(范围)GetTextFace 获取一种字体的字样名

GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息

GrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态 PolyTextOut 描绘一系列字串

RemoveFontResource 从Windows系统中删除一种字体资源

SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体

SetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置

SetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 SetTextColor 设置当前文本颜色。这种颜色也称为“前景色”

SetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理

TabbedTextOut 支持制表站的一个文本描绘函数 TextOut 文本绘图函数

6.API之菜单函数

AppendMenu 在指定的菜单里添加一个菜单项 CheckMenuItem 复选或撤消复选指定的菜单条目

CheckMenuRadioItem 指定一个菜单条目被复选成“单选”项目 CreateMenu 创建新菜单

CreatePopupMenu 创建一个空的弹出式菜单 DeleteMenu 删除指定的菜单条目 DestroyMenu 删除指定的菜单

DrawMenuBar 为指定的窗口重画菜单 EnableMenuItem 允许或禁止指定的菜单条目 GetMenu 取得窗口中一个菜单的句柄

GetMenuCheckMarkDimensions 返回一个菜单复选符的大小 GetMenuContextHelpId 取得一个菜单的帮助场景ID GetMenuDefaultItem 判断菜单中的哪个条目是默认条目 GetMenuItemCount 返回菜单中条目(菜单项)的数量

GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID GetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息 GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息 GetMenuState 取得与指定菜单条目状态有关的信息 GetMenuString 取得指定菜单条目的字串

GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 GetSystemMenu 取得指定窗口的系统菜单的句柄 HiliteMenuItem 控制顶级菜单条目的加亮显示状态

InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动

InsertMenuItem 插入一个新菜单条目

IsMenu 判断指定的句柄是否为一个菜单的句柄

LoadMenu 从指定的模块或应用程序实例中载入一个菜单 LoadMenuIndirect 载入一个菜单

MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点 ModifyMenu 改变菜单条目

RemoveMenu 删除指定的菜单条目 SetMenu 设置窗口菜单

SetMenuContextHelpId 设置一个菜单的帮助场景ID SetMenuDefaultItem 将一个菜单条目设为默认条目

SetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√)

SetMenuItemInfo 为一个菜单条目设置指定的信息

TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单

TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能

7.API之位图、图标和光栅运算函数

BitBlt 将一幅位图从一个设备场景复制到另一个

CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序

CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作 CreateBitmap 按照规定的格式创建一幅与设备有关位图 CreateBitmapIndirect 创建一幅与设备有关位图

CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容 CreateCursor 创建一个鼠标指针

CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图 CreateDIBSection 创建一个DIBSection CreateIcon 创建一个图标 CreateIconIndirect 创建一个图标

DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源 DestroyIcon 清除图标

DrawIcon 在指定的位置画一个图标

DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能

ExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之

ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来 GetBitmapBits 将来自位图的二进制位复制到一个缓冲区 GetBitmapDimensionEx 取得一幅位图的宽度和高度

GetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息 GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里 GetIconInfo 取得与图标有关的信息

GetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式 LoadBitmap 从指定的模块或应用程序实例中载入一幅位图

LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针

LoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针

LoadIcon 从指定的模块或应用程序实例中载入一个图标 LoadImage 载入一个位图、图标或指针

MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理

PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景

PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理

SetBitmapBits 将来自缓冲区的二进制位复制到一幅位图

SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位 SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息

SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里 SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备

SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式 StretchBlt 将一幅位图从一个设备场景复制到另一个

StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景

8.API之绘图函数

AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作

AngleArc 用一个连接弧画一条线 Arc 画一个圆弧

BeginPath 启动一个路径分支

CancelDC 取消另一个线程里的长时间绘图操作 Chord 画一个弦

CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄

CloseFigure 描绘到一个路径时,关闭当前打开的图形 CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄

CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)CopyMetaFile 制作指定(标准)图元文件的一个副本

CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子 CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)

CreateEnhMetaFile 创建一个增强型的图元文件设备场景 CreateHatchBrush 创建带有阴影图案的一个刷子 CreateMetaFile 创建一个图元文件设备场景

CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子 CreatePen 用指定的样式、宽度和颜色创建一个画笔

CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔 CreateSolidBrush 用纯色创建一个刷子

DeleteEnhMetaFile 删除指定的增强型图元文件 DeleteMetaFile 删除指定的图元文件

DeleteObject 删除GDI对象,对象使用的所有系统资源都会被释放 DrawEdge 用指定的样式描绘一个矩形的边框

DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序 DrawFocusRect 画一个焦点矩形

DrawFrameControl 描绘一个标准控件

DrawState 为一幅图象或绘图操作应用各式各样的效果 Ellipse 描绘一个椭圆,由指定的矩形围绕 EndPath 停止定义一个路径

EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录 EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录 EnumObjects 枚举可随同指定设备场景使用的画笔和刷子 ExtCreatePen 创建一个扩展画笔(装饰或几何)

ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域 FillPath 关闭路径中任何打开的图形,并用当前刷子填充 FillRect 用指定的刷子填充一个矩形

FlattenPath 将一个路径中的所有曲线都转换成线段

FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 FrameRect 用指定的刷子围绕一个矩形画一个边框

GdiComment 为指定的增强型图元文件设备场景添加一条注释信息 GdiFlush 执行任何未决的绘图操作

GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中 GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列 GetArcDirection 画圆弧的时候,判断当前采用的绘图方向 GetBkColor 取得指定设备场景当前的背景颜色 GetBkMode 针对指定的设备场景,取得当前的背景填充模式 GetBrushOrgEx 判断指定设备场景中当前选定刷子起点 GetCurrentObject 获得指定类型的当前选定对象

GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置

GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄 GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里 GetEnhMetaFileDescription 返回对一个增强型图元文件的说明 GetEnhMetaFileHeader 取得增强型图元文件的图元文件头

GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板 GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄 GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区 GetMiterLimit 取得设备场景的斜率限制(Miter)设置

GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色 GetObjectAPI 取得对指定对象进行说明的一个结构 GetObjectType 判断由指定句柄引用的GDI对象的类型 GetPath 取得对当前路径进行定义的一系列数据

GetPixel 在指定的设备场景中取得一个像素的RGB值

GetPolyFillMode 针对指定的设备场景,获得多边形填充模式 GetROP2 针对指定的设备场景,取得当前的绘图模式 GetStockObject 取得一个固有对象(Stock)

GetSysColorBrush 为任何一种标准系统颜色取得一个刷子

GetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件

InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形 LineDDA 枚举指定线段中的所有点

LineTo 用当前画笔画一条线,从当前位置连到一个指定的点 MoveToEx 为指定的设备场景指定一个新的当前画笔位置 PaintDesk 在指定的设备场景中描绘桌面墙纸图案 PathToRegion 将当前选定的路径转换到一个区域里 Pie 画一个饼图

PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件 PlayEnhMetaFileRecord 回放单独一条增强型图元文件记录 PlayMetaFile 在指定的设备场景中回放一个图元文件 PlayMetaFileRecord 回放来自图元文件的单条记录 PolyBezier 描绘一条或多条贝塞尔(Bezier)曲线

PolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成 Polygon 描绘一个多边形

Polyline 用当前画笔描绘一系列线段

PolyPolygon 用当前选定画笔描绘两个或多个多边形 PolyPolyline 用当前选定画笔描绘两个或多个多边形

Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充 RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充 SelectClipPath 将设备场景当前的路径合并到剪切区域里 SelectObject 为当前设备场景选择图形对象 SetArcDirection 设置圆弧的描绘方向

SetBkColor 为指定的设备场景设置背景颜色

SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式 SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点

SetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件 SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件 SetMiterLimit 设置设备场景当前的斜率限制

SetPixel 在指定的设备场景中设置一个像素的RGB值 SetPixelV 在指定的设备场景中设置一个像素的RGB值 SetPolyFillMode 设置多边形的填充模式

SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致 SetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件 StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域

StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭 UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数

WidenPath 根据选定画笔的宽度,重新定义当前选定的路径

9.API之设备场景函数

CombineRgn 将两个区域组合为一个新区域

CombineTransform 驱动世界转换。它相当于依顺序进行两次转换 CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景 CreateDC 为专门设备创建设备场景 CreateEllipticRgn 创建一个椭圆

CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域 CreateIC 为专用设备创建一个信息场景

CreatePolygonRgn 创建一个由一系列点围成的区域

CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的

CreateRectRgn 创建一个矩形区域

CreateRectRgnIndirect 创建一个矩形区域 CreateRoundRectRgn 创建一个圆角矩形

DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源 DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标 EqualRgn 确定两个区域是否相等

ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图

ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域 ExtCreateRegion 根据世界转换修改区域

ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区 FillRgn 用指定刷子填充指定区域

FrameRgn 用指定刷子围绕指定区域画一个外框 GetBoundsRect 获取指定设备场景的边界矩形 GetClipBox 获取完全包含指定设备场景剪裁区的最小矩形 GetClipRgn 获取设备场景当前剪裁区 GetDC 获取指定窗口的设备场景

GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项 GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息 GetGraphicsMode 确定是否允许增强图形模式(世界转换)GetMapMode 为特定设备场景调入映象模式

GetRegionData 装入描述一个区域信息的RgnData结构或缓冲区 GetRgnBox 获取完全包含指定区域的最小矩形

GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新 GetViewportExtEx 获取设备场景视口(viewport)范围 GetViewportOrgEx 获取设备场景视口起点

GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景 GetWindowExtEx 获取指定设备场景的窗口范围

GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点 GetWindowRgn 获取窗口区域

GetWorldTransform 如果有世界转换,为设备场景获取当前世界转换 IntersectClipRect 为指定设备定义一个新的剪裁区

InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画

InvertRgn 通过颠倒每个像素值反转设备场景指定区域 LPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标 ModifyWorldTransform 根据指定的模式修改世界转换 OffsetClipRgn 按指定量平移设备场景剪裁区 OffsetRgn 按指定偏移量平移指定区域

OffsetViewportOrgEx平移设备场景视口区域 OffsetWindowOrgEx平移指定设备场景窗口起点 PaintRgn 用当前刷子背景色填充指定区域 PtInRegion 确定点是否在指定区域内

PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)RectInRegion 确定矩形是否有部分在指定区域内

RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)ReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景 RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景 SaveDC 将指定设备场景状态保存到Windows设备场景堆栈 ScaleViewportExtEx 缩放设备场景视口的范围 ScaleWindowExtEx 缩放指定设备场景窗口范围

ScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形 SelectClipRgn 为指定设备场景选择新的剪裁区 SetBoundsRect 设置指定设备场景的边界矩形

SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换)SetMapMode 设置指定设备场景的映射模式 SetRectRgn 设置区域为指定的矩形 SetViewportExtEx 设置设备场景视口范围 SetViewportOrgEx 设置设备场景视口起点 SetWindowExtEx 设置指定设备场景窗口范围 SetWindowOrgEx 设置指定设备场景窗口起点 SetWindowRgn 设置窗口区域

SetWorldTransform 设置世界转换

ValidateRgn 激活窗口中指定区域,把它从刷新区移走 WindowFromDC 取回与某一设备场景相关的窗口的句柄

10.API之硬件与系统函数

ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义 Beep 用于生成简单的声音

CharToOem 将一个字串从ANSI字符集转换到OEM字符集 ClipCursor 将指针限制到指定区域

ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符

DestroyCaret 清除(破坏)一个插入符

EnumCalendarInfo 枚举在指定“地方”环境中可用的日历信息

EnumDateFormats 列举指定的“当地”设置中可用的长、短日期格式 EnumSystemCodePages 枚举系统中已安装或支持的代码页

EnumSystemLocales 枚举系统已经安装或提供支持的“地方”设置 EnumTimeFormats 枚举一个指定的地方适用的时间格式 ExitWindowsEx 退出windows,并用特定的选项重新启动 ExpandEnvironmentStrings 扩充环境字串

FreeEnvironmentStrings 翻译指定的环境字串块 GetACP 判断目前正在生效的ANSI代码页

GetAsyncKeyState 判断函数调用时指定虚拟键的状态 GetCaretBlinkTime 判断插入符光标的闪烁频率 GetCaretPos 判断插入符的当前位置

GetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域 GetCommandLine 获得指向当前命令行缓冲区的一个指针 GetComputerName 取得这台计算机的名称 GetCPInfo 取得与指定代码页有关的信息

GetCurrencyFormat 针对指定的“地方”设置,根据货币格式格式化一个数字 GetCursor 获取目前选择的鼠标指针的句柄 GetCursorPos 获取鼠标指针的当前位置

GetDateFormat 针对指定的“当地”格式,对一个系统日期进行格式化

GetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间

GetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄

GetEnvironmentVariable 取得一个环境变量的值 GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件 GetKBCodePage 由GetOEMCP取代,两者功能完全相同

GetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局 GetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表 GetKeyboardLayoutName 取得当前活动键盘布局的名称 GetKeyboardState 取得键盘上每个虚拟键当前的状态 GetKeyboardType 了解与正在使用的键盘有关的信息 GetKeyNameText 在给出扫描码的前提下,判断键名

GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态

GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息 GetLocaleInfo 取得与指定“地方”有关的信息 GetLocalTime 取得本地日期和时间

GetNumberFormat 针对指定的“地方”,按特定的格式格式化一个数字 GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页

GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型 GetSysColor 判断指定windows显示对象的颜色 GetSystemDefaultLangID 取得系统的默认语言ID GetSystemDefaultLCID 取得当前的默认系统“地方” GetSystemInfo 取得与底层硬件平台有关的信息 GetSystemMetrics 返回与windows环境有关的信息

GetSystemPowerStatus 获得与当前系统电源状态有关的信息

GetSystemTime 取得当前系统时间,这个时间采用的是“协同世界时间”(即UTC,也叫做GMT)格式

GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步 GetThreadLocale 取得当前线程的地方ID GetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)

GetTimeFormat 针对当前指定的“地方”,按特定的格式格式化一个系统时间 GetTimeZoneInformation 取得与系统时区设置有关的信息 GetUserDefaultLangID 为当前用户取得默认语言ID GetUserDefaultLCID 取得当前用户的默认“地方”设置 GetUserName 取得当前用户的名字

GetVersion 判断当前运行的Windows和DOS版本

GetVersionEx 取得与平台和操作系统有关的版本信息 HideCaret 在指定的窗口隐藏插入符(光标)IsValidCodePage 判断一个代码页是否有效 IsValidLocale 判断地方标识符是否有效 keybd_event 这个函数模拟了键盘行动 LoadKeyboardLayout 载入一个键盘布局

MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换 MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换

MessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的 mouse_event 模拟一次鼠标事件

OemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态 OemToChar 将OEM字符集的一个字串转换到ANSI字符集 SetCaretBlinkTime 指定插入符(光标)的闪烁频率 SetCaretPos 指定插入符的位置

SetComputerName 设置新的计算机名

SetCursor 将指定的鼠标指针设为当前指针 SetCursorPos 设置指针的位置

SetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间

SetEnvironmentVariable 将一个环境变量设为指定的值 SetKeyboardState 设置每个虚拟键当前在键盘上的状态 SetLocaleInfo 改变用户“地方”设置信息 SetLocalTime 设置当前地方时间

SetSysColors 设置指定窗口显示对象的颜色 SetSystemCursor 改变任何一个标准系统指针 SetSystemTime 设置当前系统时间

SetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步

SetThreadLocale 为当前线程设置地方

SetTimeZoneInformation 设置系统时区信息 ShowCaret 在指定的窗口里显示插入符(光标)ShowCursor 控制鼠标指针的可视性

SwapMouseButton 决定是否互换鼠标左右键的功能

SystemParametersInfo 获取和设置数量众多的windows系统参数 SystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间

ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符

ToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符 UnloadKeyboardLayout 卸载指定的键盘布局

VkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态

11.API之进程和线程函数

CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作 CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用

ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接 CreateEvent 创建一个事件对象

CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人)CreateMutex 创建一个互斥体(MUTEX)

CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用 CreatePipe 创建一个匿名管道

CreateProcess 创建一个新进程(比如执行一个程序)CreateSemaphore 创建一个新的信号机

CreateWaitableTimer 创建一个可等待的计时器对象

DisconnectNamedPipe 断开一个客户与一个命名管道的连接 DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄

ExitProcess 中止一个进程

FindCloseChangeNotification 关闭一个改动通知对象

FindExecutable 查找与一个指定文件关联在一起的程序的文件名 FindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化

FindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化

FreeLibrary 释放指定的动态链接库

GetCurrentProcess 获取当前进程的一个伪句柄

GetCurrentProcessId 获取当前进程一个唯一的标识符 GetCurrentThread 获取当前线程的一个伪句柄

GetCurrentThreadId 获取当前线程一个唯一的线程标识符 GetExitCodeProces 获取一个已中断进程的退出代码 GetExitCodeThread 获取一个已中止线程的退出代码

GetHandleInformation 获取与一个系统对象句柄有关的信息 GetMailslotInfo 获取与一个邮路有关的信息

GetModuleFileName 获取一个已装载模板的完整路径名称

GetModuleHandle 获取一个应用程序或动态链接库的模块句柄 GetPriorityClass 获取特定进程的优先级别

GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况

GetProcessTimes 获取与一个进程的经过时间有关的信息

GetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存

GetSartupInfo 获取一个进程的启动信息

GetThreadPriority 获取特定线程的优先级别

GetTheardTimes 获取与一个线程的经过时间有关的信息

GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符

LoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间 LoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间 LoadModule 载入一个Windows应用程序,并在指定的环境中运行 MsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回

SetPriorityClass 设置一个进程的优先级别

SetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序

SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量 SetThreadPriority 设定线程的优先级别

ShellExecute 查找与指定文件关联在一起的程序的文件名 TerminateProcess 结束一个进程 WinExec 运行指定的程序

12.API之控件与消息函数

AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小

AnyPopup 判断屏幕上是否存在任何弹出式窗口

ArrangeIconicWindows 排列一个父窗口的最小化子窗口 AttachThreadInput 连接线程输入函数

BeginDeferWindowPos 启动构建一系列新窗口位置的过程 BringWindowToTop 将指定的窗口带至窗口列表顶部 CascadeWindows 以层叠方式排列窗口

ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄 ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标 CloseWindow 最小化指定的窗口 CopyRect 矩形内容复制

DeferWindowPos 该函数为特定的窗口指定一个新窗口位置 DestroyWindow 清除指定的窗口以及它的所有子窗口 DrawAnimatedRects 描绘一系列动态矩形

EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入

EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态

EnumChildWindows 为指定的父窗口枚举子窗口 EnumThreadWindows 枚举与指定任务相关的窗口 EnumWindows 枚举窗口列表中的所有父窗口 EqualRect 判断两个矩形结构是否相同

FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口

FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口 FlashWindow 闪烁显示指定窗口

GetActiveWindow 获得活动窗口的句柄

GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)

GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息

GetClassLong 取得窗口类的一个Long变量条目 GetClassName 为指定的窗口取得类名

GetClassWord 为窗口类取得一个整数变量

GetClientRect 返回指定窗口客户区矩形的大小

GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄 GetFocus 获得拥有输入焦点的窗口的句柄 GetForegroundWindow 获得前台窗口的句柄

GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄 GetParent 判断指定窗口的父窗口

GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄 GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分 GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系 GetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID GetWindowLong 从指定窗口的结构中取得信息

GetWindowPlacement 获得指定窗口的状态及位置信息

GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内

GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容 GetWindowTextLength 调查窗口标题文字或控件内容的长短 GetWindowWord 获得指定窗口结构的信息 InflateRect 增大或减小一个矩形的大小

IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集

InvalidateRect 屏蔽一个窗口客户区的全部或部分区域 IsChild 判断一个窗口是否为另一窗口的子或隶属窗口 IsIconic 判断窗口是否已最小化 IsRectEmpty 判断一个矩形是否为空 IsWindow 判断一个窗口句柄是否有效

IsWindowEnabled 判断窗口是否处于活动状态

IsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字

IsWindowVisible 判断窗口是否可见 IsZoomed 判断窗口是否最大化

LockWindowUpdate 锁定指定窗口,禁止它更新

MapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统

MoveWindow 改变指定窗口的位置和大小

OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来 OpenIcon 恢复一个最小化的程序,并将其激活 PtInRect 判断指定的点是否位于矩形内部 RedrawWindow 重画全部或部分窗口

ReleaseCapture 为当前的应用程序释放鼠标捕获

ScreenToClient 判断屏幕上一个指定点的客户区坐标 ScrollWindow 滚动窗口客户区的全部或一部分

ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分 SetActiveWindow 激活指定的窗口

SetCapture 将鼠标捕获设置到指定的窗口

SetClassLong 为窗口类设置一个Long变量条目 SetClassWord 为窗口类设置一个条目

SetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口 SetForegroundWindow 将窗口设为系统的前台窗口 SetParent 指定一个窗口的新父 SetRect 设置指定矩形的内容

SetRectEmpty 将矩形设为一个空矩形

SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID SetWindowLong 在窗口结构中为指定的窗口设置信息 SetWindowPlacement 设置窗口状态和位置信息 SetWindowPos 为窗口指定一个新位置和状态

SetWindowText 设置窗口的标题文字或控件的内容 SetWindowWord 在窗口结构中为指定的窗口设置信息

ShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口 ShowWindow 控制窗口的可见性

ShowWindowAsync 与ShowWindow相似

SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果

TileWindows 以平铺顺序排列窗口

UnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果

UpdateWindow 强制立即更新窗口

ValidateRect 校验窗口的全部或部分客户区

巧用API限制游戏的运行 第3篇

关键词:API函数;监视游戏;限制游戏

中图分类号:TP316文献标识码:A文章编号:1007-9599 (2010) 13-0000-02

Limit the Operation of the Game Using API

Chen Zhengfa

(Jiangsu Technician College,Yancheng224002,China)

Abstract:In this paper,the API function VB6.0 power,to monitor the initial moment of the game explains how to run and automatically turn off the game programming,clever use of the API function that can always monitor and ensure close game.

Keywords:API function;Monitoring game;Limit game

现在计算机已普及到千家万户,随之而来的电脑游戏也良莠不齐,有相当数量的学生沉迷于此,严重影响了学生的学习成绩。在学校机房,机房教师需要时刻监视学生是否在玩游戏,影响了正常教学;在有小孩上学的家庭,家长对小孩玩游戏防不胜防……笔者通过多年的VB教学实践,利用API函数的强大功能初步探讨了一个可随系统一起运行且能随时监视游戏的编程过程,若有游戏窗口打开,立刻善意提醒玩家并强制关闭游戏,为机房管理和家庭戒除不良游戏提供了一个方法。

一、要用到的API函数功能说明

API函数的声明要先添加一个:Module1模块,然后在该模块中声明API函数。

FindWindow直接查找正在运行的窗口的标题

PostMessage将一条消息投递到指定窗口的消息队列

GetForegroundWindow获得前台窗口的句柄

GetClassName为指定的窗口取得类名

GetWindowText取得一个窗体的标题文字

GetSystemDirectory取得Windows系统目录

GetWindow获得一个窗口的句柄

ShowWindow控制窗口的可见性

RegOpenKey打开一个现有的注册表项

RegQueryValueEx获取一个项的设置值

RegSetValueEx设置指定项的值

RegCloseKey关闭系统注册表中的一个项

二、编写修改注册表的子过程Regedit

该子过程需在Module1模块中编写。代码如下:

Public Sub Regedit(strPath As String,strKey As String,strValue As String)

Dim r As Long

Dim s As String

Dim s1 As String

Dim n As Long

Dim keyhand As Long

s=String(255,Chr(0))

s1=String(255,Chr(0))

n=255

r=RegOpenKey(HKEY_LOCAL_MACHINE,strPath,keyhand)

If r=0 Then

r=RegQueryValueEx(keyhand,strKey,0,1,ByVal s,255)

If r<>0 Then

r=RegSetValueEx(keyhand,strKey,0,1,ByVal strValue,LenB(strValue))

End If

End If

r=RegCloseKey(keyhand)

End Sub

三、编写监视游戏运行及关闭游戏的子过程CloseWin

使用API函数FindWindow直接查找正在运行的窗口的标题,就可以判断有哪些程序在运行了,再用API函数PostMessage强行关闭正在运行的游戏。代码如下:

Sub CloseWin()

Dim WinText(1 To 6)As String

Dim i As Integer

WinText(1)="扫雷"

WinText(2)="纸牌"

WinText(3)="空当接龙"

WinText(4)="连连看v3.0"

WinText(5)="暴力摩托"

WinText(6)="Macromedia Flash player7"

For i=1 To 7

Handle=FindWindow(0&,WinText(i))

PostMessage Handle,WM_CLOSE,0,0

If Handle <>0 Then MsgBox"为了你的学业,请不要迷恋游戏!"

Next i

End Sub

该部分代码需要根据实际情况进行更新和添加。

四、编写Timer事件

要实现监视系统,首先要实现的是Timer事件,就是要程序每隔一段时间去“检查”一下当前系统中有哪些程序在运行,本功能采用调用子程序的方式完成,可使程序清晰明了。先装载Timer控件,再设置Interval属性。代码如下:

Private Sub Timer1_Timer()

Call CloseWin

End Sub

五、编写系统启动时自我运行和隐藏程序

为了防止该软件被玩家删除,游戏监测软件需要随操作系统的运行而自动运行,并且要隐藏运行。该部分代码如下:

Private Sub Form_Load()

Dim K As Long

'得到系统的系统目录

systempath=String(255,Chr(0))

GetSystemDirectory systempath,254

systempath=Left(systempath,InStr(systempath,Chr(0))-1)

'自我复制到系统目录

If Not Dir(systempath &""&"GameOver.exe")="GameOver.exe"Then

FileCopy App.Path &""&"GameOver"&".exe",systempath &""&"GameOver.exe"

End If

'注冊表中设置自动运行

regedit "SoftwareMicrosoftWindowsCurrentVersionRun","",systempath &""&"GameOver"&".exe"

‘隐藏程序窗口

k=GetWindow(Me.hwnd,GW_OWNER)

ShowWindow k,SW_HIDE

Timer1.Enabled=True

Me.Hide

End Sub

六、编写免删除程序

为了进一步保证游戏监测程序的正常运行,利用GetForegroundWindow函数、GetWindowText函数、PostMessage函数和GetClassName函数增加了在系统运行时用户不能打开任务管理器,并且利用regedit子程序使游戏监测程序不能被删除的功能。代码如下(在Timer事件中添加):

Private Sub Timer1_Timer()

Dim k As Long

Dim s As String

Dim s1 As String

s=Space(19)

s1=Space(19)

'得到句柄

k=GetForegroundWindow

'得到类名

GetClassName K,s,20

'查看当前程序的标题

GetWindowText K,s1,20

If Left(s1,7)="Windows" Then

PostMessage K,&H10,0&,0&‘关闭程序

Exit Sub

End If

'不准删除注册表里的信息

Regedit "SoftwareMicrosoftWindowsCurrentVersionRun","",systempath &""&"GameOver"&".exe"

End Sub

本程序在VB6.0下测试通过,在Windows2000和WindowsXP下运行良好。

参考资料:

[1]刘炳文,李凤华.Visual Basic 6.0 Win32 API程序设计.北京:清华大学出版社,2001,9

API应用 第4篇

本文阐述的是利用在线地图服务商免费提供的开放地图API研究的GIS, 创建小型地理信息服务系统, 以Web GIS的形式发布更便利、更准确、更智能化的地理信息。

1 开放地图 API 的现状及前景:了解 Web 地图 API 相关技术及优势

Web地图服务是利用成熟的Web技术、计算机技术、GIS技术, 基于互联网实现的一种新型地图服务方式。随着网络技术的开放, 在互联网上已经有相当多的在线地图服务商提供了免费或收费的地图API程序接口, 诸如Google Maps、百度地图、Map ABC、Mapbar、Microsoft Virtual Earth Maps、Yahoo Maps、51地图等等。地图程序开发者使用这些开放的API进行二次开发制作第三方地图应用, 通过这些地图API可以快速方便调用开发地图服务商提供的各种免费的地图资源, 从而根据用户需要来实现各种各样的第三方地图应用。开放式地图API的诞生标志着互联网在线电子地图自由定制服务的兴起, 对当前热门的基于位置的服务有了激进的作用, 使得国内外很多大型服务型网站推出相应的地图服务应用, 随着开发地图技术的发展基于这些在线地图服务的第三方应用也会越来越多。

基于开放地图API的WebGIS信息系统特点:

1) 稳定可靠的多层架构体系:基于开放地图API的Web-GIS信息系统采用的是典型的B/S构架, 包括负责数据处理的数据层、负责逻辑流转控制的业务逻辑层以及负责前台界面显示的客户层架构, 其中业务逻辑层根据逻辑分工又详细分解为Web页面程序控制层和地图资源服务层。通过这种多层架构体系使得系统开发结构逻辑层次非常分明、业务功能分工更加明确, 进一步保证了这种多层次架构系统的运行效率。同时, 在服务器端也更容易维护, 客户端更简单操作, 提高了系统的稳定性和可持续性。

2) 简单易用的空间数据库:WEBGIS地图显示采用地图资源服务商免费提供的地图服务, 所请求的地图数据资源基本都来源自地图资源服务商, 与传统的基于ARCIMS的WEBGIS相比, 基于开放地图API的Web GIS信息系统不需要设计组织多层的、复杂的空间数据库, Web GIS就是能充分利用现有互联网资源, 将全局的、复杂的、工作量超大的地图数据处理交由服务商的服务器去执行, 而相对数据量比较小的、基础的局部数据及简单操作则由客户端直接完成, 这就大大降低了中小企业或开发者开发的成本。

3) 更多丰富的组件和接口:开放地图API一般都提供了很多丰富灵活的组建和接口, 同时为了保持系统的可扩展性, 为今后系统的扩展和更新作充分的准备, 系统中设计和预留了程序应用接口。开发者为了进一步提高系统的运行的高效性, 在开发过程中编写和灵活调用一些API内置的组件和接口, 让它们直接独立地处理相关的逻辑业务。

4) 可定制的用户地图:与传统的基于ARCIMS的WEBGIS客户端标准界面相比, 目前互联网上最流行的Google地图和百度地图, 在地图表现及用户体验上更容易受到用户的青睐。另外, 电子地图的基本控制操作方面和业务服务功能方面, API都提供了丰富的应用接口, 开发者可以按照方便快捷及人性化设计原理来定制用户界面, 根据用户的业务和习惯的角度出发, 开发用户真正需要的地图。

2 针对几款主流的开放地图 API 的初步调研:选择适合自己的地图API服务

针对互联网上几个主流的地图应用服务商:高德地图、百度地图Bmap、谷歌地图Google Maps、图吧地图Map Bar、Map ABC地图、51地图等地图应用服务商进行初步技术调研, 这几款地图应用相对较多, 比较成熟稳定, 提供的接口应用不尽相同, 开发文档也参差不齐, 下面根据调研结果来做个大致的总结, 是用户更加清楚的了解开放地图API。

百度地图API:基于百度地图服务的应用接口, 提供基本地图展现、搜索、定位、逆/地理编码、路线规划、LBS云存储与检索等功能, 包括Android SDK、车联网API、定位SDK、Web服务API、Java Script API、i OS SDK、LBS云等多种开发工具与服务, 适用于PC端、移动端、服务器等多种设备、多种操作系统下的地图应用开发。

Google Maps API:Google Maps API是基于谷歌地图开发, 开发者能够使用Java Script结合HTML直接将谷歌地图直接嵌入HTML网页中。谷歌地图API提供了丰富的组件和接口应用用来处理地图资源, 并通过各种接口应用向地图添加用户自定义内容, 从而使用户能够在自己的网站上根据业务需要来创建业务丰富、功能强大的在线电子地图程序。谷歌地图API提供了多种地图模式, 比如卫星地图、3D地图、交通地图等。另外, 谷歌地图还支持常规的KML格式的地标文件。

MapABC API:MapABC API提供了多种地图API和搜索API, 用户可以根据自己的技术架构进行选择, 创建各种地图应用。常用的Map ABC Ajax Java Script API能够在HTML中方便的构建Java Script地图应用;搜索API是基于Java Script的地图数据查询计算接口, 所有搜索结果都可以展现在Java Script地图上。

MapBar API:MapBar API提供了基本的地图显示接口外, 还主要提供有偿API接口服务, 一般专门为大中型网站、行业门户网站、大型商业网站以及各种企业级用户。

本次研究的基于开放地图API的WEBGIS应用是使用谷歌地图Google Maps的地图资源, 利用谷歌地图提供的Google-Maps API接口程序将大家熟识的谷歌地图非常方便的嵌入到网页中, 并结合AJAX异步请求功能, 使得用户在不刷新客户端浏览器页面的情况下, 向地图服务器请求关键数据并在后台更新到页面, 这样大大减少了用户在浏览页面时的等待时间, 提高了用户体验度。

Google Maps API是谷歌地图面向开发者推出的免费编程开放接口, 是谷歌地图开发商推出的编程API, 网站开发者使用谷歌地图API时只需使用Java Script脚本语言就可以轻松将谷歌地图服务嵌入到自己的HTML网页中, 根据业务需要还可以自主地在定制的地图上制作出特殊标记或者打开指定的信息窗口。

下面针对常用的GoogleMapsAPI类模块做一下简单介绍:

GoogleMapsAPI在功能上分为六大类:核心类 (Core Class) 、基础类 (Base Classes) 、事件类 (Event Classes) 、控制类 (ControlClasses) 、布局类 (Overlay Classes) 、服务类 (Service Classes) 。

1) GMaps对象。GMaps对象是GoogleMapsAPI中最重要的一个对象, 用于实现创建和控制地图等最基本的功能, 该对象包含的类方法相当丰富, 如设置地图中心及缩放级别、添加工具控件、添加标注点信息窗等。

2) GControl控件。GControl控件对地图进行操控的一组对象的总称, 包括以下常用的8种基本控件:

3) GMarker标注。使用GMarker标注可以在地图上指定的位置添加标注点对象, 用于指示地理位置、显示信息窗口等。

4) GInfoWindow对象。针对地图的指定坐标点提供信息窗口的显示对象, 使用GInfo Window对象信息显示的内容除了可以使用简单的文本外, 还支持使用HTML多媒体页面。

5) GPolyline和GPolygon对象。谷歌地图还提供了GPoly-line折线对象和GPolygon多边形对象, 他们分别是用于地图标记指定的路径和区域显示, 这两个对象的类属性和类方法极为相似, 主要应用与公交线路、驾车路线、区域搜索、行政区域等方向。

3 开放地图API的Web应用:结合实用Web技术构建AJAX地图网站

传统的WebGIS开发, 需要完成一套完整的专用的地图类服务管理系统。传统的Web GIS开发开发难度很大、周期过长, 一般情况下是需要一个技术相对比较强大的开发团队才能完成的, 另外, 也需要比较充足的硬件设备的支持。Google MapsAPI是谷歌公司提供的Java Script类API程序接口。网络前端开发员可以通过Google Maps API来调用这些程序接口将谷歌地图非常方便地嵌入到自己的网页, 另外, 开发者也可以根据用户需要进行快速的二次开发来定制专题地图, 以此来创建操作简单、功能强大的谷歌地图应用程序。

AJAX即“Asynchronous Javascript And XML” (异步JavaS-cript和XML) , 是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换, AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下, 对网页的某部分进行更新。AJAX是一种技术组合或者是设计模式, 它将几项目前已经成熟的Web应用程序开发技术巧妙组合, 在客户端浏览器与Web服务器之间形成一个中间层, 即AJAX引擎, 使浏览器具备与Web服务器异步通信的能力。

在AJAX各项组合技术中, 最为核心的是JavaScript和XMLHttp Request。普通用户可以通过HTML前台页面中的表单控件、按钮、链接等操作与Web服务器应用程序进行交互, 调用响应事件的Java Script函数从而发起请求。这里的请求并不是由客户端浏览器直接发送给Web服务器端, 客户端仅仅是发起请求, 发起请求之后客户端将请求控制权交给AJAX引擎处理。作为AJAX引擎的核心组成部分, Java Script提供了用户交互的异步请求接口, 一方面来响应客户端浏览器的事件, 创建x MLHttp Request对象, 另一方面规定Web服务器应答数据处理函数, 最后以GET方式或者POST方式向Web服务器发送请求, 并传递相关参数。在AJAX向Web服务器发起请求的同时, 客户端用户仍然可以通过Web应用程序前台浏览器界面进行查看、交互、操作, 用户感觉不到Web客户端端与Web服务器端的交互请求及请求响应的过程, 不必等待Web页面的更新, 从而提高实时性和交互性。

目前已经有很多web应用开发者使用GoogleMapsAPI来扩展地图服务, 极大地方便了人们的生活。然而, 如果每次都调用Google Maps进行地图解析, 势必会对客户端和服务器都造成极大的数据传输压力, 效率并不高, 而且Web应用可能会要求保存解析的结果。Google Maps API开放版采用的是Ajax技术, 与传统Web操作方式相比, Google Maps不再需要点击特定的链接来下载新的地图数据, 用户的操作 (如在地图上拖拽) 随时触发浏览器与服务器之间的通信。另外浏览器和服务器之间的交互是异步进行的, 当客户端在请求服务器数据的同时, 用户的工作流程不再被频繁的刷新过程打断。Google Maps API提供的这些快速检索方式, 就是通过AJAX引擎来完成向服务端请求数据, 每次请求得到的反馈数据仅仅限于查询到的数据, 不包含前台页面呈现的HTML等页面信息, 这样情况下反馈数据中就不存在任何冗余和浪费, 从而减少了用户交互时数据下载总量, 提高了系统的响应效率。

其中, GMap2 () 是GoogleMapsAPI的一个构造函数, 主要用来创建一个地图实例, 并将该地图实例放置到地图容器$ ("#map") 中, 然后利用set Center () 类方法来初始化地图的中心点以及缩放级别, 以此来实现地图显示区域的定位。

初始化完成后, 一个基础的地图实例就完成了, 如果要对地图进行一些基本控制, 诸如缩放平移控制、切换卫星地图/平面地图/3D地图类型、鹰眼缩略图模式、查看地图比例尺等, API提供了add Control () 方法可以根据需要在地图上添加相应的工具控件, 譬如常用的平移缩放控件、比例尺控件、鹰眼控件、地图类型控件等, 如下所示:

另外, 用户还可以根据业务需要结合AJAX进一步配置更具动态交互性更强的地图, 如向地图添加覆盖物、信息点、路径规划、测量距离、计算面积等对象。Overlay是Google Maps一些覆盖物对象, 使用add Overlay () 方法可以将它们显示在地图上的指定地理位置, 同时程序接口还提供用户与其进行交互的功能。使用Overlay的一个典型应用就是把一个标注点、路径、多边形覆盖物等标记放在指定的位置以指示一些特殊位置或地理区域。下面的代码是向地图上添加一个信息点标注:

4 总结

本次研究室通过系统介绍GoogleMapsAPI的基本功能、技术优势和类使用方法, 并认真探讨了这种基于谷歌地图API的Web GIS在线地图服务的应用研究。经调查研究并通过实践表明, 基于开发地图API二次开发的Web在线地图服务应用系统, 从用户体验角度来说确实增强了客户端用户交互性, 同时丰富了客户端互动功能, 进一步提升了用户使用web地图服务的体验度。Google Maps API应用于Web地图服务中, 可明显地提高客户端的浏览效果, 使电子地图应用的开放更为广泛地被非专业技术用户所接受, 对电子地图服务的发展和应用推广具有重要的应用价值

摘要:Web GIS是利用成熟的Web技术、计算机技术、GIS技术基于互联网实现的一种新型地图服务方式。该文探讨了基于Google Maps API的Web GIS地图服务的应用研究, 阐述了使用开放地图API构建Web GIS的优势, 开发者可以轻松利用开发地图服务商所提供的各项地图资源及服务, 非常方便高效地实现多种多样的在线电子地图应用。

关键词:Web GIS,地图API,百度地图,google Maps API,AJAX

参考文献

[1]花杰.基于Google Maps API的WEBGIS应用研究[J].中国高新技术企业, 2010 (25) .

[2]赵俊三, 赵耀龙.GIS发展的最新趋势及其应用前景[J].测绘工程, 2000 (2) .

[3]王志红, 胡川.基于Google Maps API的网络地图服务系统的研究与应用[J].测绘标准化, 2010 (26) .

[4]陈圆, 简季, 杨武年.Google Maps组件二次开发与应用[J].地球信息科学, 2008 (10) .

WIN32 API是什么 第5篇

操作系统上的应用程序。可以说,如果你曾经学过VC,那么API对你来说不是什么问题。但是如果你没有学过VC,或者你对Windows95的结构体系不熟悉,那么可以说,学习API将是一件很辛苦的事情。

如果你打开WINDOWS的SYSTEM文件夹,你可以发现其中有很多附加名为DLL的文件。一个DLL中包含的API函数并不只是一个,数十个,甚至是数百个。我们能都掌握它嘛?回答是否定的∶不可能掌握。但实际上,我们真的没必要都掌握,只要重点掌握Windos系统本身自带的API函数就可以了,

但,在其中还应当抛开掉同VB本身自有的函数重复的函数。如,VB的etAttr命令可以获得文件属性,SetAttr可以设置文件属性。对API来讲也有对应的函数GetFileAttributes和SetFileAttributes,性能都差不多。如此地一算,剩下来的也就5、600个。是的,也不少。但,我可以敢跟你说,只要你熟悉地掌握100个,那么你的编程水平比现在高出至少要两倍。尽管人们说VB和WINDOWS具有密切的关系,但我认为,API更接近WINDOWS。如果你学会了API,首要的收获便是对WINDOWS体系结构的认识。这个收获是来自不易的。

API应用 第6篇

DirectX 12的新特性及硬件支持

DX12最重要的变化之一就是更像底层API,在这方面,DX12和AMD Mantle非常相似。在硬件抽象层上走得比以往更深入,能够同时减轻CPU、GPU的过载(overload)。具体包括:应用可追踪GPU流水线、控制资源状态转换(比如从渲染目标到纹理)、控制资源重命名,更少的API和驱动跟踪、可预判属性等。

DX12另一个值得我们关注的变化就是其大幅提高了多线程效率,可以充分发挥多线程硬件的潜力。这个多线程指的不是显卡,而是多核心处理器。虽然DX11已经较好地支持了多线程,但由于运行时、驱动过载的影响,每个核心仍然浪费大量的闲置时间,DX12则能将几乎每个核心的所有潜力都挖掘出来,而且可以做到随着核心数量的增长,性能几乎线性提升。

微软举的例子是3DMark。将其导入支持DX12之后,可以发现CPU利用率提高了50%,同时在各个核心之间的负载分配也更加均衡了。DX12模式的3DMark 11某环节测试时间可以比DX11缩短大约32%,其中显卡花费时间更是节省了整整一半。

另外从负载分配情况可以看出,DX11下有多个环节都只能由同一个核心执行,大大降低了效率、浪费了时间,DX12则能让所有核心共同参与执行,尤其是在驱动环节。

简单地说,DX12虽然是图形开发规范,但是有了它,应用、游戏就能以超高的效率发挥多核心处理器的优势,充分利用硬件资源。

另外,DX12还带来了更底层的API和跨平台移植效率。这一点同样和AMD Mantle有着异曲同工之妙,只不过Mantle局限在AMD GCN架构显卡上,而DX12则是通用的。

在硬件支持上,NVIDIA的开普勒、费米、麦克斯韦架构全部都支持DX12,也就是GeForce 200系列以来的型号都可以,DX11的都行。AMD方面,所有GCN架构的显卡均支持DX12,也就是Radeon HD 7000、Radeon R200系列。Intel第四代Haswell开始可以支持DX12,但其实仅限最高端的两个型号:GT3 Iris 5100、GT3e Iris Pro 5200。值得注意的是,高通也正在优化自家的骁龙处理器,以全面支持DX12。需要注意的是,微软在公布DX12的时候,曾告诉过大家DX12还有多项特性并未公布,所以现在宣布支持DX12的N卡和A卡,暂时还只能确定只支持部分DX12特效,到底能不能支持完整的DX12还很难说,不过从业界的一贯风格来看,等Windows10正式推出后,大家估计还需要购买新的显卡才能体验到完整的DX12。

AMD处理器借DX12再度崛起?

虽然AMD的处理器架构理念看上去很先进,在核心数量和多核性能上也表现不错,但是不得不承认在单核心性能上AMD和Intel还是有一些差距,以至于在整体表现上Intel的处理器看上去会更好一些。对于游戏玩家来说,虽然多核心的概念已经出现了很多年,但是到目前为止,大部分游戏对多核心多线程的支持依旧很差,这也就是为什么有些时候会出现四核的AMD处理器在游戏中的表现还不如双核的Intel处理器这样匪夷所思的现象。这对AMD无疑是一个很大的打击。

而DX12的出现或许能帮助AMD改善这一窘境。前面我们也提到,DX12和过去的版本相比,很大的一项改进就是大幅提升了对处理器多核心多线程的利用率,可以彻底发挥多核处理器在游戏中的性能。微软宣称,DX12对多核心CPU的利用几乎是完美线性增长的,换句话说,也就是四核心的游戏性能能够接近或达到单核心的四倍。如果真如微软所说,那么AMD处理器的多核心多线程能力将在DX12中得到释放,弱势的表现或许将彻底改变,凭借不错的性价比,AMD多核处理器或许能再次成为玩家首选的游戏处理器,处理器市场的格局或许会发生不小的变化。而Intel将会如何面对这一改变,玩家们也只需坐等好戏。

TV游戏和PC游戏更加同质?

熟悉TV游戏和游戏主机的玩家都会发现,虽然TV游戏主机的配置看上去远落后于PC,但是游戏性能和画面效果却能超越配置更高的PC,相信大家还记得当年《生化危机4》在TV游戏主机和在PC上表现出的巨大画质差异。这其中的原因和底层API有着莫大的关系。作为一款TV游戏主机,其使用的定制版硬件和系统都是为了游戏服务,作为一个封闭的系统,TV游戏主机可以更加深入地利用底层API去挖掘硬件潜力,实现更高的硬件利用率和游戏性能。而PC主机则不一样,PC主机要保持开放性和兼容性,去实现更多的应用环境,所以硬件上无法做到和TV游戏主机那样对游戏深入底层的优化,所以在效率上显然无法和TV游戏主机抗衡。

DX12的出现则可能会改变这一格局。DX12的一大特点就是提供了更加底层的API,开发人员可以借此更深入硬件底层。虽然DX12目前所表现出的效率还略低于Mantle,但是已经展现出巨大的实力。而AMD已经明确不再继续开发Mantle,所以DX12就是未来最佳的底层API了。借助DX12,未来PC主机的游戏性能将进一步提高,达到TV游戏主机的性能也并不是一句空话。

从另外一个方面来看,次世代游戏主机PS4和XBOX ONE都采用了AMD APU架构,虽然目前都有着不错的游戏画质和性能表现,但是DX12的到来,将让高端游戏PC的游戏性能和画质超越TV游戏主机。而次世代游戏主机的更新换代可能也会变得更快,甚至直接被PC所取代。再加上DX12带来了更为方便的跨平台移植,所以未来游戏大作的多平台发售也会变得更加简单,TV游戏和PC游戏的界限或许更加模糊。

比驱动更加给力的“兴奋剂”?

对玩家来说,更新显卡驱动带来的游戏性能提升是能实实在在感受到的,而DX12则能提供更加恐怖的性能提升。在公布DX12的时候,微软曾宣称,“DX12的效率将比DX11提升50%”。如果真如微软说的如此高效,那么我们简单地试想一下,一款游戏的DX11版如果只有20fps,那么DX12版将有30fps的表现,这10fps的提升直接决定了游戏表现是卡顿还是接近流畅运行。这对于拥有中低端显卡的玩家来说,无疑是一个好消息。但是从另一个方面看,仅仅一个API的升级就带来如此巨大的性能提升,恐怕硬件厂商并不买单,实现起来可能也没有这么容易。

API应用 第7篇

自19世纪九十年代互联网出现以来, 地理信息系统的各个方面都经历了显著的转变, GIS的概念模式从一个孤立的体系转变成为一个互操作的体系, 从单机模式转变为到分布式的解决方案, 从个人所有的数据形式转变到开放的规范转换数据形式, 从桌面平台到互联网环境。本体论的改变和科技的进步增强了公众对GIS的发展潜力的认识, 同时也激励了科研人员去探索更强大的GIS技术。地图API指的是地图应用程序编程接口, 在2005年被提出, 它是一种可产生巨大网络应用的免费适用工具, 受到了许多网页开发者、地理学者甚至是非相关地理人员的称赞。

最新网络服务的发展, 如三维可视化工具 (Google Earth和World Wind) , 地图应用程序编程接口 (API) 有助于网络分布式GIS的实现和发展。在互联网技术中的最新成果和著作使得人们渐渐地意识到网络服务和三维可视化工具在GIS中的重要性, 2005年Smiatek将网络服务的实施描述成气候模型访问GIS数据库时的一个中间平台, 基于网络服务技术, 2005年Tait在开发分布式GIS应用时, 引入了入口和网关的概念来发现和发布地理目录。

Nourbakhsh和Pearce等人在06和07年就高度赞扬了三维可视化是一个非常有价值的工具, 特别是研究三维空间和开发全球最新的网络GIS应用方面, Lisle在2006年就给出了一系列使用谷歌地球可视化和开发许多地质平台的好例子。然而, 不像网络服务和三维可视化工具, 地图API并没有受到科学者们同等的关注, 尽管地图API受到了网络开发者的热捧, 但是很少有人指出地图API在网络GIS应用方面的巨大潜力。

本文研究了地图API在网络GIS开发应用方面的潜力。研究提出了一个概念模式用于去开发和扩展API现有空间功能, 如:浏览和处理矢量和栅格数据的功能等。特别的是, 谷歌API被采用去开发一个网络原型, 用于散布美国密歇根州芒迪小镇城市蔓延的空间信息, 该网络原型表明一个空间数据库的空间和属性信息有可能使用谷歌API通过地理标记语言得到高效地显示。通过使用谷歌API, 地理标记语言 (GML) 在开放性的网络GIS开发中表现出了巨大的潜力, 本项研究对于未来使用地图API开发网络GIS应用具有重大的意义。

2 方法论

为了去挖掘地图API在网络GIS应用方面的巨大潜力, 这篇文章提出了一个框架, 用于处理和可视化地理标记语言数据以及使用地图API的通用遥感影像。提出的概念模型由三步组成。

(1) 将GIS数据库转换为地理标记语言或者任何一种网络兼容的遥感影像;

(2) 通过解析地理标记语言或者下载网络兼容的遥感影像来查询空间数据;

(3) 将空间数据和相应可视化的地图API类进行叠加。图1描绘了概念模型的概览和相关的技术。基于需要利用本地网络服务器存储的空间数据, 提出的框架也需要通过地图API和一个外部网络地图服务器连接起来, 该外部地图服务器提供了分布式的GIS服务和辅助空间数据。

2.1 数据的转换

存储在GIS数据库中的空间数据首先被转换为地理标记语言, 地理标记语言是一种数据描述语言, 编码和整合地理特性, 如空间和属性信息。在GML 3.x编码规范中, 为了支持几何基元 (如点、线串和多边形) 、集合复合体 (如封闭的几何基元集合) 和几何聚集 (如多点、多线、多多边形、多几何等) , 之前版本的核心模块被扩展。因此地理标记语言能够用来编码复杂的数据模型和展现真实世界的几何体。通过使用网格地理标记语言和改正的网格标记语言元素, 地理标记语言就可以用于去编码遥感影像。

2.2 数据查询

当空间数据被转换为合适的格式后, 地理标记语言文件和网络兼容图像在网络浏览器上被下载为单独的数据图层。为了提高处理的速度和用户的交互能力, 本研究采用了一种异步Iava Script和XML的网络开发技术来解析和查询地理标记语言文件。该技术只支持和服务器之间小量信息的交换, 避免用户发出请求的时候, 重复下载整个页面造成停机状态。

一旦web服务器得到地理标记语言文件, 各个元素和标记就可能经由XML文档对象模型被查询。每个数据图层将会产生一个数组, 去存储来自XML数据的所有地理要素的空间几何和属性信息。基于这种方法可以实现一个属性查询, 利用X查询和X路径, 将一个具有特殊属性的小子集从整个数据库中提取出来。

2.3 数据的叠加

大多数地图API在地图目录中都具有一些叠加通用几何要素的空间功能, 然而并不是所有的地图API都含有能可视化多种数据模型和它们的几何体 (如点、线、面) 的内嵌类库。在某些情况下, 网络开发者需要去开发通用的类库或者使用第三方类库去叠加多种几何地物和数据模型。

本实验采用的是谷歌API, 它提供了多余点、线、多边形的支持。一旦单个图层的地理要素从地理标记数据中查询出来, 就立即存储到一个数组中, 通过使用相应的类库, 存储的空间信息和属性信息可能作为一个参数去创建地图目录中自定义的叠加图层。类似的可以使用地图API来将栅格图层叠加到地图上。

本实验采用的谷歌API来实现的, 然而概念模型可能还可以使用于其他的地图API中, 假设选择的地图API支持以上所述的技术。本研究开发了一个网络原型用于散布美国密歇根州芒迪小镇城市蔓延的空间信息。

3 结语

本研究提出了一个使用地图API来可视化、浏览地理信息的框架, 该地理信息包含了矢量和栅格数据。基于本研究产生了一个网络原型, 研究证明该原型能够在数据挖掘方面给用户提供高效的动态交互。开放性的地图API源代码、灵活性的规范数据标准展现了地图API在新互联网GIS应用开发中具有的巨大潜力。能够在未来GIS的发展中提供强大的推动力。

4 评论

本文主要研究地图API在网络GIS应用开发中的巨大潜力, 虽然地图API具有源代码开放性、全球数据覆盖性、动态导航性、可查询性和易实现性。但是现存的API缺乏地理信息系统的空间功能, 很少有人发觉地图API在网络GIS应用方面的巨大潜力。而本文指出了地图API在网络GIS应用方面的潜力, 通过使用谷歌地图API来开发了一个网络原型, 用于散布美国密歇根州芒迪小镇城市蔓延的空间信息。并且提出了一个概念模型框架来可视化和浏览矢量栅格数据等地理信息。基于本研究产生的网络原型, 研究证明该原型能够在数据挖掘方面给用户提供高效的动态交互。

地图API的开放性和易实现性, 使得人们现在越来越关注它和GIS的结合, 使得分布式GIS的应用成为可能, 为不同地区的人们提供网络GIS服务, 实现了GIS的全覆盖性。开放性的地图API源代码、灵活性的规范数据标准展现了地图API在新互联网GIS应用开发中具有巨大的潜力, 能够在未来分布式GIS的应用发展中提供强大的支持和推动力。目前研究中提出的框架还需要不断地试验验和改进, 不断地完善和进步, 使得地图API能够和GIS完美结合, 实现基于地图API的网络GIS服务, 实现分布式的互操作, 使得网络GIS的发展更进一步, 推动网络GIS服务, 为人们的生活和工作提供更为方便的服务, 为灾害预警提供更为精准的决策支持。

摘要:地图API的成功很大程度上在于它的开源性、全球数据覆盖性、动态导航性、可查询性和易实现性。尽管它具有在线地理数据动态浏览的多功能性, 但是相对于其他网络地图服务而言, 现存的API缺乏地理信息系统的空间功能。本文是为了评论地图API在网络GIS应用方面的潜力, 通过使用谷歌地图API来开发了一个网络原型, 用于散布美国密歇根州芒迪小镇城市蔓延的空间信息。实验表明了矢量和栅格数据都能很好的展现在地图API上。而且地理标记语言 (GML) 在开发开放性能的网络GIS时具有巨大的潜力。提出了几种具有潜力的解决性方案去扩大地图API中GIS操作范围, 如:合并有关的可扩展标记语言以及扩充Java Script的类库。

API应用 第8篇

2013年12月26日,国家新闻出版广电总局发布了下一代广播电视网智能电视操作系统(NGB TVOS) 1.0版本参考软件。NGB TVOS是在广电总局科技司领导下、广播科学研究院牵头组织下,联合国内电视领域优势企业共同开发推出的一款真正面向电视领域的智能终端核心基础软件,内嵌支撑数字电视业务的功能组件,应用框架层实现了GY/T 267—2012《下一代广播电视网(NGB)终端中间件技术规范》定义的API,可支持各类NGB-J/NGB-H电视应用从开发、部署、下载到运行的全生命周期管理及资源优化调度管理,并提供硬件、软件、网络、数据、应用等多层次的安全支撑。尤其在Java应用框架层引入Android应用适配层,可兼容支持Android应用,极大丰富与简化电视应用的开发部署[1]。

NGB TVOS作为一款软件平台,运行于嵌入式硬件平台之上,承载着电视直播、视频点播、网页浏览、游戏、购物等各种应用,其软件架构如图1所示[2]。

NGB TVOS的软件架构采用“分层法”设计,按照功能层次从上到下分为:应用框架层、执行环境层、组件层、硬件抽象层(HAL,Hardware Abstract Layer)和Linux内核层[2]。

应用框架层对底层功能组件能力的重用进行了简化,并采用高级语言(Java、JS)封装,上层应用程序调用应用框架层显露的API实现对系统功能组件能力的调用,方便应用程序开发,增加了程序的清晰度,降低了程序设计的难度。NGB TVOS针对Java和Web两种高级编程语言,分别实现了Java应用框架和Web应用框架;Java应用框架层中引入了Android应用适配层,可兼容支持Androitd应用[3]。

执行环境层是指Java和Web应用代码的执行解释环境。针对Java应用,NGB TVOS实现了TVM,实现对Java字节码的解释执行;针对Web应用,NGB TVOS实现了浏览器,实现对Web页面标签和JS脚本的解释执行。

组件层是NGB TVOS软件平台功能的主要实现体,以后台服务进程或函数库的方式存在,实现了系统窗口管理、应用管理、安装包管理、图形库、标准C库等基本功能。NGB TVOS标准化定义了各个组件对上层的调用接口为“通用组件接口”。Java应用框架通过JNI调用“通用组件接口”,具有了访问组件的能力;Web应用执行环境通过JSNI调用“通用组件接口”,实现了访问组件的能力。

硬件抽象层封装了硬件驱动资源和Linux内核系统资源,使得与底层硬件相关的能力对上层调用透明化、简单化。

Linux内核层担当起实际的操作系统任务,实现了进程管理、存储管理、I/O管理、网络协议栈、安全保护和驱动模型等系统核心服务。

资源管理框架制定了一整套从上至下的资源管理策略,可对系统稀缺资源实现全局高效协同管理。

安全框架制定了一整套从上至下的安全保护策略,实现系统安全的全局防控。

2 Java应用框架层API封装模型

NGB TVOS Java应用框架的实质是Java API封装代码的集合,属于同一功能单元的若干API集中放置在同一个Java包内Java应用框架包含若干个Java包,所有的Java包最终可打包成一个或者多个.jar文件。

NGB TVOS Java应用框架层的API主要包含3部分:Java ME API、NGB-J API和Android API,NGB-J API遵循GY/T267—2012《下一代广播电视网(NGB)终端中间件技术规范》。

通过阅读NGB TVOS 1.0版本的原型参考代码,分析得出NG1B TVOS的Java应用框架层API主要采用了5种封装模型。

2.1 封装模型一

NGB TVOS Java应用框架层API封装模型一如图2所示。

Java API其内部功能逻辑基本上采用Java代码实现,不需要或者很少通过JNI调用底层C/C++核心库。应用框架层的代码很厚。

例如:NGB TVOS Java应用框架中绝大多数的Java ME API符合此封装模型。

2.2 封装模型二

NGB TVOS Java应用框架层API封装模型二见图3。

Java API其内部功能逻辑简单,基本上是通过JNI对等调用底层的C/C++库组件实现API的功能,主要逻辑在底层。库组件以C/C++函数库的形式存在。

例如:NGB TVOS Java应用框架中部分简单一点的NGB-J API符合此封装模型。

2.3 封装模型三

NGB TVOS Java应用框架层API封装模型三见图4。

在模型三中,Java API内部功能逻辑简单,基本上是通过JNI对等调用底层的C/C++服务组件实现API的功能。服务组件的主要功能逻辑由服务端代码实现,服务进程一直在后台运行;客户端代码以函数库的方式存在,实现接口供外部模块调用;客户端通过Binder机制访问服务端。Java API通过JNI调用服务组件的客户端。

与模型二相比,服务组件不再是C/C++函数库,而是依照B inder机制开发的、系统启动后一直在后台运行的系统服务[4]。

例如:NGB TVOS Java应用框架中与数字电视功能相关的NGB-J API符合此封装模型。

2.4 封装模型四

NGB TVOS Java应用框架层API封装模型四见图5。

在模型四中,Java应用框架层代码是依据Binder机制采用Java语言开发的服务组件的客户端,服务组件的服务端由底层C/C++语言实现。服务组件以系统服务的方式运行,主体功能逻辑由服务端代码实现,客户端内部通过Binder机制访问服务端。

与模型三相比,服务组件提供了Java空间和C/C++空间的两种客户端Java应用框架层直接通过Binder机制访问服务组件的服务端,而不是如模型三中先通过JNI访问C/C++空间的客户端,然后再通过Binder机制访问服务组件的服务端[5]。与模型三相比,Java应用框架层的功能逻辑稍复杂一点。

例如:NGB TVOS Java应用框架中大部分Android API符合此封装模型。Java语言编写的客户端代码划入软件架构图中的“Android应用适配层”,C/C++语言开发的服务端代码沉入到组件层。

2.5 封装模型五

NGB TVOS Java应用框架层API封装模型五见图6。

在模型五中,服务组件的客户端和服务端全部采用Java语言实现,Java应用框架包含客户端代码和服务端代码,服务组件在Java空间以系统服务的方式运行,主体功能逻辑由服务端代码实现,客户端代码实现接口供外部模块调用,客户端内部通过Binder机制访问服务端。

与模型四相比,服务组件的代码全部由Java语言实现。

例如:NGB TVOS Java应用框架中较少一部分Android API符合此封装模型。Java语言编写的客户端代码和服务端代码均划入软件架构图中的“Android应用适配层”。

在NGB TVOS的发展规划中,模型五将逐渐被废弃,由模型四取代。

3 封装模型对比分析

NGB TVOS Java应用框架层API封装模型二和模型一相比,模型一API功能逻辑基本上由Java代码实现,应用框架层的代码很厚,运行效率低,但跨平台移植性好;模型二API功能逻辑主要由C/C++代码实现,应用框架层的代码很薄,运行效率高,但移植性差。

NGB TVOS Java应用框架层API封装模型三和模型二相比,应用框架层的代码都很薄,API功能逻辑主要都由C/C++代码实现,区别就在于模型二底层C/C++组件是以函数库的方式存在,模型三底层C/C++组件是以后台服务的方式存在,模型的选择取决于组件的定义。若不考虑底层组件的差异,模型二和模型三在应用框架层的封装代码基本类似。

NGB TVOS Java应用框架层API封装模型四和模型三相比,底层C/C++服务组件类型一致,都是以后台服务的方式存在,但Java层封装方法不一样,模型三的Java层代码是对底层组件客户端的简单调用,而模型四的Java层代码是按Binder机制实现了同底层一样的客户端,代码实现复杂度比较高。

NGB TVOS Java应用框架层API封装模型五和模型四相比,Java层都一致封装成服务组件的客户端,服务组件的服务端在模型四中采用C/C++代码实现,在模型五中采用Java代码实现。模型四的运行效率相对高一点,模型五的跨平台移植性好点。

模型五的存在,主要是为了快速跟进Android的版本升级,一旦平台稳定,将全部改写成模型四。在模型四中,服务组件的服务端沉降到组件层,可以方便地被组件层其他组件调用,增强了组件的复用性。

4 小结

本文详细分析了NGB TVOS Java应用框架层API的5种封装模型,以及这5种模型的对比分析,有助于读者清晰理解NGB TVOS Java应用框架的实质,以及NGB TVOS是如何实现对Android应用的兼容。纵观NGB TVOS应用框架层的5种封装模型,不存在谁优谁劣的问题,而是考虑若干因素之后综合选择的结果,确保在决策时能得到最优的选择。

摘要:NGB TVPS是一款面向智能电视终端的核心基础软件平台,内嵌支撑数字电视业务的功能组件,其应用框架层实现了NGB终端中间件标准定义的API,支持NGB-J和NGB-H应用运行。特别地在Java应用框架层中引入了Android应用适配层,可兼容支持Android应用的运行。对Java应用框架层API的封装模型进行分析,阐述应用框架与底层组件之间的调用关系,并比较分析各种模型的特点。通过对封装模型的分析,可清晰地理解Android应用适配层API的封装原理,有助于进一步理解NGB TVOS兼容Android应用的技术原理。

关键词:NGB,TVOS,API,软件架构,应用框架,封装模型

参考文献

[1]李学明.广电智能电视操作系统发展浅析[J].电视技术,2013,37(20):1-3.

[2]陈德林.NCB TVOS的软件架构及其主要技术特点[J].广播电视信息,2013(10):21-25.

[3]陈德林.Android操作系统与数字电视中间件的对比分析[J].广播与电视技术,2012,39(1):87-91.

[4]李静.Android中Binder机制研究与应用[J].工业控制计算机,2012,25(4):66-67.

API应用 第9篇

目前教学中的演示以演示文稿居多,但是在讲授软件操作方法的教学中,很多教师为了能够让学生更好地了解软件的实际操作,更愿意采用实际操作相关的学习软件这种教学方法。如讲授Excel电子表格软件时,直接在该软件中边操作边讲解知识点,这种方式的讲解优点是,学生能够看到软件的实际操作过程,但同时也存在着这样的缺点,教师讲解的内容部分以及操作的相关要求,学生仅是听到,不能在老师操作讲解的同时观看到。另外,学生在进行相应的配套操作练习时,也是靠听到与记住的操作要求与知识点进行操作。如果教师在演示讲解时,学生既能够看到软件的操作过程,又能够看到相对应的操作要求与知识点,那么学生在学习过程中就可以同时利用看和听的感官进行学习与思考。如果学生在练习软件操作的过程中,能够在同一屏幕中既看到操作要求,又能看到操作后的样文结果,不需要屏幕间的切换,保证学生能够在一个屏幕中得到最多的信息与记忆,则对学生的自主学习有很大帮助,特别是初学软件使用的阶段,学生对基本内容和操作不熟悉,更需要在一定的提示下完成操作任务。

2 实例应用

VBA是流行的应用程序开发语言VB的子集,主要能用来扩展Windows的应用程式功能,在Microsoft Office软件中可以进行充分的二次开发,是应用程式视觉化的脚本。本例中主要是应用VBA中的用户窗体以及窗体中的控件实现在同一屏幕下操作窗口与内容窗口的同步显示与灵活切换。为教学过程中教师演示与学生操作练习活动提供更加有效的方法。

API是指应用程序编程接口Application Programming Interface,用以控制Windows的各个部件的外观和行为的一套预先定义的Windows函数。用户的每个动作都会引发一个或几个函数的运行以Windows告诉发生了什么。在本例中,VBA中的样张窗口,为了实现最大化、最小化等操作,由于本身没有相应的属性与方法进行控制,因此需要使用API来进行功能的实现。

本实例的主要功能是在打开Excel软件时,打开“操作要求”窗口,该窗口中上半部分显示有详细的操作要求与知识点,下半部分有“样张”按钮。点击“样张”按钮,将出现“样张”窗口。“操作要求”窗口始终显示在屏幕上,“样张”窗口可以改变大小,包括最大化、最小化和关闭。

3 实现方法

3.1 添加“操作要求”用户窗体

3.1.1 完成功能

(1)利用文本框完成操作要求内容的滚动浏览。

(2)利用动作按钮调用出“样张”窗口。

(3)始终显示在屏幕中,作为讲解与学生操作的任务提示。

3.1.2 使用控件

(1)文本框:要求能够滚动浏览所有内容,相应的属性设置如下:

(2)命令按钮:当点击该按钮时,出现相应的样张窗口。相应的属性设置如下:

Caption=样张

3.1.3 相关代码

(1)启动文件时,显示“操作要求”窗体。

(2)始终显示“操作要求”窗体,不可以关闭。

(3)单击“样张”按钮时,出现样张窗口。

3.2 添加“样张”用户窗体

3.2.1 完成功能

(1)当点击“样张”按钮后,出现此“样张”窗口。

(2)利用标签控件显示样张编号。

(3)利用图片控件显示样张内容。

(4)有最大化、最小化、关闭按钮,教师和学生在使用时可以按需要进行窗口的操作。

(5)可以滚动浏览所有样张图片。

3.2.2 使用控件

(1)标签控件:显示各个样张的编号,相应的属性设置如下:

Caption=样张编号

可以设置Font和FontColor两个属性,提高其可视性。

(2)图像控件:在样张编号下,显示出部分样张或全部样张,可以滚动浏览。相应的属性设置如下:

Picture=样张图片

一个图像控件只显示一个样张图片,如果有多张样张图片,需要使用多个图像控件。

3.2.3 相关代码

(1)窗体标题栏设置最大化和最小化的按钮:

(2)随着窗体的尺寸改变,窗体中的控件总是保持在窗体的中间位置显示。

4 结语

实现在同一屏幕中显示操作要求与样文,还可以使用文本框或者是直接使用控件的方法,但这两种方法对于显示内容和显示位置都缺乏更多的灵活性,并且如果是直接使用相应控件进行显示,还存在着控件激活的问题,因此使用用户窗体,并配合标签控件、文本框控件、图像控件以及按钮控件完成演示窗口的独立显示,能够使软件学习的过程中,无论是教师演示,还是学生练习都可以灵活的在软件操作窗口和操作内容窗口间进行灵活切换,提高学生学习的有效性。

参考文献

[1]罗刚君.Excel VBA程序开发自学宝典[M].电子工业出版社,2009.

API应用 第10篇

LIN总线以性价比高的优势在众多成本敏感应用领域显示了强大竞争力。LIN-API的设计则是LIN总线产品开发过程中最为重要和基础的环节,同时也是LIN总线产品是否具备可移植性和代码透明性的重要标志。不同类型的LIN硬件平台需要使用不同的API。LIN协议规范对API进行原型定义,其内部的代码均由开发者来根据硬件平台设计。本文分析并设计了基于微芯主流8位PIC16F87X单片机硬件系统的LIN总线核心接口管理层API,在设计LIN总线应用程序时调用相应的API,能迅速高效构建LIN总线系统。

1 LIN主从节点硬件实现

LIN总线由单个主节点和不超过15个从节点构成,主节点内部包括主任务和从任务,从节点内部只包含从任务[1]。主任务通过向总线发送LIN帧报文头发起每次通信任务,报文帧数据场及校验和数据在从任务之间进行指定的通信[2]。

单从节点LIN总线系统原理框图见图1,其中主从节点微控制器采用PIC16F877A单片机,LIN接口驱动芯片采用MCP201。

2 核心接口管理层API设计

2.1 LIN-API类型

LIN协议规范的API分为3类:核心API、传输层API和配置与识别API。核心API是整个API的基础,核心API分为6个子类:驱动与网络管理、信号处理、状态操作、进度表管理、接口管理、逆向调用。其中接口管理层API同物理层硬件密切相关,控制着帧的收发,包含7个API函数:l_ifc_init用于物理层初始化,必须首先调用;l_ifc_connect将接口连接到LIN网络上,可以向总线传输报文头和数据;l_ifc_disconnect将接口和LIN网络断开连接,不能向总线传输报头和数据;l_ifc_ioctl执行底层的自定义操作;l_ifc_rx当接口接收到数据的一个字符时调用;l_ifc_tx当接口发送了数据的一个字符时调用;l_ifc_aux从机节点使用用于同步主机发送的BREAK和SYNC字符。

2.2 接口管理层API的实现

LIN协议报文头识别及节点自同步的实现是硬件及核心API设计的关键,LIN节点自同步实现后,则后面的数据和通用的UART数据格式一致[3]。硬件设计利用PIC16F877A的CCP1捕捉比较脉宽调制模块配合相应的API函数进行帧头的捕获,在LIN总线上每一次通信时,主任务以降低波特率的方式发送同步间隔场,从任务以高波特率识别同步间隔场和同步场,并校正自身波特率。接口管理层API函数l_ifc_tx、l_ifc_aux实现机制包含了报文头识别及节点自同步技术。

API函数l_ifc_aux实现了从节点的同步机制,其程序流程图见图2所示。

API函数l_ifc_tx的程序流程图如图3所示,实现了同步间隔场、同步场、数据场及校验和场的发送。其余的接口管理层API函数流程图限于篇幅不一一列出。

图3 API函数l_ifc_tx程序流程图(参见下页)

3 LIN总线电动车窗设计

LIN总线在电动车窗上应用广泛,使用API能快速构建LIN总线应用系统,可以使用户能专注于应用程序本身,而不用涉及LIN总线内部工作机制的细节。

电动车窗的主控ECU单元及LIN接口硬件设计如图4

所示,主控的微控制器采用PIC16F877A,LIN接口驱动芯片采用MCP201。电动车窗在汽车使用时使用的频率并不高,设计上使用休眠指令使主节点和从节点的微控制器都进入休眠状态,可以使其减少功耗,经测试,整个主控ECU在休眠期间的电流在600μA左右。

PIC16F877A单片机的RB0-RB3具备电平变化中断功能,在单片机休眠状态时此中断仍然有效,设计时将RB0-RB3连接到相应的电动车窗操作按钮上,当乘客需要调整车窗时,就对这些按钮进行操作引起电平变化中断唤醒主控MCU,随后主控MCU发布LIN总线唤醒命令唤醒从站,同时使自己从休眠状态进入工作状态,发送相应的数据到相应的从节点以执行相应的LIN总线行为。

LIN电动车窗应用程序由API调用和应用代码构成,以下是部分硬件驱动代码:

4 结束语

LIN协议规范了对于采用LIN规范2.x版本的LIN节点,在采用C语言开发应用程序时必须使用API。LIN核心接口

管理层API的设计能有效提高LIN总线产品的设计效率,提升产品的可移植性,对提升LIN总线产品的设计水平有着重要的意义。

参考文献

[1]广州周立功单片机发展有限公司.LIN规范(V1.2)[Z].2002.

[2]LIN Consortium.LIN Specification Package[Z].Revision 1.3[Z].2002

[3]罗雪梅,吴钦木.LIN主从节点设计与实现[J].现代电子技术,2010(5):209-210.

API应用 第11篇

日前,阿尔卡特朗讯发布业界首个API(应用编程接口)捆绑包以及相关的收入分成模式,通过消除开发者前期成本并为业务提供商开启新的商业机会来彻底改变应用开发的模式。此举是阿尔卡特朗讯推动应用开发模式创新相关重大举措中的一部分,阿尔卡特朗讯的一系列举措将使应用开发者能够将网络作为其应用开发的平台,像其目前在移动设备和Web上一样构建应用。

阿尔卡特朗讯还宣布推出一个强大的新业务和应用建模工具,使应用开发者可以最为有效地利用其所开发的应用。新功能还可以帮助开发者和业务提供商提高其所引入服务的成功机率,并帮助他们更好地管理其应用开发整体业务。

API应用范文

API应用范文(精选11篇)API应用 第1篇约翰内斯海德汉博士 (中国) 有限公司是一家德资企业, 建筑面积2万m2, 包括办公楼、生产厂房、动...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部