Hola a todos, mi pregunta es la siguiente.
Hay alguna forma de que, mediante APIs, pueda utilizar el dialogo que aparece en la foto??
(http://img401.imageshack.us/img401/8520/tkv6ys.jpg) (http://imageshack.us)
Lo necesito para seleccionar un directorio desde mi aplicacion.
Ya se que se puede crear un Form con listas de discos y carpetas, pero me gustaria hacerlo con APIs.
Gracias de antemano.
Un saludo y felices fiestas.-
Crea un Form1 y pon un boton llamado Command1
Este es el codido:
Option Explicit
Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Const BIF_RETURNONLYFSDIRS = &H1
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Function CambioDestino(ByVal hWnd As Long, ByVal Titulo As String) As String
Dim Destino As String
Dim Dialog As BROWSEINFO
Dim Result As Long, Path As String, Longitud As Long
Destino = ""
Dialog.hOwner = hWnd
Dialog.lpszTitle = Titulo
Dialog.ulFlags = BIF_RETURNONLYFSDIRS
Result = SHBrowseForFolder(Dialog)
Path = Space(512)
Result = SHGetPathFromIDList(ByVal Result, ByVal Path)
'Resolvemos la ruta...
Longitud = InStr(Path, Chr$(0))
Destino = Left$(Path, Longitud - 1)
'Aseguramos la barra '\' tanto por unidad C:\ que por
'subdirectorios C:\Ruta\
If Right$(Destino, 1) <> "\" And Len(Destino) > 2 Then ' len(Destino)>2 es C:\
Destino = Destino + "\"
End If
If Destino = "" Then Destino = "Cancelar..." 'Si cancela o pulsa la aspa 'X'
CambioDestino = Destino
End Function
Private Sub Command1_Click()
Dim Destino As String
Destino = CambioDestino(Me.hWnd, "Seleccione el directorio...")
If Destino <> "Cancelar..." Then MsgBox Destino
End Sub
Saludos