//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Confidential Trade Secret.
// Copyright 1987-2001 Data Access Corporation, Miami FL, USA
// All Rights reserved
// DataFlex is a registered trademark of Data Access Corporation.
//
// Module:
//      GetUserName.Pkg
//
// Purpose:
//      Defines interface to WinAPI function GetUserName.
//
// Author:
//      Vincent Oorsprong
//
// Date:
//      2001, May, 26th
//
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#IFNDEF GET_GetUserName
Define UNLEN For 256 // Maximum user name length

External_Function32 WinAPI_GetUserName "GetUserNameA" AdvApi32.DLL Pointer lpBuffer Pointer lpnSize Returns DWord

Function GetUserName Desktop Returns String
    String sUserName
    Integer iRetval iLength
    
    ZeroString UNLEN To sUserName
    Move UNLEN To iLength
    
    Move (WinAPI_GetUserName (AddressOf (sUserName), AddressOf (iLength))) To iRetval
    
    If (iRetval <> 0) Begin
        Function_Return (CString (sUserName))
    End
    Else Begin
        Function_Return "Unable to retrieve username"
    End
End_Function // GetUserName
#ENDIF