如何在VB中使用API函数
我喜欢用VB编程,但是到现在都不知道如何在VB中具体使用API函数。我很郁闷小弟跪求答案!一定要具体哦!...
我喜欢用VB编程,但是到现在都不知道如何在VB中具体使用API函数。
我很郁闷
小弟跪求答案!
一定要具体哦! 展开
我很郁闷
小弟跪求答案!
一定要具体哦! 展开
5个回答
推荐于2016-11-26
展开全部
什么是API/怎样在VB中声明和使用API函数
(简单来说,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就是应用程序接口)
一、在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函数的完整声明,然后把它粘贴到程序中即可。
展开全部
VB自带了个API浏览器,里面包含了常用API、常量、类型的定义,这些定义都被存放在WIN32API.TXT这个文件中。
开始→程序→Microsoft
Visaul
Basic
6.0中文版→Microsoft
Visual
Basic
6.0
中文版工具→API浏览器
文件→加载文本文件→WIN32API
2、打开
VB6
→
外接程序
→
外接程序管理器
→
把“VB6
API
Viewer”选上,并勾上“在启动中加载(s)”和“加载/卸载(l)”→确定→重启VB
注意:API浏览器只包含常用API,并非包含所有API
开始→程序→Microsoft
Visaul
Basic
6.0中文版→Microsoft
Visual
Basic
6.0
中文版工具→API浏览器
文件→加载文本文件→WIN32API
2、打开
VB6
→
外接程序
→
外接程序管理器
→
把“VB6
API
Viewer”选上,并勾上“在启动中加载(s)”和“加载/卸载(l)”→确定→重启VB
注意:API浏览器只包含常用API,并非包含所有API
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
API函数是指,操作系统除了协调应用程序的执行、内存分配、系统资源管理外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务是一个函数),可以帮助应用程序达到开启视窗、描绘图形、使用周边设备的函数服务的对象的应用程序。
利用VBa使用API函数的方法:
(1)用Declare语句声明所要调用的API函数,若该函数无返回值,可声明为Sub过程;若有返回值,则可声明为Function函数。
(2)一旦声明了某一个API函数后,就可以象调用VisualBasic的函数一样。但如果参数传递不对,可能会导致死机。
利用VBa使用API函数的方法:
(1)用Declare语句声明所要调用的API函数,若该函数无返回值,可声明为Sub过程;若有返回值,则可声明为Function函数。
(2)一旦声明了某一个API函数后,就可以象调用VisualBasic的函数一样。但如果参数传递不对,可能会导致死机。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有一个api32.txt这个文件里面有说明。
另外:要给分。才会有人回答。!
另外:要给分。才会有人回答。!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个函数是系统消息处理函数,返回值是long,估计是返回句柄什么的,你必须在用的时候用一个整形的数据去接住他,比如:
dim
a,b,c,d,e,f
as
long
f=BroadcastSystemMessage(a,b,c,d,e)
至于每个参数是什么用的,你必须要参考MSDN了,有些API是不能单独使用的,比如你如果做图像处理的会经常用到一个API叫做Getbitmapbits,这个API不能单独使用的,必须要和SelectObject
GetObject
DeleteObject,
GetDC,
DeleteDC,
ReleaseDC一串一起用的,好好学吧,罗马不是一天造成的。
当然有些API用起来还是很好用的,就像玩游戏搭积木一样。比如什么实现窗口的透明效果啦,图像的复制啦,注册表的修改啦,这些都是单独的API,一般不需要和设备、句柄等东西打交道,所以用起来能够非常得心应手。
dim
a,b,c,d,e,f
as
long
f=BroadcastSystemMessage(a,b,c,d,e)
至于每个参数是什么用的,你必须要参考MSDN了,有些API是不能单独使用的,比如你如果做图像处理的会经常用到一个API叫做Getbitmapbits,这个API不能单独使用的,必须要和SelectObject
GetObject
DeleteObject,
GetDC,
DeleteDC,
ReleaseDC一串一起用的,好好学吧,罗马不是一天造成的。
当然有些API用起来还是很好用的,就像玩游戏搭积木一样。比如什么实现窗口的透明效果啦,图像的复制啦,注册表的修改啦,这些都是单独的API,一般不需要和设备、句柄等东西打交道,所以用起来能够非常得心应手。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询