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