Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как узнать имя пользователя Windows? / 11 сообщений из 11, страница 1 из 1
05.08.2004, 09:50
    #32636241
S. Fedorenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
Собственно сабж.
Где-то читал это:
Код: plaintext
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long)
Не помогло.

Это:
Код: plaintext
Environ("username")
не работает в Win98.

Есть ли универсальный вариант?

Помогите, плиз.
...
Рейтинг: 0 / 0
05.08.2004, 09:53
    #32636245
Gotar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
В VBA это выглядит так...
Dim iName as String
iName = Application.UserName
дальше делать мона что хошь...
...
Рейтинг: 0 / 0
05.08.2004, 09:58
    #32636252
S. Fedorenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
А в Access (на VBA)?
...
Рейтинг: 0 / 0
05.08.2004, 10:16
    #32636288
Gotar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
ну, чтонть типа этого, хелп посмотри...
...
Рейтинг: 0 / 0
05.08.2004, 10:23
    #32636299
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
...
Рейтинг: 0 / 0
05.08.2004, 10:45
    #32636344
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
S. FedorenkoСобственно сабж.
Где-то читал это:
Код: plaintext
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long)
Не помогло.

Это:
Код: plaintext
Environ("username")
не работает в Win98.

Есть ли универсальный вариант?

Помогите, плиз.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Declare Function GetUserNameAPI Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function GetUserName() As String
  Dim sBuffer As String
  Dim lSize As Long
  sBuffer = Space$( 255 )
  lSize = Len(sBuffer)
  Call GetUserNameAPI(sBuffer, lSize)
  If lSize >  0  Then
     'GetUserName = Left$(sBuffer, lSize) 
    GetUserName = left$(sBuffer, InStr(sBuffer, Chr( 0 )) -  1 )
  Else
    GetUserName = vbNullString
  End If
End Function
весьма надежно работает, если не ошибаюсь, еще с 95 винды...
...
Рейтинг: 0 / 0
30.08.2004, 14:37
    #32671338
S. Fedorenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
Hibernate
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Declare Function GetUserNameAPI Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function GetUserName() As String
  Dim sBuffer As String
  Dim lSize As Long
  sBuffer = Space$( 255 )
  lSize = Len(sBuffer)
  Call GetUserNameAPI(sBuffer, lSize)
  If lSize >  0  Then
     'GetUserName = Left$(sBuffer, lSize) 
    GetUserName = left$(sBuffer, InStr(sBuffer, Chr( 0 )) -  1 )
  Else
    GetUserName = vbNullString
  End If
End Function
весьма надежно работает, если не ошибаюсь, еще с 95 винды...
Windows 2000 + Office 2000 = Bad DLL calling convention
...
Рейтинг: 0 / 0
30.08.2004, 15:12
    #32671465
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
странно...
выдрал этот пример из живого проекта, который в настоящий момент прекрасно работает под Win98Se, WinNT4 с любым sp, Win2k с любыми sp, под WinXP prof, во всевозможных кобинациях с офисами чуть ли не всех версий...

слушай, а ты не из под VBA это все пытаешься заюзать? - мож в VBA как-то по-другому - просто никогда им не занимался плотно, не знаю...
...
Рейтинг: 0 / 0
30.08.2004, 15:21
    #32671497
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
Я проверил пример под Win2000 professional Eng 5.00.2195 SP4
Office 2000
Пример работает.
...
Рейтинг: 0 / 0
31.08.2004, 10:14
    #32672615
S. Fedorenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
Все работает. Был какой-то глюк.
...
Рейтинг: 0 / 0
31.08.2004, 15:24
    #32673558
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать имя пользователя Windows?
к стати, может у кого наблюдается глюк при использовании
GetUserName = Left$(sBuffer, lSize)
вместо
GetUserName = left$(sBuffer, InStr(sBuffer, Chr(0)) - 1)
?

в оригинале - первый вариант, но у меня был случай, когда после
Call GetUserNameAPI(sBuffer, lSize)
lSize оставался равным Len(sBuffer), а не длине возвращенной строки. Поэтому пришлось писать более надежный, но и более тормозной вариант с InStr. К стати, самое неприятное в этом варианте - что если вдруг Microsoft в своих DLL начнет трактовать конец строки как-то по другому (а не Chr(0)) то опять придется что-то придумывать. :-(
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как узнать имя пользователя Windows? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]