PDA

Vollständige Version anzeigen : api funktionen


genpop
09.08.2001, 10:03
ich habe folgendes Problem:
ich möchte unter access ,den auf dem PC eingetragenen usernamen abfragen!
unter vb habe ich dazu eine api-funktion eingebunden und kann dies mit folgendem code:
wobei dieser Teil als modul und der zweite Teil als Sub kodiert ist
' ====================================================
' = Get Windows Information =
' ====================================================

Public Const MAX_COMPUTERNAME_LENGTH = 31
Public Const MAX_PATH = 260
Public Const UNLEN = 256

Public Declare Function GetComputerName Lib "kernel32" _
Alias "GetComputerNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long

Public Declare Function GetSystemDirectory Lib "kernel32" _
Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, _
ByVal nSize As Long) As Long

Public Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long

Public Declare Function GetWindowsDirectory Lib "kernel32" _
Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, _
ByVal nSize As Long) As Long

und im Programm

Private Sub comp_name()
'folgender Eintrag in Module2 greift auf winapi zu
'Public Declare Function GetUserName Lib "advapi32.dll" _
'Alias "GetUserNameA" ()

Dim r As Long
Dim s As Long
Dim t As String


t = String(UNLEN + 1, Chr(0))
s = UNLEN
r = GetUserName(t, s)
user = Left(t, s) 'schreibt username nach user
t = String(CInt(MAX_COMPUTERNAME_LENGTH + 1), Chr(0))

s = MAX_COMPUTERNAME_LENGTH
r = GetComputerName(t, s)
machine = Left(t, s)
End Sub

wohin muß ich den Modulteil schreiben daß dieses unter access funktioniert oder wie gehts anders?
Vielen Dank für die Lösung

niemho
09.08.2001, 10:47
Je nach Betriebssystem gibt es verschiedene Umgebungsvariablen,
die in der Eingabeaufforderung mit set abgerufen werden können.
Bei Windows 9x kann auch in der Autoexec.bat mit set VARIABLE=Inhalt ein Eintrag hinzugefügt werden.
Bei Windows NT/2000 gibt es schon eine Variable namens USERNAME, die den aktuellen Benutzernamen enthält.
In Access kann über die Funktion:
Environ$("USERNAME") und in deutsch
Umgebung$("USERNAME")
diese Variable (oder andere) abgerufen werden.

A.S.
09.08.2001, 11:03
Hallo GenPop,

eine (wohl lt. MS) für alle Win-Versionen allgemein gültige Lösung kannst Du in diesem Beitrag finden:
Netzwerkuser in unterschiedlichen Umgebungen ermitteln (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=47196)

Einen der entsprechenden KB-Artikel findest Du hier: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmeother/network_04z4.asp

Weitere findest Du bei der Suche nach "WNetGetUser" im Einstiegsschirm der MSDN.

Gruß

Arno

genpop
09.08.2001, 15:10
danke für die schnellen antworten,
problem besteht aber weiterhin.
ich habe leider vergessen:ich arbeite unter NT mit access97
wenn ich mit dem vorgeschlagenen Bsp. code arbeite habe ich wieder das Problem :Wo gebe ich die declare anweisung ein?(unter vb in den modulen aber wo unter access)

Birgit Dannenberg
10.08.2001, 09:35
Access kennt auch Module!
Gruss Birgit