| SHBrowseForFolder, BrowseInfo, SHGetPathFromIDList |
| |
| |
| Private Const BIF_RETURNONLYFSDIRS = 1 | |
| Private Const BIF_DONTGOBELOWDOMAIN = 2 |
| Private Const MAX_PATH = 260 |
|
| Private Declare Function SHBrowseForFolder Lib "shell32" _ |
| (lpbi As BrowseInfo) As Long |
| Private Declare Function SHGetPathFromIDList Lib "shell32" _ |
| (ByVal pidList As Long, ByVal lpBuffer As String) As Long |
| Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" _ |
| (ByVal lpString1 As String, ByVal lpString2 As String) As Long |
|
| Private Type BrowseInfo |
| hWndOwner As Long |
| pIDLRoot As Long |
| pszDisplayName As Long |
| lpszTitle As Long |
| ulFlags As Long |
| lpfnCallback As Long | |
| lParam As Long | |
| iImage As Long | |
| End Type | |
| |
| Private Sub Main() | Öffnet ein Treeview-Control |
| Dim lpIDList As Long | |
| Dim sBuffer As String | |
| Dim szTitle As String | |
| Dim tBrowseInfo As BrowseInfo | |
| |
| szTitle = "Laufwerk / Verzeichnis wählen..." | |
| With tBrowseInfo | |
| .ulFlags = BIF_DONTGOBELOWDOMAIN + BIF_RETURNONLYFSDIRS | Deaktivieren erwirkt Anzeige des Netzwerkes |
| .lpszTitle = lstrcat(szTitle, "") | |
| End With | |
| |
| lpIDList = SHBrowseForFolder(tBrowseInfo) | |
| If (lpIDList) Then | |
| sBuffer = Space(MAX_PATH) | |
| SHGetPathFromIDList lpIDList, sBuffer | |
| sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1) | |
| MsgBox sBuffer | Ausgabe des Pfades in MessageBox |
| End If | |
| End Sub | |
| |