|
Onderstaande in module zetten en je kan het gebruiken om de windows user name op te halen. Dit kan in VBA door onderstaande regel te gebruiken | 01. |
| | 02. |
Environ ("username")
| | 03. |
| of de wat ingewikkeldere versie: | 01. |
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" ( _
| | 02. |
ByVal lpBuffer As String, nSize As Long) As Long
| | 03. |
| | 04. |
| | 05. |
Public Function UserNameApi() As String
| | 06. |
| | 07. |
Dim strReturn As String, nSize As Long, lngRet As Long
| | 08. |
| | 09. |
GetUserName fills the variable with a name and ends with a 0-char.
| | 10. |
| | 11. |
strReturn = String(256, Chr(0))
| | 12. |
nSize = Len(strReturn)
| | 13. |
| | 14. |
lngRet = GetUserName(strReturn, nSize) will fail when nSize is too small
| | 15. |
| | 16. |
If lngRet = 0 Then failure
| | 17. |
If nSize > 0 Then more data (ERROR_MORE_DATA)
| | 18. |
strReturn = String(nSize, Chr(0)) nSize contains necessary length
| | 19. |
lngRet = GetUserName(strReturn, nSize)
| | 20. |
End If
| | 21. |
End If
| | 22. |
| | 23. |
| | 24. |
If the variable contains a 0-char, the username is everything in front of it.
| | 25. |
nSize = InStr(1, strReturn, Chr(0))
| | 26. |
| | 27. |
If nSize > 0 Then
| | 28. |
UserNameApi = Left(strReturn, nSize - 1)
| | 29. |
Else
| | 30. |
UserNameApi = strReturn
| | 31. |
End If
| | 32. |
| | 33. |
| | 34. |
End Function
| | 35. |
| | 36. |
| Wat de beste oplossing is, en onder welke omstandigheden, daar ben ik nog niet uit.
|