各位,本人有一事不明,请赐教:
在VB中,调用DLL中的函数时,要用declare function xxxx lib "xxxx.dll" as datatype 的样式声明,
其中lib后面的动态连接库位置是否只能是一个字符串常量,如果我想在程序运行时,动态指定DLL的位置,怎么做,谢谢!
在VB中,调用DLL中的函数时,要用declare function xxxx lib "xxxx.dll" as datatype 的样式声明,
其中lib后面的动态连接库位置是否只能是一个字符串常量,如果我想在程序运行时,动态指定DLL的位置,怎么做,谢谢!
如:程序调用A.dll你用B.dll去覆盖它就变成调用B.dll了
尝试使用MSScriptControl.ScriptControl,可不能添加声明的代码,失败!
http://www.codetoad.com/visual_basic/graphics/custom_cursor.asp
#If Dir("searchmail.dll") = "" Then
Private Declare Function pickup Lib "searchmail.dll" (ByVal URL As String) As String
#Else
Private Declare Function pickup Lib "searchmail.dll" (ByVal URL As String) As String
#End If
提示说“变量未定义”,出错地方在Dir函数。
而vb就调用这个由vc写的函数,除了传递原dll函数中的参数外再加上原dll的路径
原程序代码:
Private Declare Function pickup Lib "searchmail.dll" (ByVal URL As String) As StringPrivate Sub Command1_Click()
MsgBox pickup("http://www.people.com.cn/GB/other6232/6239/")
End Sub
根据楼主的要求作的更改:
Private Declare Function pickup1 Lib "searchmail.dll" Alias "pickup" (ByVal URL As String) As String
Private Declare Function pickup2 Lib "searchmail2.dll" Alias "pickup" (ByVal URL As String) As StringPrivate Sub Command1_Click()
MsgBox pickup("http://www.people.com.cn/GB/other6232/6239/")
End Sub
Private Function pickup(ByVal URL As String) As String
On Error GoTo e
pickup = pickup1(URL)
Exit Function
e:
pickup = pickup2(URL)
End Function
http://www.powerbasic.cn/products/SearchMail_dll.rar
我有一个自己的DLL,在VBA中调用它,那么随着Excel文档位置的变化(比如拷到领一台计算机上)
,只要将该DLL与Excel文档拷到同一路径下即可,那么LIB后面怎么实现,只能是一个字符串常量?
On Error GoTo Request_Copy
MsgBox pickup("http://www.people.com.cn/GB/other6232/6239/")
Exit Sub
Request_Copy:
Dim Source As String, Destination As String
Source = Application.ActiveWorkbook.Path
Source = Replace(Source & "\" & "searchmail.dll", "\\", "\")
Destination = Application.Path
Destination = Replace(Destination & "\" & "searchmail.dll", "\\", "\")
FileCopy Source, Destination
Resume
End Sub