1个回答
2013-09-08
展开全部
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 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). 这一点不要被误导.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询