vb-Zentrum
Netzwerk & Internet
http://www.vb-zentrum.de/tip_netzwerk.html

© 2023 vb-Zentrum

0001 Benutzernamen ermitteln

Oft ist es wichtig, erst recht bei Applikationen im Netzwerk, den Benutzernamen zu Laufzeit zu ermitteln. Das geht - wie sollte es auch anders sein - mal wieder mit einer API-Funktion. Um den Namen später in einem VB-String verwalten zu können muss nach der Ermittlung unbedingt das für die C-Programmierung typische NullByte am Ende des Rückgabe-Strings entfernt werden, ausserdem muss der Rückgabestring (hier: Buffer) zuvor mit Leerzeichen als Platzhalter gefüllt sein. Statt einen leeren String mit der Funktion Space$(255) mit 255 Leerzeichen zu füllen deklariere ich gleich einen entsprechenden String: Dim Buffer As String * 255
 
' Deklaration:
Declare Function GetUserName Lib "advapi32.dll" Alias _
        "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
 
' Funktionen:
Public Function UserName() As String
  Dim Buffer As String * 255
 
  If (GetUserName(Buffer, Len(Buffer)) = 1) Then
    UserName = nullTrim(Buffer)
  Else
    UserName = ""
  End If
End Function
 
' Entfernt die lästigen Null-Bytes, die von diversen
' API-Funktionen bei Stringrückgaben übergeben werden:
Public Function nullTrim(ByVal s As String) As String
  Dim p As Long
 
  p = InStr(s, vbNullChar)
  If p > 0 Then
    nullTrim = Left$(s, p - 1)
  Else
    nullTrim = s
  End If
End Function
 
' Aufruf:
Dim glbUserName As String
glbUserName = UserName

Autor: ralf schlegel
Stand: 01/2003

Nach oben

0002 Computernamen ermitteln

Oft ist es wichtig, erst recht bei Applikationen im Netzwerk, den Rechnernamen zu Laufzeit zu ermitteln. Das geht - wie sollte es auch anders sein - mal wieder mit einer API-Funktion. Um den Namen später in einem VB-String verwalten zu können muss nach der Ermittlung unbedingt das für die C-Programmierung typische NullByte am Ende des Rückgabe-Strings entfernt werden, ausserdem muss der Rückgabestring (hier: Buffer) zuvor mit Leerzeichen als Platzhalter gefüllt sein. Statt einen leeren String mit der Funktion Space$(255) mit 255 Leerzeichen zu füllen deklariere ich gleich einen entsprechenden String: Dim Buffer As String * 255
' Deklaration:
Declare Function GetComputerName Lib "kernel32" _
        Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

' Funktionen:
Public Function ComputerName() As String
  Dim Buffer As String * 255

  If (GetComputerName(Buffer, Len(Buffer)) = 1) Then
    ComputerName = nullTrim(Buffer)
  Else
    ComputerName = ""
  End If
End Function

' Entfernt die lästigen Null-Bytes, die von diversen
' API-Funktionen bei Stringrückgaben übergeben werden:
Public Function nullTrim(ByVal s As String) As String
  Dim p As Long

  p = InStr(s, vbNullChar)
  If p > 0 Then
    nullTrim = Left$(s, p - 1)
  Else
    nullTrim = s
  End If
End Function

' Aufruf:
Dim glbCompName As String
glbCompName = ComputerName

Autor: ralf schlegel
Stand: 01/2003

Nach oben