Okno wyboru folderu
Istnieje czasem potrzeba dialogu z użytkownikiem w postaci pytania o folder.
Poniższy kod zawiera deklarację odpowiedniej funkcji API (32-bit) oraz funkcji użytkownika zwracającej w postaci ciągu znaków wskazaną przez nas ścieżkę (przykład pochodzi z samples.xls):
'32-bit API declarationsDeclare Function SHGetPathFromIDList Lib "shell32.dll" _Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As LongDeclare Function SHBrowseForFolder Lib "shell32.dll" _Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As LongPublic Type BROWSEINFOhOwner As LongpidlRoot As LongpszDisplayName As StringlpszTitle As StringulFlags As Longlpfn As LonglParam As LongiImage As LongEnd TypeFunction PobierzFolder(Optional Msg) As String
Dim bInfo As BROWSEINFODim ścieżka As StringDim r As Long, x As Long, pos As Integer' Folder główny - Pulpit bInfo.pidlRoot = 0&' Tytuł okna dialogowego If IsMissing(Msg) Then bInfo.lpszTitle = "Wybierz folder" Else bInfo.lpszTitle = Msg End If' Typ zwracanego foldera bInfo.ulFlags = &H1' Wyświatlanie okna dialogowego x = SHBrowseForFolder(bInfo)' Analiza zwróconej wartości ścieżka = Space$(512) r = SHGetPathFromIDList(ByVal x, ByVal ścieżka) If r Then pos = InStr(ścieżka, Chr$(0)) PobierzFolder = Left(ścieżka, pos - 1) Else PobierzFolder = "" End If
End Function
Tak wygląda wyświetlane okno:
kkkate