путь к папке пользователя

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

путь к папке пользователя

Сообщение xfolder » 12.12.2003 (Пт) 14:50

хочу узнать как получить к папке пользователя

по умолчанию это c:\documents and settings\ USER\desktop\

а если диск другой?

спасибо

acoustic
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 09.12.2003 (Вт) 17:30

Сообщение acoustic » 12.12.2003 (Пт) 16:03

Пример самым наглым образом выдран из API-Guide :)
Код: Выделить всё
Private Const TOKEN_QUERY = (&H8)
Private Declare Function GetAllUsersProfileDirectory Lib "userenv.dll" Alias "GetAllUsersProfileDirectoryA" (ByVal lpProfileDir As String, lpcchSize As Long) As Boolean
Private Declare Function GetDefaultUserProfileDirectory Lib "userenv.dll" Alias "GetDefaultUserProfileDirectoryA" (ByVal lpProfileDir As String, lpcchSize As Long) As Boolean
Private Declare Function GetProfilesDirectory Lib "userenv.dll" Alias "GetProfilesDirectoryA" (ByVal lpProfileDir As String, lpcchSize As Long) As Boolean
Private Declare Function GetUserProfileDirectory Lib "userenv.dll" Alias "GetUserProfileDirectoryA" (ByVal hToken As Long, ByVal lpProfileDir As String, lpcchSize As Long) As Boolean
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Sub Form_Load()
    'KPD-Team 2000
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@allapi.net
    Dim sBuffer As String, Ret As Long, hToken As Long
    'set the graphics mode of this form to 'persistent'
    Me.AutoRedraw = True
    'create a string buffer
    sBuffer = String(255, 0)
    'retrieve the all users profile directory
    GetAllUsersProfileDirectory sBuffer, 255
    'show the result
    Me.Print StripTerminator(sBuffer)
    'create a string buffer
    sBuffer = String(255, 0)
    'retrieve the user profile directory
    GetDefaultUserProfileDirectory sBuffer, 255
    'show the result
    Me.Print StripTerminator(sBuffer)
    'create a string buffer
    sBuffer = String(255, 0)
    'retrieve the profiles directory
    GetProfilesDirectory sBuffer, 255
    'show the result
    Me.Print StripTerminator(sBuffer)
    'create a string buffer
    sBuffer = String(255, 0)
    'open the token of the current process
    OpenProcessToken GetCurrentProcess, TOKEN_QUERY, hToken
    'retrieve this users profile directory
    GetUserProfileDirectory hToken, sBuffer, 255
    'show the result
    Me.Print StripTerminator(sBuffer)
End Sub
'strips off the trailing Chr$(0)'s
Function StripTerminator(sInput As String) As String
    Dim ZeroPos As Long
    ZeroPos = InStr(1, sInput, Chr$(0))
    If ZeroPos > 0 Then
        StripTerminator = Left$(sInput, ZeroPos - 1)
    Else
        StripTerminator = sInput
    End If
End Function

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 12.12.2003 (Пт) 16:40

super

spasibo


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24

    TopList