VB如何调用dll函数

作者&投稿:藤闹 (若有异议请与网页底部的电邮联系)
vb编程怎么调用.Dll库函数~

vb编写的dll:
注册dll,引用dll,private xxx as dll中的类名,在form_load中初始化:set xxx = new dll中的类名
或:
注册dll,set xxx = createobject("工程名.类名")
vc 编些的标准dll:
private|public declare function|sub 函数名 lib "dll名" [Alias "dll中的函数名"](参数) as 返回值类型
例:
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

要声明一个DLL过程,首先需要在代码窗口的"通用(General)"部分增加一个Declare语句。如果该过程返回一个值,应将其声明为
Function:
   Declare Function publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]]...])] As Type
   如果过程没有返回值,可将其声明为Sub:
   Declare Sub publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]]...])]
  缺省情况下,在标准模块中声明的DLL过程,可以在应用程序的任何地方调用它。在其它类型的模块中定义的DLL过程则是模块私有的,必须在它们前面声明Private关键字,以示区分。下面分别介绍声明语句的各个组成部分。
  (一)、指定动态库:
  Declare语句中的Lib子句用来告诉Visual Basic如何找到包含过程的.dll文件。 如果引用的过程属于Windows核心库(User32、Kernel32或GDI32),则可以不包含文件扩展名,如:
   Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
   对于其它动态连接库,可以在Lib子句指定文件的路径:
   Declare Function lzCopy Lib "c:/windows/lzexpand.dll" _
   (ByVal S As Integer, ByVal D As Integer) As Long
如果未指定libname的路径,Visual Basic将按照下列顺序查找该文件:
  ①.exe文件所在的目录
  ②当前目录
  ③Windows系统目录
  ④Windows目录
  ⑤Path环境变量中的目录
  下表中列出了常用的操作系统环境库文件。
  动态链接库描述
  Advapi32.dll高级API服务,支持大量的API(其中包括许多安全与注册方面的调用)
  Comdlg32.dll通用对话框API库
  Gdi32.dll图形设备接口API库
  Kernel32.dllWindows32位核心的API支持
  Lz32.dll32位压缩例程
  Mpr.dll多接口路由器库
  Netapi32.dll32位网络API库
  Shell32.dll32位ShellAPI库
  User32.dll用户接口例程库
  Version.dll版本库
  Winmm.dllWindows多媒体库
  Winspool.drv后台打印接口,包含后台打印API调用。
  对于Windows的系统API函数,可以利用VB提供的工具API Viewer查找某一函数及其相 关数据结构和常数的声明,并复制到自己的程序中。

静态调用简单,动态调用麻烦;静态调用占用资源多,动态调用占用资源少。

静态调用就是常用的申明API,一个DLL库里有很多的函数可供调用,把要用的申明即可。比如:Public/Private Declare Function [函数名] Lib "DLL文件名" [Alias "别名"] (参数变量表) [As 返回值的数据类型]

示例:Private Declare Function Test Lib "dll.dll" (x As String) As String

当程序结束的时候系统回自动释放DLL调用。

动态调用使用LoadLibery(DLL名),系统会检查DLL是否调入内存。如果调入了,可直接调用DLL里的所有函数,没有就会把DLL加入目标进程的进程空间。通过函数GetProcAddress确定函数入口地址,然后调用,后一种方法VB里不常用的。

扩展资料

静态调用详解:

制作好DLL之后,首先用Declare声明语句在窗体级或模块级或全局模块的代码声明段进行声明,将动态链接库中的函数声明到VB中,供VB程序调用。

语法格式1:

Public/Private Declare Sub [函数名] Lib "DLL文件名" [Alias "别名"] (参数变量表)

语法格式2:

Public/Private Declare Function [函数名] Lib "DLL文件名" [Alias "别名"] (参数变量表) [As 返回值的数据类型]

在声明中首先用Declare关键字表示声明DLL中的函数。在C语言中有的函数类型为VOID,它表示不具有返回值,则必须用关键字Sub将其声明成过程。有的函数具有返回值,则必须用关键字Function将其声明成函数,并且在声明语句的最后要用AS关键字指明函数返回值的类型。

例如add.DLL在VB中就可以声明为:

Declare Function ADD Lib "c:\add.dll" (ByVal X AS Integer, ByVal Y AS Integer, ByVal filein as string) AS Integer

通过此声明语句将函数ADD声明到VB中,便可直接调用。

































1.在工程-引用中将asdfg.dll引用过来
2.dim AAA as asdfg 'asdfg是类模块的名称
Private Sub Form_Load()
dim x
Set AAA = New asdfg
x = AAA.zxc(参数1,参数2)'参数1,2自己写
End Sub

建议你了解一下下面dll的制作方法,理解就更透彻了。下面内容来自百度。

1.新建一个ActiveX Dll,工程名字为vbmytestdll,类模块名字为mytestdll
2.类模块内容只有一个函数,主要返回DLL的HELLO WORLD
Public Function dlltest1() As String
dlltest1 = "HELLO WORLD"
End Function

3.保存,生成DLL,名字为

vbmytestdll.dll

4.新建一个EXE工程,在菜单: 工程---引用---浏览里找到vbmytestdll.dll,把它引用进来

5.EXE工程代码如下:

Option Explicit
Dim testdll As mytestdll'类模块名字

Private Sub Form_Load()
Set testdll = New mytestdll 'DLL的一个新实例
Me.Caption = testdll.dlltest1 '我的标题=返回DLL的HELLO WORLD
End Sub

OK,编译成EXE即可看到效果.

1.新建一个ActiveX Dll,工程名字为vbmytestdll,类模块名字为mytestdll
2.类模块内容只有一个函数,主要返回DLL的HELLO WORLD
Public Function dlltest1() As String
dlltest1 = "HELLO WORLD"
End Function

3.保存,生成DLL,名字为

vbmytestdll.dll

4.新建一个EXE工程,在菜单: 工程---引用---浏览里找到vbmytestdll.dll,把它引用进来

5.EXE工程代码如下:

Option Explicit
Dim testdll As mytestdll'类模块名字

Private Sub Form_Load()
Set testdll = New mytestdll 'DLL的一个新实例
Me.Caption = testdll.dlltest1 '我的标题=返回DLL的HELLO WORLD
End Sub

1、右击工程》添加引用 把你的dll文件添加进去
2、然后你定义一个变量作为dll中函数类型的,将变量实例化,最后在调用方法




用VB要调用VC6的DLL文件里的多个函数,VC6的DLL应该怎样写?
函数名前加 WINAPI DEF文件中在书写 EXPORTS的下一行 将要导出的函数名粘贴进来

DLL注入后,如何调用DLL里的函数
你让DLL注入后,在所有初始工作完成后,让他进入一个WHILE(1){...} 在循环体中睡眠,醒后去读各种IPC通信机制,象管道,邮槽,文件印象等实现它与自己的程序通信.甚至可以创建一个隐藏窗口,然后让你的程序向这个窗口发消息控制它,使它调用DLL里的函数.你还可以在DLL里创建一个全局类,把所有的工作都在...

如何调用dll文件中的函数
这个函数就是映射可执行模块的地址到调用这个函数的进程中,以便这个进程能够调用可执行模块中的函数。输入参数: lpLibFileName 指向一个可执行模块的名字的字符串,在这里也就是指向"sqlite3.dll"的字符指针,你也可以加路径,请注意要用back slashes(\\)代替forward slashes(\/)。具体的请参看MSDN。返...

如何使用VBS脚本调用C++写的DLL函数
先注册dll 调用方法如下 Set x = CreateObject("工程名.类名")x.函数名 '工程名就是编译后的dll文件名跟vbs调用普通的dll文件一样的格式 注意 最快回答 那人说的是vbs调用api的方法 与你的要求并不相同你要的是调用自己写的dll

VB如何使用WINPSK.DLL中PTK_DRAWBARCODE2D_QR函数
obj.PTK_DRAWBARCODE2D_QR ('这里传PTK_DRAWBARCODE2D_QR方法接受的参数即可')'PTK_DRAWBARCODE2D_QR函数的参数类型,返回值类型你自己看看说明 2:工程-->引用 中添加对WINPSK.DLL的引用 (此种方式称为前期绑定),引用后直接在代码中用。例如引用后再代码中生命一个变量 Dim obj as New WINPSK....

怎么调用外部的DLL
当您在应用程序中加载 DLL 时,可以使用两种链接方法来调用导出的 DLL 函数。这两种链接方法是加载时动态链接和运行时动态链接。在运行时动态链接中,应用程序调用 LoadLibrary 函数或 LoadLibraryEx 函数以在运行时加载 DLL。成功加载 DLL 后,可以使用 GetProcAddress 函数获得要调用的导出的 DLL 函数的...

vb如何调用AA.DLL文件中的BB函数???
或者:public declare auto function bb lib "dll文件位置"(byval icdev as int32,byref bifv as BasicInfoV4,byref CardSN as uint32) as int32‘自动选择类型 如果出现错误,把两个byref 分别改为byval 再试一下。至于调用,像正常vb函数一样调用就可以了。vb6.0中使用时改成对应的数据类...

如何引用dll文件?
但是具体引用时还需要引用相关命名空间。C#中如何调用DLL文件的方法是:有命名空间则引入命名空间,dll里面,是a命名空间,有一个b类,然后有一个无参数静态方法c那么调用方法就是a.b.c()。在解决方案中,右键引用选择添加引用或选择顶端菜单的项目---添加引用。添加如图,然后程序前引用usingMicrosoft....

PB中怎样调用dll文件中的函数
pb编译的不是标准的dll文件..不能调用调用c的dll最好不要用直接返回String,而用传递引用参数来做,即pb声明publicfunctionintegergetword(refstringvalue)library"dllfile.dll"c里面写:extern"C"intEXPORTPASCALgetword(char

VB 如何获得DLL导出函数在其他进程中的地址
DllGetVersion并不是一个一定可以使用的API.微软在自己的新版本的公用系统DLL中使用了这个函数,但是早期版本的系统DLL中并没有,而这个函数并不是一个获得其它DLL的版本的函数,而是由DLL自己告诉你它的版本,所以你不可以把它当成一个一般API来看待。那么怎么使用它呢?为了得知要调用的DLL是否有这个函数,我找到了这个...

山西省19196482964: vb中如何调用dll?麻烦举个例子吧~~ -
战版益脑: [工程]---[引用]---[浏览]--找到你要用的dll文件如果dll文件是你自己写的,在你的程序里直接用就行拉如:dim xx as new [自己写的类名] 剩下的使用 xx 调用就可以看到你的程序里写的函数了

山西省19196482964: VB中如何调用dll
战版益脑: vb6中有个api explorer,输入你需要的函数,比如sleep,搜出来后,就会有调用方法,你调用别的dll,首先需要知道dll中的函数名称,同时把dll文件名称换下来,把函数名称换下来就可以了.当然,你要注意private和public

山西省19196482964: vb调用dll -
战版益脑: 制作好DLL之后,就可以用VB调用它,实现VB调用C程序.VB程序要使用DLL中的函数,首先必须要有特殊的声明,用Declare声明语句在窗体级或模块级或全局模块的代码声明段进行声明,将动态链接库中的函数声明到VB中,供VB程序调用...

山西省19196482964: VB如何调用DLL -
战版益脑: 那要看这个是什么类型的dll了,如果是ActiveX DLL,你可以用工程菜单里的引用把它导入进来使用.如果是VC++写的标准DLL,你必须实现知道它的调用接口声明格式.声明是前面加上Declare语句才行.给你个调用dll的例子吧 Declare Function mixerGetNumDevs Lib "winmm.dll" Alias "mixerGetNumDevs" () As Long 这是一个返回配置代号的dll,如果有参数的话,你还得知道()里的参数值和类型.声明后,这个dll使用起来很简单 Dim n As Long n = mixerGetNumDevs Msgbox n

山西省19196482964: 如何用VB编写自己的DLL文件,并调用其中的函数 -
战版益脑: LoadLibrary()和GetProcAddress()用于非ActiveX的链接库,你可以接着调用函数试试看

山西省19196482964: vb调用dll -
战版益脑: vb生成的dll 不是标准的 dll,不能这样引用:private declare function shuangquzhengge lib "C:\math.dll"在你的另一工程中, 点击“工程”菜单下的“引用”,勾选你的 dll将 private declare function shuangquzhengge lib "C:\math.dll" 改为:Dim Mydll As New My1注意:My1 要换成你dll的类模块名然后,在代码中这样引用:d=Mydll.HSin(5)

山西省19196482964: 用VB调用C语言DLL文件中的函数 -
战版益脑: 要是你编写的是com组建的话,可以用以上方法, 但输出函数型动态链接库的话使用一下方法.function ICC_resetVB(byval fd as long,mlen as long,byval resp as string) as long 参数中含有结构体数据,请使用CopyMemory来把long转换结构体.

山西省19196482964: VB怎么调用DLL?
战版益脑: 第一:要确定你的DLL文件存在 第二:如果你的DLL文件是自己编的话,lib""这里要具体的路径,或者把你编的DLL文件和你的程序放在同一文件夹好像也是可以的. ------------------------ 所以你调用出错了,应该是Lib "ping.dll" ()这里的ping.dll没有具体路径或者没有和你的程序在同一个文件夹里面

山西省19196482964: VB如何调用.DLL文件里的函数?最好有具体的例子 -
战版益脑: private declare function "xxx" lib "xxx.dll" (byval parameter1 as integer,...) as long

山西省19196482964: 在VB中怎么调用dll文件中的函数 -
战版益脑: 这种com组件应该支持在注册(regsvr32 IdeaOptics.dll)过后可以动态调用:set newobj = createobject("IdeaOptics.class1")debug.print newobj.getNumberOfPixels(index)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网