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 |
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 |