Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: MandingoPC en 8 Diciembre 2011, 01:20 am



Título: Abrir seleccionar carpteas como si fuera vbmodal
Publicado por: MandingoPC en 8 Diciembre 2011, 01:20 am
Hola soy nuevo, un gusto a todos.


LO q hago es usar la funcion Shell.BrowseForFolder con un resto de código y parámetros para que me abra el cuadrito para seleccionar una carpeta. El problema es q si se hace click en el formulario, se pierde ese cartel.

Entonces, quisiera saber como hago para q no se pueda hacer otra accion en el progrma hasta q no se cancele o seleccione un directorio. Como si fuera un vbmodal en formularios.


Ah y ya q estoy para no abrir otro topic. MI programa crea un acceso directo a un .exe. Como se hace para que ese acceso directo tenga un icono que yo quiero? (osea cambiarle el icono al acceso directo)
Gracias


Título: Re: Abrir seleccionar carpteas como si fuera vbmodal
Publicado por: MandingoPC en 9 Diciembre 2011, 19:55 pm
Podria algien porfavor ayudarme con esto? hace 3 dias que lo puse y nadie me contestó  :-X

En si es para q ese cartelito no se salga de la vista, como si fuera un vbmodal de formulariio


Título: Re: Abrir seleccionar carpteas como si fuera vbmodal
Publicado por: raul338 en 9 Diciembre 2011, 22:24 pm
Hay clases alternativas para hacer un BrowseForFolder hasta personalizados

http://knol.google.com/k/manoj-ap/how-to-invoke-a-folder-browser-in/3bx1ymwndxj4/6#
http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=69481&lngWId=1


Título: Re: Abrir seleccionar carpteas como si fuera vbmodal
Publicado por: seba123neo en 10 Diciembre 2011, 00:13 am
proba esto:

Código
  1. Option Explicit
  2.  
  3. Private Const BIF_RETURNONLYFSDIRS = 1
  4. Private Const BIF_DONTGOBELOWDOMAIN = 2
  5. Private Const MAX_PATH = 260
  6.  
  7. Private Declare Function SHBrowseForFolder Lib "shell32" (lpBI As BrowseInfo) As Long
  8. Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
  9. Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
  10.  
  11. Private Type BrowseInfo
  12.    hwndOwner As Long
  13.    pIDLRoot As Long
  14.    pszDisplayName As Long
  15.    lpszTitle As Long
  16.    ulFlags As Long
  17.    lpfnCallback As Long
  18.    lParam As Long
  19.    iImage As Long
  20. End Type
  21.  
  22. Private Function BrowseFolder()
  23.  
  24.    Dim lpIDList As Long
  25.    Dim sbuffer As String
  26.    Dim szTitle As String
  27.    Dim tBrowseInfo As BrowseInfo
  28.    szTitle = "Choose PrLr Scheduler Sound Folder"
  29.  
  30.  
  31.    With tBrowseInfo
  32.        .hwndOwner = Me.hWnd
  33.        .lpszTitle = lstrcat(szTitle, "")
  34.        .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
  35.  
  36.    End With
  37.    lpIDList = SHBrowseForFolder(tBrowseInfo)
  38.  
  39.  
  40.    If (lpIDList) Then
  41.        sbuffer = Space(MAX_PATH)
  42.        SHGetPathFromIDList lpIDList, sbuffer
  43.        sbuffer = Left(sbuffer, InStr(sbuffer, vbNullChar) - 1)
  44.  
  45.        BrowseFolder = sbuffer
  46.  
  47.    End If
  48.  
  49. End Function
  50.  
  51. Private Sub Command1_Click()
  52.    Call BrowseFolder
  53. End Sub
  54.  

Fuente: Make SHBrowseForFolder Modal?  (http://www.vbforums.com/showthread.php?t=480306)

el truco esta en poner BrowseInfo.hwndOwner = Me.hwnd

saludos.


Título: Re: Abrir seleccionar carpteas como si fuera vbmodal
Publicado por: MandingoPC en 14 Diciembre 2011, 19:10 pm
te agradezco mucho. Eso era tal cual lo que keria neo