动态连接库简介

动态连接库简介

顶点

DLL是一个位于应用程序外部的过程库,它可以从应用程序中调用。在运行时被连接,但并不绑定到EXE文件上。DLL是可共享和重入的,它的代码执行速度VisualBasic比代码快。
Windows操作系统在DLL中提供了丰富的过程集,可以通过调用这些过程扩展VisualBasic的功能。也可以调用第三方或你自己开发的DLL库。
绝大多数DLL是用C语言编写,在使用VisualBasic调用时有许多值得注意的事项。

系统动态连接库

顶点

系统DLL是指Windows操作系统提供的三个DLL库,对于不同版本的Windows其库名和内容不同。
16位Windows
Windows3.X和Windows95、WindowsNT的16位层提供库为:USE,GDI,KERNEL
32位Windows
由Windows95、WindowsNT提供库名为:USER32,GDI32,KERNEL32

声明、调用DLL过程

顶点

DLL过程必须声明在标准模块中,它缺省为公有过程。
声明:
格式:
Declare Sub 过程名 Lib "库名" [Alias "别名"][(参数表)]
Declare Function 函数名 Lib "库名" [Alias "别名"][(参数表)] As 类型
说明:
过程名、函数名: 是你定义的名字以便在程序中引用库名:
对于系统DLL为三个系统库名。“User32”、“GDI32”、“Kernel32
对于第三方DLL为文件名。如:“C:/.../MyDll.DLL”
别名:当你定义的过程名和函数名与DLL库中所提供的过程名函数名不同时,必须把别名定义为DLL库中所提供的过程名函数名。
调用:
和调用VisualBasic过程一样。

使用API Text Viewer工具

顶点

VisualBasic5.0/6.0提供了一个小工具使我们可以方便的在程序中声明系统DLL过程。

VB调用DLL时注意事项:数据类型

顶点

绝大多数DLL是用C语言编写的,在数据类型上与VB有较大的不同。
C语言与VB的数据类型对照表
C语言VB
LPSTRString
NULLString
CharByte
IntLong(32位环境下)
句柄Long

VB调用DLL时注意事项:值传递ByVal与引用传递ByDef

顶点

值传递:
当通过值传递一个参数时,将参数的值的拷贝传递给过程。如果在过程中改变了参数的值,它不会影响原始变量。
引用传递(VB缺省):
当通过引用传递一个参数时,将参数的地址传递给过程。如果在过程中改变了参数的值,原始变量的值也被修改
例:
在文件C:/MyDll.dll中有一个过程:
vold P(int x,int*y)
{ x=20;
 y=30;
}
的VB中声明
Declare Sub P Lib "C:/MyDll.dll" (ByVal x As Long,ByDef y As Long)
在VB中引用
Dim x As Long
Dim y As Long
x=100
y=100
P(x,y)
这时 x=100,y=30

传递字符串

顶点

在C语言中字符串变量实际上是一个地址。所以在VB中即使声明一个字符串变量值传递,也会把地址传给DLL过程,即:源变量的值会随着DLL过程中的对应参数改变而改变
在C语言中空字符串用NULL,即0来表示。在VB中则不能把0作为传给一个String类型的参数,需要使用vbNullString常量来表示空字符串。
例:
hWnd=FindWindow(vbNullString,"Microsoft Word")
FindWindow是系统DLL的一个过程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值