帮忙解释一下,为什么要向API  GetUserName()函数传递255个空格啊?
    sBuffer = Space$(255)
    lSize = Len(sBuffer)
    Call GetUserName(sBuffer, lSize)

解决方案 »

  1.   

    VB声明 
    Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long 
    说明 
    取得当前用户的名字 
    返回值 
    Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError 
    参数表 
    参数 类型及说明 
    lpBuffer String,一个字串缓冲区,预先初始化成由nSize指定的长度。它将用于容纳用户名 
    nSize Long,初始化成lpBuffer的长度。返回以后,它会包含载入lpBuffer的字符数量 
    示例 
    Dim s$, cnt&, dl&
    cnt& = 199
    s$ = String$(200,0)
    dl& = GetUserName(s$, cnt)
    Debug.Print Left$(s$, cnt); cnt
     
      

  2.   

    VB声明 
    Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long 
    说明 
    取得当前用户的名字 
    返回值 
    Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError 
    参数表 
    参数 类型及说明 
    lpBuffer String,一个字串缓冲区,预先初始化成由nSize指定的长度。它将用于容纳用户名 
    nSize Long,初始化成lpBuffer的长度。返回以后,它会包含载入lpBuffer的字符数量 
    示例 
    Dim s$, cnt&, dl&
    cnt& = 199
    s$ = String$(200,0)
    dl& = GetUserName(s$, cnt)
    Debug.Print Left$(s$, cnt); cnt
    'This project needs a timer
    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
    Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
    Private Sub Form_Load()
        'KPD-Team 1998
        'URL: http://www.allapi.net/
        'E-Mail: [email protected]
        Timer1.Interval = 100
        Timer1.Enabled = True
        Dim strTemp As String, strUserName As String
        'Create a buffer
        strTemp = String(100, Chr$(0))
        'Get the temporary path
        GetTempPath 100, strTemp
        'strip the rest of the buffer
        strTemp = Left$(strTemp, InStr(strTemp, Chr$(0)) - 1)    'Create a buffer
        strUserName = String(100, Chr$(0))
        'Get the username
        GetUserName strUserName, 100
        'strip the rest of the buffer
        strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1)    'Show the temppath and the username
        MsgBox "Hello " + strUserName + Chr$(13) + "The temp. Path is " + strTemp
    End Sub
    Private Sub Timer1_Timer()
        Dim Boo As Boolean
        'Check if this form is minimized
        Boo = IsIconic(Me.hwnd)
        'Update the form's caption
        Me.Caption = "Form minimized: " + Str$(Boo)
    End Sub
      

  3.   

    用sBuffer=Space$(255),先给sBuffer分配内存;然后将sBuffer的内存地址传递给GetUserName(),GetUserName()会向sBuffer所在的内存填充数据。
      

  4.   

    帮忙解释一下,为什么要向API  GetUserName()函数传递255个空格啊?
    ------------------------------------------
    回答:预先初始化存放用户名的变量nSize的长度.
      

  5.   

    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    '
    '取当前WINDOWS用户名
    '函数:UserName
    '参数:
    '返回值:当前WINDOWS用户名.
    '例子:
    Public Function UserName() As String
        Dim Cn As String
        Dim Ls As Long
        Dim res As Long    Cn = String$(255, Chr$(0))
        Ls = 255
        res = GetUserName(Cn, Ls)
        If res <> 0 Then
            UserName = Mid$(Cn, 1, InStr(Cn, Chr$(0)) - 1)
        Else
            UserName = ""
        End If
    End Function