vb6使用变量作为DLL路径

vb6使用变量作为DLL路径,vb6,Vb6,我不能让它工作。它说字符串常量应该是 Dim const path As String = "\Windows\System32\user32" Private Declare Function CallWindowProcW Lib path... 有什么建议吗 Private Declare Function CallWindowProcW Lib "User32" ... 测试一下 示例 下面的示例声明了对返回当前用户名的函数过程的外部引用。然后,它调用外部过程GetUserName

我不能让它工作。它说字符串常量应该是

Dim const path As String = "\Windows\System32\user32"
Private Declare Function CallWindowProcW Lib path...
有什么建议吗

Private Declare Function CallWindowProcW Lib "User32" ...
测试一下

示例

下面的示例声明了对返回当前用户名的
函数
过程的外部引用。然后,它调用外部过程
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

如前所述,你不能那样做。如果使用库的路径,则必须对其进行硬编码

但是,如果您不使用硬编码路径,则Windows将按照定义的顺序查找库。它将沿当前路径搜索应用程序目录、当前目录、Windows和系统目录。如果您将DLL放在这些位置中的任何一个位置,并在引用中省略硬编码路径,就会找到它(它们的搜索顺序因Windows版本和记录位置而异)


还有一种可能性。如果DLL已加载到内存中,Windows将重用加载的副本。因此,如果您首先自己加载DLL,您可以省略路径,为此,您可以使用字符串变量。查看文档以了解更多信息。你必须保留一个手柄,自己使用它来释放库。

你不能这样做。为什么不呢?没有类似的东西吗?我希望它是一个variableDim const路径,如String=“user32”Private Declare Function CallWindowProcW Lib path…或者可以使用清单文件重定向带有
文件
标记的dll加载程序。