Функция SHBrowseForFolder

Declare Function SHBrowseForFolder Lib "shell32" Alias "SHBrowseForFolderA" (lpbi As BROWSEINFO) As Long
SHBrowseForFolder открывает диалоговое окно Обзор папок для выбора пользователем нужной папки. Выбранная папка может быть физической папкой на диске или виртуальной папкой. Используйте функцию CoTaskMemFree для освобождения указателя PIDL, используемого функцией

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

В случае ошибки или нажатия пользователем кнопки Отмена возвращается 0. В успешном случае функция возвращает указатель на структуру ITEMIDLIST (PIDL)

Параметры

lpbi
Содержит все необходимые настройки для инициализации диалогового окна Обзор папок. Также эта структура получает некоторую информацию от функции при успешном ее завершении

Пример

' Откроем диалоговое окно
' Обзор папок и покажем имя выбранной папки
Dim iNull As Integer
Dim lpIDList As Long, lResult As Long
Dim sPath As String, udtBI As BrowseInfo

With udtBI
' Окно владельца
  .hWndOwner = Me.hWnd
'lstrcat связывает две строки
' и возвращает адрес в памяти
  .lpszTitle = lstrcat("C:\", "")
  .ulFlags = BIF_RETURNONLYFSDIRS
End With
' Показываем диалоговое окно
lpIDList = SHBrowseForFolder(udtBI)
 If lpIDList Then
  sPath = String$(MAX_PATH, 0)
' Получаем путь из IDList
  SHGetPathFromIDList lpIDList, sPath
' Освобождаем память
  CoTaskMemFree lpIDList
  iNull = InStr(sPath, vbNullChar)
    If iNull Then
      sPath = Left$(sPath, iNull - 1)
    End If
 End If
MsgBox sPath

Категория

Оболочка