VB调用API函数 下载本文

内容发布更新时间 : 2024/6/16 12:36:03星期一 下面是文章的全部内容请认真阅读。

VB调用API函数

发表于2016/1/13 20:17:36 733人阅读 分类: API

API函数快速入门--怎样在VB中声明和使用API函数--

一、在VB中声明API函数有两种方法:如果我们只在某个窗体中使用API函数,我们可以在窗体代码的 General部分声明它:

声明的语法是:

Private Declare Function ... Private Declare Sub.....

这里必须采用Private声明,因为这个API函数只能被一个窗体内的程序所调用。

如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同一个API函数,就需要在模块中 声明了。

先添加一个模块(如图示), 然后采用如下语法声明: Public Declare Function....

Public Declare Sub....

Public声明的含义是把API函数作为一个公共函数或过程,在一个工程中的任何位置(包括所有的窗

体和模块)都能直接调用它。声明完毕我们就能在程序中使用此API函数了。

二、可采用以下几种方式使用API函数,以SetWindowPos函数为例: (1)忽略函数返回值的调用:

SetWindowPos Form1.hWnd, -2 ,0 ,0 ,0, 0, 3 注意此时函数的参数是不加括号的。 (2)Call方法调用:

Call SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3) 注意这里需要加上括号,但我们不取回函数的返回值。 (3)取得函数返回值的调用:

MyLng = SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3) 此时需要加上括号,而且我们必须事先定义一个变量(变量的类型与函数返回值类型相同)来存储

API函数的返回值。

三、几个问题的说明:

(1)声明中的Lib 和 Alias 是怎么回事

一般情况下WIN32API函数总是包含在WINDOWS系统自带的或是其它公司提供的动态连接库DLL中,而

Declare语句中的Lib关键字就用来指定DLL(动态连接库)文件的路径,这样VB才能找到这个DLL文件,然

后才能使用其中的API函数。如果我们只是列出DLL文件名而不指出其完整的路径的话,VB会自动到.EXE文

件所在目录、当前工作目录、WINDOWS\\SYSTEM目录、WINDOWS目录下搜寻这个DLL文件。所以如果所要使用

DLL文件不在上述几个目录下的话,我们应该指明其完整路径。

Alias用于指定API函数的别名,如果我们调用的API函数要使用字符串(参数中包含String型)的话

,Alias关键字是必须的。这是因为在ANSI和Unicode字符集中同一API函数的名称可能是不一样的,为了

保证不出现声明错误,我们使用Alias关键字指出API函数的别名,一般来说在WIN9X平台下我们把API函数

名后加一个大写A作为别名即可。

(2)常见的API参数类型的说明

API函数的参数中最常见的是长整Long型数据类型,例如API中的句柄、一些特定的常量、函数的返回

值都是此类型的值;另外几种常见的参数类型有:整型Integer、Byte型、String型等。

(3)声明中的ByVal是作什么用的 这跟VB的参数传递方式有关,在默认情况下VB是通过地址传递方式传递函数的参数、而有些API函数

要求必须采用传值方式来传递函数参数(这两种参数传递方式是不同的,前者传递的是一个指针,而后者

要求是参数真实的值)。这样就会发生错误,解决的办法是在API函数参数声明的前面加上ByVal关键字,

这样VB就采用传值方式传递参数了。

(4)怎样得到完整的API函数声明

VB自带了API文本查看器API TEXT VIEWER,我们可以在其中找到API函数的完整声明,然后把它粘贴 到程序中即可。

什么是API

首先,有必要向大家讲一讲,什么是API。所谓API本来是为C和C++程序员写的。API说来说去,就是一种

函数,他们包含在一个附加名为DLL的动态连接库文件中。用标准的定义来讲,API就是Windows的32位应

用程序编程接口,是一系列很复杂的函数,消息和结构,它使编程人员可以用不同类型的编程语言编制出

的运行在Windows95和Windows NT操作系统上的应用程序。可以说,如果你曾经学过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会怎么样?我可以跟你说,绝大多是高级编程书本(当然这不是书的名程叫高级而高级的

,而是在一开始的《本书内容》中指明《本书的阅读对象是具有一定VB基础的读者》的那些书),首先提

的问题一般大都是从API开始。因此可以说,你不学API,你大概将停留在初级水平,无法往上攀登。唯一

的途径也许就是向别人求救∶我快死了,快来救救我呀,这个怎么办,那个怎么办?烦不烦呢?当然,现在

网上好人太多(包括我在内,嘻嘻),但,你应当明白,通过此途径,你的手中出不了好的作品。这是因为

缺乏这些知识你的脑子里根本行不成一种总体的设计构思。 API文本游览器

很多API函数都是很长很长的。想看什么样子吗?如下就是作为例子的API DdeClientTransaction函数∶

Declare Function DdeClientTransaction Lib \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 文本查看器。