2
功能我有VBA的MS Access形式的代码,在那里我键入下面的函数声明:使用别名关键字来声明在VBA
Public Declare Function GetUserName Lib "advapi32.dll"() Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
但是我对Alias
得到一个错误。为了使用它,我必须添加一些参考吗?
声明一个API functino'作为布尔值'是一个矫枉过正的IMO。 “正确的”VB布尔值被限制为0/-1,但是你可以使用'CopyMemory'来强制任何值,非零为真。这就是API声明中的'Boolean Boolean' - 将布尔中的1隐藏起来。在bool表达式中使用这样的“黑客”值可能会产生奇怪的副作用,比如在两个变量中“bValue1和bValue2”都是错误的。 – wqw 2011-04-23 08:57:22
@wqw非常正确。当bValue也为真时,它也可能导致Not bValue为真。不要在声明中使用布尔值来对付Windows API – MarkJ 2011-04-23 10:07:33
VB 6真的不知道如何编组数据类型比这更好?是的,它比其他常用编程语言在内部表示的布尔数据类型不同,并且WinAPI中的BOOL不是布尔数据类型。但我从来没有遇到过让预期工作的问题。我想我的期望是人为的。以你想要的方式宣布它;如果它是“Long”,那么“TRUE”将为1,“FALSE”将为0。 – 2011-04-23 10:25:02