Функция SHGetSpecialFolderLocation

Declare Function SHGetSpecialFolderLocation Lib "shell32" Alias "SHGetSpecialFolderLocationA" (ByVal hwndOwner As Long, ByVal nFolder As Long, ppidl As Long) As Long
SHGetSpecialFolderLocation создает указатель на структуру ITEMIDLIST (известную как PIDL), ссылающую к специальной папке на компьютере. PIDL может относиться к специальным папкам, которые существуют на диске или являются виртуальными папками

Возвращаемое значение

В случае ошибки функция возвращает ненулевое значение или 0 в успешном случае

Параметры

hwndOwner
Дескриптор к окну, вызывающей функцию
nFolder
CSIDL специальной папки для получения PIDL
ppidl
Получает PIDL к желаемой специальной папке

Пример

' Узнаем пути к специальным папкам Избранное и кнопки Пуск
Me.AutoRedraw = True
Me.Print "Папка кнопки Пуск: " + GetSpecialfolder(CSIDL_STARTMENU)
Me.Print "Папка Избранное: " + GetSpecialfolder(CSIDL_FAVORITES)
   
' Создаем функцию-оболочку для удобства
Private Function GetSpecialfolder(CSIDL As Long) As String
  Dim r As Long
  Dim IDL As ITEMIDLIST
 ' получаем название специальной папки
    r = SHGetSpecialFolderLocation(100, CSIDL, IDL)
    If r = NOERROR Then
     Path$ = Space$(512)
    ' получаем путь из IDList
      r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
       ' удаляем ненужный символ chr$(0)
        GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
        Exit Function
    End If
    GetSpecialfolder = ""
End Function

Смотри также

SHGetFolderLocation, SHGetSpecialFolderPath

Категория

Оболочка