CommonDialog и открытие только каталога - VB

Узнай цену своей работы

Формулировка задачи:

Он у меня пока файл не укажешь - работать не хотит, а мне надо каталог указать. Как быть?

Решение задачи: «CommonDialog и открытие только каталога»

textual
Листинг программы
  1. Option Explicit
  2. Private Type BrowseInfo
  3.     hWndOwner As Long
  4.     pIDLRoot As Long
  5.     pszDisplayName As Long
  6.     lpszTitle As Long
  7.     ulFlags As Long
  8.     lpfnCallback As Long
  9.     lParam As Long
  10.     iImage As Long
  11. End Type
  12. Const BIF_RETURNONLYFSDIRS = 1
  13. Const MAX_PATH = 260
  14. Private Declare Sub CoTaskMemFree Lib 'ole32.dll' (ByVal hMem As Long)
  15. Private Declare Function lstrcat Lib 'kernel32' Alias 'lstrcatA' (ByVal lpString1 As String, ByVal lpString2 As String) As Long
  16. Private Declare Function SHBrowseForFolder Lib 'shell32' (lpbi As BrowseInfo) As Long
  17. Private Declare Function SHGetPathFromIDList Lib 'shell32' (ByVal pidList As Long, ByVal lpBuffer As String) As Long
  18.  
  19. Public Function GetFolderPath(Optional ParentWindow As Long = 0) As String
  20.     Dim iNull As Integer, lpIDList As Long, lResult As Long
  21.     Dim sPath As String, udtBI As BrowseInfo
  22.  
  23.     With udtBI
  24.         .hWndOwner = ParentWindow
  25.         .lpszTitle = lstrcat('Select Folder', '')
  26.        .ulFlags = BIF_RETURNONLYFSDIRS
  27.     End With
  28.  
  29.     lpIDList = SHBrowseForFolder(udtBI)
  30.     If lpIDList Then
  31.         sPath = String$(MAX_PATH, 0)
  32.         SHGetPathFromIDList lpIDList, sPath
  33.         CoTaskMemFree lpIDList
  34.         iNull = InStr(sPath, vbNullChar)
  35.         If iNull Then
  36.             sPath = Left$(sPath, iNull - 1)
  37.         End If
  38.     End If
  39.     GetFolderPath = sPath
  40. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут