vb6使用变量作为DLL路径

时间:2017-10-29 14:09:39

标签: vb6

我无法让这个工作。它表示期望字符串常量......

{{1}}

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

正如所说,你不能这样做。如果使用库的路径,则必须进行硬编码。

但是,如果您不使用硬编码路径,那么Windows将查找该库的已定义顺序。它将搜索应用程序目录,当前目录,Windows和系统目录以及当前路径。如果您将DLL放在任何这些位置,并省略引用中的硬编码路径,它将被找到(它们搜索的顺序因Windows版本和记录的位置而异)

还有另外一种可能性。如果DLL已经加载到内存中,Windows将重用已加载的副本。因此,如果您自己首先加载DLL,则可以省略路径,为此您可以使用字符串变量。查看LoadLibrary的文档。您必须使用FreeLibrary保留句柄并自行释放库。

答案 1 :(得分:0)

Private Declare Function CallWindowProcW Lib "User32" ...

测试

Declare Statement

示例

以下示例声明对Function过程的外部引用,该过程返回当前用户名。然后,它将外部过程GetUserNameA作为getUser过程的一部分进行调用。

Declare Function getUserName Lib "advapi32.dll" Alias "GetUserNameA" (
    ByVal lpBuffer As String, ByRef nSize As Integer) As Integer
Sub getUser()
    Dim buffer As String = New String(CChar(" "), 25)
    Dim retVal As Integer = getUserName(buffer, 25)
    Dim userName As String = Strings.Left(buffer, InStr(buffer, Chr(0)) - 1)
    MsgBox(userName)
End Sub