Título: CommonDialog
Publicado por: NYlOn en 26 Diciembre 2005, 19:31 pm
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.-
Título: Re: CommonDialog
Publicado por: wuepe en 30 Diciembre 2005, 09:37 am
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
|