VB6 使用变量作为 DLL 路径

  • 本文关键字:DLL 路径 变量 VB6 vb6
  • 更新时间 :
  • 英文 :


我无法让它工作。它说字符串常量预期...

Dim const path As String = "WindowsSystem32user32"
Private Declare Function CallWindowProcW Lib path...

有什么建议吗?

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

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

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

Private Declare Function CallWindowProcW Lib "User32" ...

测试它

声明声明

下面的示例声明对返回当前用户名的 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

最新更新