Как определить папку для Моих Документов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
RGRuslan
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 25.06.2004 (Пт) 8:17

Как определить папку для Моих Документов

Сообщение RGRuslan » 02.07.2004 (Пт) 16:40

Как определить папку для Моих Документов?

Например для определения папки Windows есть такая фенька:

Environ("windir")

А что нужно писать вместо windir для того, чтобы определить где находится папка Мои документы?

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 02.07.2004 (Пт) 17:16

По-моему, Environ тут не поможет...
Код: Выделить всё
Const CSIDL_PERSONAL = &H5
Const MAX_PATH = 260

Private Type SHITEMID
    cb As Long
    abID As Byte
End Type

Private Type ITEMIDLIST
    mkid As SHITEMID
End Type

Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Private Sub Form_Load()
Dim r As Long
Dim IDL As ITEMIDLIST
r = SHGetSpecialFolderLocation(100, CSIDL_PERSONAL, IDL)
If r = NOERROR Then
Path$ = Space$(512)
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
MsgBox Left$(Path, InStr(Path, Chr$(0)) - 1), vbInformation
End If
End Sub

RGRuslan
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 25.06.2004 (Пт) 8:17

Сообщение RGRuslan » 02.07.2004 (Пт) 17:58

Код работает, вот только нужно еще объявить переменные NOERROR и Path, причем там где написано Path$ следует исправить на Path.

Правда по поводу NOERROR у меня возникают сомнения, я так понимаю, что ее все-таки не нужно было объявлять (похоже она содержит данные об ошибках), но без этого у меня никак не вышло.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 02.07.2004 (Пт) 18:01

Path$ для большего соответствия типов. Option Explicit нет - значит можно. :) А вообще,
Код: Выделить всё
Private Const NOERROR As Long = &H0&
Dim Path$


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

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

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

    TopList