VB如何调用dll
比如:这个DLL模块名为:a.DLL其中的函数名称为b,参数一个为c,一个为d,返回类型为整数。像这样的该怎么调用?(刚学VB取详细方法求注释) 展开
在调用自己写的dll之前,想来看看VB是如何调用API的:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Dim Hwnd As Long
Hwnd = FindWindow(vbNullString, "Form1")
If Hwnd <> 0 Then
Debug.Print "窗口的句柄为:" & Hwnd
Else
Debug.Print "参数设置错误或者程序异常"
End If
End Sub
以上代码就实现了调用FindWindow API 获取窗口标题为“Form1”的句柄,那么,如何调用自己写dll呢?其实,了解过API的同学都知道,API是封装在dll里面的。看到这里还是不懂如何调用dll?别怕,先分析下上面的API声明。
(以下片段来自网友)
经过上面,我们知道如何添加API,接着我们分析一下API声明,这是你了解API必备的。首先看第一个单词Private,很显然,我上面刚刚讲过,这是申明一个私有的API变量。再看第二个Declare,这个单词帮我们告诉VB是在申明API函数,一般申明外在的API函数时都必须带上这个单词。第三个Sub,别告诉我你不知道什么意思?这就是我叫你先学习VB中过程函数的意思,这个说白了就是没有反回值,一般如果不是Sub而是Function都带有反回值的。第四个Lib,这个是告诉VB我们要声明哪一个DLL中的API函数,也就是告诉VB我们要申明第五个单词kernel32.dLL中的API,一般写DLL名称时都要用双引号括起来,如"user32"、"shell32.dll"等,至于后面的.dll这个可以带可不带。再来看第六个Alias,这个也是需要同后面一个一起用的,我们应该把第六个和第七个连起来一起看Alias "Sleep"(这里对应上面的Alias "FindWindowA"
),这个意思表示将被调用的过程在DLL中还有另外的名称,这个是可选的。最后括号里面的,也就是和过程函数一样,你传入相应的值就可以了。
看到这里,知道该怎么用了吧?
还是不太懂?好吧!请往下看:
假设a.DLL在C盘根目录,c和d都是长整形,私有声明如下
Private Declare Function b Lib "c:\a.dll"_
(ByVal c As Long, ByVal d As Long) As Long
调用:Data1=b(2,3)
好了。
如果上面从网友那里摘抄来的看不懂的话请追问,满意请采纳!
Private Declare Function b lib "a.dll" (byval c as long, byval d as long) as long
(以上假设参数c和d的类型均为long型
2014-03-05
2014-03-05
api。。。 他要的应该是普通dll吧。。。