VB中API函数是什么
5个回答
展开全部
关于API函数的书!市场上太少了!就算是有,也介绍得很粗浅!你到书店好好找找!我没有API函数的好书介绍给你!
谈一下我的心得吧:
首先,有必要向大家讲一讲,什么是API。API是包含在一个附加名为DLL的动态连接库文件中的。用标准的定义来讲,API就是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,可以说,如果你曾经学过VC,那么API对你来说不是什么问题。但是如果你没有学过VC,或者你对Windows95的结构体系不熟悉,那么可以说,学习API将是一件很辛苦的事情。
如果你打开WINDOWS的SYSTEM文件夹,你可以发现其中有很多附加名为DLL的文件。一个DLL中包含的API函数并不只是一个,数十个,API函数总共大约有110多个。如果要全部掌握!那你非下苦功不可,但实际上,我们真的没必要都掌握,只要重点掌握Windos系统本身自带的API函数就可以了。我可以敢跟你说,只要你熟悉地掌握100个,那么你的编程水平比现在高出至少要两倍。API函数和WINDOWS具有密切的关系,如果你学会了API,首要的收获便是对WINDOWS体系结构的认识。这个收获是来自不易的。
如果你不依靠API会怎么样?我可以跟你说,绝大多是高级编程书本(当然这不是书的名程叫高级而高级的,而是在一开始的《本书内容》中指明《本书的阅读对象是具有一定VB基础的读者》的那些书),首先提的问题一般大都是从API开始。因此可以说,你不学API,你大概将停留在初级水平,无法往上攀登。
很多API函数都是很长很长的。想看什么样子吗?如下就是作为例子的API DdeClientTransaction函数∶
Declare Function DdeClientTransaction Lib "user32" (pData As Byte, ByVal cbData As Long, ByVal hConv As Long, ByVal hszItem As Long, ByVal wFmt As Long, ByVal wType As Long, ByVal dwTimeout As Long, pdwResult As Long) As Long
哇!这么长?如果你从来没有接触过API,我想你肯定被吓住了。你也许考虑,该不该继续学下去。不过不要担心,幸运的是Microsoft的设计家们为我们提供了有用的工具,这便是API
文本查看器。
通过API文本查看器,我们可以方便地查找程序所需要的函数声明、结构类型和常数,然后将它复制到剪贴板,最后再粘贴到VB程序的代码段中。在大多数情况下,只要我们确定了程序所需要的函数、结构和常数这三个方面后,就可以通过对API文本游览器的以上操作将他们加入到程序段中,从而程序中可以使用这些函数了。这些是学习API最基本的常识问题,它远远占不到API的庞大的体系内容。今后我们把精力浪费(这绝不是浪费)在哪里呢?那就是∶
什么时候使用什么函数,什么时候使用什么结构类型,什么时候使用什么常数。
API函数声明 [返回]
让我们回想一下。在VB中,如何声明函数呢?我想,如果你正在看此文,那么你绝对能够回答得出这个问题。以下便是你应该很熟悉的函数声明∶
Function SetWindowRgn Lib "user32"Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
即,这行代码定义了名为SetWindowRgn的函数,此函数具有一个Long型数据类型的参数,并按值传递(ByVal),函数执行后将返回一个Long型数据。
API函数的声明也很类似,如,API中的SetWindowRgn 函数是这样写的∶
Public Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Declare 语句用于在模块级别中声明对动态链接库 (DLL) 中外部过程的引用。对此,你只要记住任何API函数声明都必须写这个语句就可以了。
Iib 指明包含所声明过程或函数的动态链接库或代码资源。也就是说,它说明的是,函数或过程从何而来的问题。
如在上例中,SetWindowRgn Lib "user32"说明 函数 SetWindowRgn 来自 user32.dll文件。主要的dll动态连接库文件有∶
user32.dll Windows管理。生成和管理应用程序的用户接口。
GDI32.dll 图形设备接口。产生Windows设备的图形输出
Kernel32.dll 系统服务。访问操作系统的计算机资源。
注意,当DLL文件不在Windows或System文件夹中的时候,必须在函数中说明其出处(
路径)。如,SetFocus Lib "c:\Mydll\user32"
函数声明中的Alias 是可选的。表示将被调用的过程在动态链接库 (DLL) 中还有另外的名称(别名)。如,Alias "SetWindowRgn" ,说明SetWindowRgn函数在User32.dll中的另外一个名称是,
SetWindowRgn。怎么两个名都一样呢?当然,也可以是不同的。在很多情况下,Alias说明的函数名,即别名最后一个字符经常是字符A,如SetWindowsText函数的另一个名称是
SetWindowsTextA,表示为Alias "SetWindowsTextA"。这个A只不过是设计家们的习惯的命名约定,表示函数属于ANSI版本。
需要注意的是,不是所有的API函数都有别名.选用Alias的时候,应注意别名的大小写;如果不选用Alias 时的时候,函数名必须注意大小写,而且不能改动。当然,在很多情况下,由于函数声明是直接从API
文本游览器中拷贝过来的,所以这种错误的发生机会是很少的,但您有必要知道这一点。
最后提醒你一句,API声明(包括结构、常数)必须放在窗体或模块的"通用(General Declarations)段。
数据类型与"类型安全" [返回]
API函数中使用的数据类型基本上和VB中的一样。但作为WIN32的API函数中,不存在Integer
数据类型。另外一点是在API函数中看不到Boolean数据类型。 Variant数据类型在API函数中是以Any的形式出现,如Data As Any。尽管其含义是允许任意参数类型作为一个该API函数的参数传递,但这样做存在一定的缺点。其原因是,这将会使得对目标参数的所有类型检查都会被关闭。这自然会给各种类型的参数调用带来了产生错误的机会。
要学好API函数,还得靠自己去慢慢琢磨,勤钻勤练,领会各个API函数的功能和用法!在实际应用中自然会得心应手,游刃有余!
API函数大全:
http://www.gissky.com/Database/ShowArticle.asp?Bid=2&SID=26&ID=1102
API函数系统编程教程:
http://www.qqgb.com/Program/VB/VBAPI/List_1.html
谈一下我的心得吧:
首先,有必要向大家讲一讲,什么是API。API是包含在一个附加名为DLL的动态连接库文件中的。用标准的定义来讲,API就是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,可以说,如果你曾经学过VC,那么API对你来说不是什么问题。但是如果你没有学过VC,或者你对Windows95的结构体系不熟悉,那么可以说,学习API将是一件很辛苦的事情。
如果你打开WINDOWS的SYSTEM文件夹,你可以发现其中有很多附加名为DLL的文件。一个DLL中包含的API函数并不只是一个,数十个,API函数总共大约有110多个。如果要全部掌握!那你非下苦功不可,但实际上,我们真的没必要都掌握,只要重点掌握Windos系统本身自带的API函数就可以了。我可以敢跟你说,只要你熟悉地掌握100个,那么你的编程水平比现在高出至少要两倍。API函数和WINDOWS具有密切的关系,如果你学会了API,首要的收获便是对WINDOWS体系结构的认识。这个收获是来自不易的。
如果你不依靠API会怎么样?我可以跟你说,绝大多是高级编程书本(当然这不是书的名程叫高级而高级的,而是在一开始的《本书内容》中指明《本书的阅读对象是具有一定VB基础的读者》的那些书),首先提的问题一般大都是从API开始。因此可以说,你不学API,你大概将停留在初级水平,无法往上攀登。
很多API函数都是很长很长的。想看什么样子吗?如下就是作为例子的API DdeClientTransaction函数∶
Declare Function DdeClientTransaction Lib "user32" (pData As Byte, ByVal cbData As Long, ByVal hConv As Long, ByVal hszItem As Long, ByVal wFmt As Long, ByVal wType As Long, ByVal dwTimeout As Long, pdwResult As Long) As Long
哇!这么长?如果你从来没有接触过API,我想你肯定被吓住了。你也许考虑,该不该继续学下去。不过不要担心,幸运的是Microsoft的设计家们为我们提供了有用的工具,这便是API
文本查看器。
通过API文本查看器,我们可以方便地查找程序所需要的函数声明、结构类型和常数,然后将它复制到剪贴板,最后再粘贴到VB程序的代码段中。在大多数情况下,只要我们确定了程序所需要的函数、结构和常数这三个方面后,就可以通过对API文本游览器的以上操作将他们加入到程序段中,从而程序中可以使用这些函数了。这些是学习API最基本的常识问题,它远远占不到API的庞大的体系内容。今后我们把精力浪费(这绝不是浪费)在哪里呢?那就是∶
什么时候使用什么函数,什么时候使用什么结构类型,什么时候使用什么常数。
API函数声明 [返回]
让我们回想一下。在VB中,如何声明函数呢?我想,如果你正在看此文,那么你绝对能够回答得出这个问题。以下便是你应该很熟悉的函数声明∶
Function SetWindowRgn Lib "user32"Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
即,这行代码定义了名为SetWindowRgn的函数,此函数具有一个Long型数据类型的参数,并按值传递(ByVal),函数执行后将返回一个Long型数据。
API函数的声明也很类似,如,API中的SetWindowRgn 函数是这样写的∶
Public Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Declare 语句用于在模块级别中声明对动态链接库 (DLL) 中外部过程的引用。对此,你只要记住任何API函数声明都必须写这个语句就可以了。
Iib 指明包含所声明过程或函数的动态链接库或代码资源。也就是说,它说明的是,函数或过程从何而来的问题。
如在上例中,SetWindowRgn Lib "user32"说明 函数 SetWindowRgn 来自 user32.dll文件。主要的dll动态连接库文件有∶
user32.dll Windows管理。生成和管理应用程序的用户接口。
GDI32.dll 图形设备接口。产生Windows设备的图形输出
Kernel32.dll 系统服务。访问操作系统的计算机资源。
注意,当DLL文件不在Windows或System文件夹中的时候,必须在函数中说明其出处(
路径)。如,SetFocus Lib "c:\Mydll\user32"
函数声明中的Alias 是可选的。表示将被调用的过程在动态链接库 (DLL) 中还有另外的名称(别名)。如,Alias "SetWindowRgn" ,说明SetWindowRgn函数在User32.dll中的另外一个名称是,
SetWindowRgn。怎么两个名都一样呢?当然,也可以是不同的。在很多情况下,Alias说明的函数名,即别名最后一个字符经常是字符A,如SetWindowsText函数的另一个名称是
SetWindowsTextA,表示为Alias "SetWindowsTextA"。这个A只不过是设计家们的习惯的命名约定,表示函数属于ANSI版本。
需要注意的是,不是所有的API函数都有别名.选用Alias的时候,应注意别名的大小写;如果不选用Alias 时的时候,函数名必须注意大小写,而且不能改动。当然,在很多情况下,由于函数声明是直接从API
文本游览器中拷贝过来的,所以这种错误的发生机会是很少的,但您有必要知道这一点。
最后提醒你一句,API声明(包括结构、常数)必须放在窗体或模块的"通用(General Declarations)段。
数据类型与"类型安全" [返回]
API函数中使用的数据类型基本上和VB中的一样。但作为WIN32的API函数中,不存在Integer
数据类型。另外一点是在API函数中看不到Boolean数据类型。 Variant数据类型在API函数中是以Any的形式出现,如Data As Any。尽管其含义是允许任意参数类型作为一个该API函数的参数传递,但这样做存在一定的缺点。其原因是,这将会使得对目标参数的所有类型检查都会被关闭。这自然会给各种类型的参数调用带来了产生错误的机会。
要学好API函数,还得靠自己去慢慢琢磨,勤钻勤练,领会各个API函数的功能和用法!在实际应用中自然会得心应手,游刃有余!
API函数大全:
http://www.gissky.com/Database/ShowArticle.asp?Bid=2&SID=26&ID=1102
API函数系统编程教程:
http://www.qqgb.com/Program/VB/VBAPI/List_1.html
展开全部
API 并非只是由 Windows 提供的. 谁也可以提供 API 函数供 VB 调用. 当然你也可以. 但大多书籍只介绍了 Windows 提供的众多 API 函数.
可以用另一种逻辑理解 VB 中调用的 API 函数:
在 VB 中调用由其他语言写的(也可以包括由 VB 写的) 函数. 这些函数是公开的.
例如你可以使用 C 来写一些有用的函数, 当你需要在 VB 中完成同等的功能时, 你至少有两种选择:
1. 用 VB 语言来改写 C 的函数 (可谓内部函数), 每当某项目需要此功能时就重写一遍吧;
2. 直接调用 C 语言已经写好的函数 (可谓外部函数), 与多少项目无关, 任何项目都可使用, 不必再写了.
对于第 2 种情形, 就相当于 API 调用了.
API 通常被封装在 动态库 (DLL) 或者 ActiveX 控件/库中(也是动态库).
在 VB 怎么调用?
在 VB 中需要调用动态库中的函数时, VB 语言有个 Declare 关键字. 该关键字的作用是对需要调用的函数先进行声明(这个声明的解释是: Declare 语句告知 VB 运行库, 调用的 API 的函数名或序号是什么, 这个函数在哪个 动态库 中, 有什么参数, 返回什么).
例如:
Private Declare Function FlashWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal bInvert As Long) As Long
这个例子声明了一个 FlashWindow 的 Windows 提供的 API 函数, 它叫 FlashWindow, 在 User32.dll 中 (user32.dll 是 Windows 自带的, 所以 它是 Windows 提供的 API 函数), 有两个参数, 返回 Long 值.
至于函数的功能这里就不详细介绍了.
声明后, 你就可以像使用自己写的函数一样调用了:
FlashWindow Me.hWnd, 0
所以你最后 一个问题: 有多少 API 函数. 这个问题是没有意义的, API 函数可以有无限多.
看书籍可以尽快熟悉 API 的调用机制及原理, 同时也是对 Windows 的理解更进一步(因为这些书籍多数是以 Windows 提供的 API 为例子的).
除了 Declare 可以使用其他语言提供的 API 外, 引用 ActiveX 其实也是 API 的调用, 不过习惯上不这么叫罢了. 例如 VB 人员经常使用的 ADO, 其实正是使用了 ADO 动态库提供的众多 API 函数. (ActiveX 提供的 API 使用比需要 Declare 声明的更广更容易. 而且它可以在 VB 的对象浏览器中查阅.)
------------------------------------------
再次, API 不是 Windows 独有的, 它可以由任何人提供. 所以没有 API 大全, 最多 只是 Windows API 大全(新推出的 Windows 可能会提供更多的新 API, 或者丢弃一些过时的旧 API). 这一点不要被误导.
可以用另一种逻辑理解 VB 中调用的 API 函数:
在 VB 中调用由其他语言写的(也可以包括由 VB 写的) 函数. 这些函数是公开的.
例如你可以使用 C 来写一些有用的函数, 当你需要在 VB 中完成同等的功能时, 你至少有两种选择:
1. 用 VB 语言来改写 C 的函数 (可谓内部函数), 每当某项目需要此功能时就重写一遍吧;
2. 直接调用 C 语言已经写好的函数 (可谓外部函数), 与多少项目无关, 任何项目都可使用, 不必再写了.
对于第 2 种情形, 就相当于 API 调用了.
API 通常被封装在 动态库 (DLL) 或者 ActiveX 控件/库中(也是动态库).
在 VB 怎么调用?
在 VB 中需要调用动态库中的函数时, VB 语言有个 Declare 关键字. 该关键字的作用是对需要调用的函数先进行声明(这个声明的解释是: Declare 语句告知 VB 运行库, 调用的 API 的函数名或序号是什么, 这个函数在哪个 动态库 中, 有什么参数, 返回什么).
例如:
Private Declare Function FlashWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal bInvert As Long) As Long
这个例子声明了一个 FlashWindow 的 Windows 提供的 API 函数, 它叫 FlashWindow, 在 User32.dll 中 (user32.dll 是 Windows 自带的, 所以 它是 Windows 提供的 API 函数), 有两个参数, 返回 Long 值.
至于函数的功能这里就不详细介绍了.
声明后, 你就可以像使用自己写的函数一样调用了:
FlashWindow Me.hWnd, 0
所以你最后 一个问题: 有多少 API 函数. 这个问题是没有意义的, API 函数可以有无限多.
看书籍可以尽快熟悉 API 的调用机制及原理, 同时也是对 Windows 的理解更进一步(因为这些书籍多数是以 Windows 提供的 API 为例子的).
除了 Declare 可以使用其他语言提供的 API 外, 引用 ActiveX 其实也是 API 的调用, 不过习惯上不这么叫罢了. 例如 VB 人员经常使用的 ADO, 其实正是使用了 ADO 动态库提供的众多 API 函数. (ActiveX 提供的 API 使用比需要 Declare 声明的更广更容易. 而且它可以在 VB 的对象浏览器中查阅.)
------------------------------------------
再次, API 不是 Windows 独有的, 它可以由任何人提供. 所以没有 API 大全, 最多 只是 Windows API 大全(新推出的 Windows 可能会提供更多的新 API, 或者丢弃一些过时的旧 API). 这一点不要被误导.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
API函数
操作系统除了协调应用程序的执行、内存分配、系统资源管理外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务是一个函数),可以帮助应用程序达到开启视窗、描绘图形、使用周边设备的目的,由于这些函数服务的对象是应用程序(Application),所以称之为Application Programming Interface,简称API函数。
例子:
大家可能在许多书上看到过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函数有几千个呢)。
操作系统除了协调应用程序的执行、内存分配、系统资源管理外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务是一个函数),可以帮助应用程序达到开启视窗、描绘图形、使用周边设备的目的,由于这些函数服务的对象是应用程序(Application),所以称之为Application Programming Interface,简称API函数。
例子:
大家可能在许多书上看到过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是Windows提供给应用程序的接口,数量很多,涉及到各个方面,基本Windows能做的都有提供。
VB调用API需要先声明,然后再调用
声明:
Private Declare Function ......
Private Declare Sub.....
调用就和调用自己写的过程一样了
VB调用API需要先声明,然后再调用
声明:
Private Declare Function ......
Private Declare Sub.....
调用就和调用自己写的过程一样了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询