Функция SHGetFolderPath

Declare Function SHGetFolderPath Lib "shell32.dll" Alias "SHGetFolderPathA" (ByVal hwndOwner As Long, ByVal nFolder As Long, ByVal hToken As Long, ByVal dwFlags As Long, ByVal lpszPath As String) As Long
SHGetFolderPath возвращает имя специальной папки в системе. Данная функция работает только со специальными папками, которые физически присутствуют на диске, но не работают с виртуальными папками

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

Функция возвращает один из следующих значений:

S_OK = &H0
Функция успешно завершилась
S_FALSE = &H1
CSIDL специальной папки действителен, но папка является виртуальной
E_INVALIDARG = &H80070057
CSIDL неверен

Параметры

hwndOwner
Дескриптор окна, вызывающей функцию
nIndex
CSIDL специальной папки для получения его пути
hToken
Обычно используется 0
dwFlags
Один из следующих флагов, определяющих тип получаемого пути:
SHGFP_TYPE_CURRENT = 0
Текущий путь папки
SHGFP_TYPE_DEFAULT = 1
Путь по умолчанию для папки
lpszPath
Строка с завершающим нулем, содержащая путь к специальной папке (не более 260 символов)

Пример

' Выводим путь папки History
Dim pathname As String
Dim lRet As Long

' Подготовим буфер для приема строки
pathname = Space(260)
' Получим путь папки History
lRet = SHGetFolderPath(Form1.hWnd, CSIDL_HISTORY, 0, SHGFP_TYPE_CURRENT, pathname)
' Удалим пробелы из строки
pathname = Left(pathname, InStr(pathname, vbNullChar) - 1)
' Выводим результат
Debug.Print "Путь к папке History: "; pathname

Смотри также

SHGetFolderLocation, SHGetSpecialFolderPath

Категория

Оболочка