我无法让这个工作。它表示期望字符串常量......
{{1}}
有什么建议吗?
答案 0 :(得分:5)
正如所说,你不能这样做。如果使用库的路径,则必须进行硬编码。
但是,如果您不使用硬编码路径,那么Windows将查找该库的已定义顺序。它将搜索应用程序目录,当前目录,Windows和系统目录以及当前路径。如果您将DLL放在任何这些位置,并省略引用中的硬编码路径,它将被找到(它们搜索的顺序因Windows版本和记录的位置而异)
还有另外一种可能性。如果DLL已经加载到内存中,Windows将重用已加载的副本。因此,如果您自己首先加载DLL,则可以省略路径,为此您可以使用字符串变量。查看LoadLibrary的文档。您必须使用FreeLibrary保留句柄并自行释放库。
答案 1 :(得分:0)
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