Функция 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
Категория
Оболочка