Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Имя пользователя в VB


Автор: aleonov 30.9.2004, 10:04
Здравствуйте.

Подскажите пожалуйста как в Visual Basic получить имя пользователя? Мне в дальнейшем под этим именем надо будет создать некоторый файл с некоторой информацией.

И еще если не трудно подскажите пожалуйста какие-нибудь ссылочки по VB, чтобы там описание функций, библиотек разных, ну вообще какой-нибудь по удобнее сайт для изучения VB.

Большое спасибо!

Автор: cardinal 30.9.2004, 11:03
Цитата(aleonov @ 30.9.2004, 09:04)
И еще если не трудно подскажите пожалуйста какие-нибудь ссылочки по VB, чтобы там описание функций...

http://forum.vingrad.ru/index.php?showtopic=30242

Автор: boevik 30.9.2004, 11:10
Функция http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getusername.asp

Автор: aleonov 30.9.2004, 11:13
2 cardinal Спасибо. Я искал на форуме здесь, но что-то не нашел, видать плохо искал =)

2 boevik Спасибо.

Автор: aleonov 30.9.2004, 11:31
Вот нашел пример работы с функцией

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

function ...
Dim lngLen As Long, lngRet As Long

strGetUserName = Space(255)
lngLen = 255
lngRet = GetUserName(strGetUserName, lngLen)
strGetUserName = Left(strGetUserName, lngLen - 1)
MsgBox (strGetUserName)
....

Проблема в том, что strGetUserName пустой, хотя и содержит 7 символов (типа aleonov, но пробелами).

Что не так ... понять не могу qstn.gif

Автор: Akina 30.9.2004, 11:48
Код
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Private Sub Command1_Click()

Dim strGetUserName As String * 255
Dim strUserName As String
Dim lngLen As Long, lngRet As Long
lngLen = 255
lngRet = GetUserName(strGetUserName, lngLen)
strUserName = Left(strGetUserName, lngLen - 1)
MsgBox (strUserName)

End Sub

Работает нормально.

Автор: aleonov 30.9.2004, 11:51
Спасибо. Понял все. Работает. biggrin.gif

Автор: cardinal 30.9.2004, 11:51
А я пока Akina искал нашел такой пример:
Код
Private Declare Function GetUserName Lib "advapi32.dll" Alias _
 "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Private Sub Command1_Click ()
 Dim RetVal As Long
 Dim Puffer As String * 256
 Dim UserName As String
 
 RetVal = GetUserName(Puffer, Len(Puffer))

 If RetVal <> 0 Then
   UserName = Left$(Puffer, Instr(1, Puffer, vbNullChar) - 1)
   MsgBox "Hallo " & UserName
 End If
End Sub



Автор: -Mikle- 1.10.2004, 19:11
cardinal, это самое правильное применение этой функции smile.gif

Автор: Данкинг 13.2.2009, 11:47
Цитата(Akina @  30.9.2004,  11:48 Найти цитируемый пост)
Работает нормально. 

Пишет "точка входа в библиотеку не найдена". Что делать?
ЗЫ: я не знаю VBA, просто надо срочно помочь одному человеку сделать один проект. smile 

Проблема решена, это я ступил, извиняюсь, забыл указать альяс. smile 

Автор: Akina 13.2.2009, 13:04
Цитата(Данкинг @  13.2.2009,  12:47 Найти цитируемый пост)
Пишет "точка входа в библиотеку не найдена". Что делать?

Проверять наличие и регистрацию библиотеки.

Автор: DviRUS 15.8.2011, 13:23
Куда вставлять
Код

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

из кода Кардинала, ато у меня во всех местах выдаёт ошибку:
Цитата

Microsoft Visual Basic for Applications
---------------------------
Compile error:

Only comments may appear after End Sub, End Function, or End Property
---------------------------
ОК   Справка


ПыСы: я не некропостер.

ПыПыСы: Все получилось. Декларирование функций должно находится в начале кода.

Автор: iff 16.8.2011, 13:51
Код

Environ("USERNAME")

вернёт имя пользователя

Автор: DviRUS 17.8.2011, 09:29
iff, да... Так гораздо легче!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)