Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Abrir la caja de dialogo de Abrir con selección multiple de archivos(API)

  • 0 Respuestas
  • 2663 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5609
  • Actividad:
    100%
  • País: ar
  • Reputación 37
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Julio 26, 2010, 12:17:09 pm »
Esto es a pura API adios comandialogo. para que control si tenemos la API. ¿Verdad?

En un modulo:

Código: Visual Basic
  1. ' Modulo para Abrir la caja de dialogo de Abrir
  2. ' archivos donde podra aser selección multiple
  3. 'Ejemplo de Yosvanis Cruz Alias VisualGuallabo
  4. 'Alguna sugerencia responder
  5. ' a [email protected] estare agradesido
  6. 'Con este codigo puede aser los cambios que quiera
  7. Option Explicit
  8. Private Type OPENFILENAME
  9. lStructSize As Long
  10. hwndOwner As Long
  11. hInstance As Long
  12. lpstrFilter As String
  13. lpstrCustomFilter As String
  14. nMaxCustFilter As Long
  15. nFilterIndex As Long
  16. lpstrFile As String
  17. nMaxFile As Long
  18. lpstrFileTitle As String
  19. nMaxFileTitle As Long
  20. lpstrInitialDir As String
  21. lpstrTitle As String
  22. Flags As Long
  23. nFileOffset As Integer
  24. nFileExtension As Integer
  25. lpstrDefExt As String
  26. lCustData As Long
  27. lpfnHook As Long
  28. lpTemplateName As String
  29. End Type
  30.  
  31. Public Const OFN_READONLY = &H1
  32. Public Const OFN_OVERWRITEPROMPT = &H2
  33. Public Const OFN_HIDEREADONLY = &H4
  34. Public Const OFN_NOCHANGEDIR = &H8
  35. Public Const OFN_SHOWHELP = &H10
  36. Public Const OFN_ENABLEHOOK = &H20
  37. Public Const OFN_ENABLETEMPLATE = &H40
  38. Public Const OFN_ENABLETEMPLATEHANDLE = &H80
  39. Public Const OFN_NOVALIDATE = &H100
  40. Public Const OFN_ALLOWMULTISELECT = &H200
  41. Public Const OFN_EXTENSIONDIFFERENT = &H400
  42. Public Const OFN_PATHMUSTEXIST = &H800
  43. Public Const OFN_FILEMUSTEXIST = &H1000
  44. Public Const OFN_CREATEPROMPT = &H2000
  45. Public Const OFN_SHAREAWARE = &H4000
  46. Public Const OFN_NOREADONLYRETURN = &H8000
  47. Public Const OFN_NOTESTFILECREATE = &H10000
  48. Public Const OFN_NONETWORKBUTTON = &H20000
  49. Public Const OFN_NOLONGNAMES = &H40000 ' force no long names for 4.x modules
  50. Public Const OFN_EXPLORER = &H80000 ' new look commdlg
  51. Public Const OFN_NODEREFERENCELINKS = &H100000
  52. Public Const OFN_LONGNAMES = &H200000 ' force long names for 3.x modules
  53.  
  54. Public Const OFN_SHAREFALLTHROUGH = 2
  55. Public Const OFN_SHARENOWARN = 1
  56. Public Const OFN_SHAREWARN = 0
  57. Public Total_de_Archivos As Integer
  58. Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
  59. Public Lista_Archivos(1 To 20000) As String
  60. Function CountFilesInList(ByVal FileList As String) As Integer
  61. ' Cuenta archivos. Los regresos resultan como el entero
  62. Dim iCount As Integer
  63. Dim iPos As Integer
  64.  
  65. iCount = 0
  66. For iPos = 1 To Len(FileList)
  67. If Mid$(FileList, iPos, 1) = Chr$(0) Then iCount = iCount + 1
  68. Next
  69. If iCount = 0 Then iCount = 1
  70. CountFilesInList = iCount
  71. End Function
  72.  
  73. Function GetFileFromList(ByVal FileList As String, FileNumber As Integer) As String
  74. ' Obtiene el nombre de archivo de FileNumber de FileList
  75. Dim iPos As Integer
  76. Dim iCount As Integer
  77. Dim iFileNumberStart As Integer
  78. Dim iFileNumberLen As Integer
  79. Dim sPath As String
  80.  
  81. If InStr(FileList, Chr(0)) = 0 Then
  82. GetFileFromList = FileList
  83. Else
  84. iCount = 0
  85. sPath = Left(FileList, InStr(FileList, Chr(0)) - 1)
  86. If Right(sPath, 1) <> "\" Then sPath = sPath + "\"
  87. FileList = FileList + Chr(0)
  88. For iPos = 1 To Len(FileList)
  89. If Mid$(FileList, iPos, 1) = Chr(0) Then
  90. iCount = iCount + 1
  91. Select Case iCount
  92. Case FileNumber
  93. iFileNumberStart = iPos + 1
  94. Case FileNumber + 1
  95. iFileNumberLen = iPos - iFileNumberStart
  96. Exit For
  97. End Select
  98. End If
  99. Next
  100. GetFileFromList = sPath + Mid(FileList, iFileNumberStart, iFileNumberLen)
  101. End If
  102. End Function
  103. Function OpenDialog(Filter As String, Title As String, InitDir As String) As String
  104.  
  105. Dim ofn As OPENFILENAME
  106. Dim A As Long
  107. ofn.lStructSize = Len(ofn)
  108. ofn.hInstance = App.hInstance
  109. If Right$(Filter, 1) <> "|" Then Filter = Filter + "|"
  110. For A = 1 To Len(Filter)
  111. If Mid$(Filter, A, 1) = "|" Then Mid$(Filter, A, 1) = Chr$(0)
  112. Next
  113. ofn.lpstrFilter = Filter
  114. ofn.lpstrFile = Space$(254)
  115. ofn.nMaxFile = 20000
  116. ofn.lpstrFileTitle = Space$(254)
  117. ofn.nMaxFileTitle = 255
  118. ofn.lpstrInitialDir = InitDir
  119. ofn.lpstrTitle = Title
  120. ofn.Flags = OFN_HIDEREADONLY Or OFN_FILEMUSTEXIST Or OFN_EXPLORER Or OFN_ALLOWMULTISELECT
  121.  
  122. A = GetOpenFileName(ofn)
  123.  
  124. ' Variable del contador
  125. Dim i As Integer
  126.  
  127. ' Pasa a través de todos los archivos seleccionados
  128. For i = 1 To CountFilesInList(ofn.lpstrFile)
  129. ' Compruebe el tamaño del archivo
  130. On Error GoTo cont
  131. Select Case FileLen(GetFileFromList(ofn.lpstrFile, i))
  132. Case Is > 0
  133. ' Ahora agréga el archivo a la lista
  134. Lista_Archivos(i) = GetFileFromList(ofn.lpstrFile, i)
  135. Total_de_Archivos = Total_de_Archivos + 1
  136. Case Else
  137. ' Si el tamaño del archivo es 0 (el cero) - pregunta si desea agregar a la lista
  138. If MsgBox("El Archivo " & GetFileFromList(ofn.lpstrFile, i) & " tiene 0bytes de tamaño" _
  139. & vbCr & "¿Está seguro usted que quiere agregarlo?", vbYesNo, "Alerta") = vbYes Then
  140. Lista_Archivos(i) = GetFileFromList(ofn.lpstrFile, i)
  141. Total_de_Archivos = Total_de_Archivos + 1
  142. End If
  143. End Select
  144. Next i
  145. cont:
  146. If (A) Then
  147. If Total_de_Archivos = 0 Then Total_de_Archivos = Total_de_Archivos + 1
  148. Lista_Archivos(i) = ofn.lpstrFile
  149. End If
  150.  
  151. End Function
  152.  

******************en el Form ************************


Debera agregar un Listbox de nombre List1

Código: Visual Basic
  1. Private Sub Form_Load()
  2. OpenDialog "*.*", "Abrir Archivo", ""
  3. For A = 1 To Total_de_Archivos
  4. If Lista_Archivos(A) <> "" Then List1.AddItem Lista_Archivos(A)
  5. Next A
  6. me.Caption = Total_de_Archivos
  7. End Sub
« Última modificación: Mayo 12, 2014, 03:11:32 pm por Expermicid »


 

¿Te gustó el post? COMPARTILO!



Buscar archivos en forma avanzada usando funciones API

Iniciado por ANTRAX

Respuestas: 1
Vistas: 2322
Último mensaje Julio 28, 2010, 12:40:43 am
por Ignaro mayor de BsAs
Borrar archivos temporales, cookies, etc

Iniciado por ANTRAX

Respuestas: 2
Vistas: 5167
Último mensaje Noviembre 27, 2011, 01:59:39 am
por Bic
Ejecutar Cualquier tipo de Archivos

Iniciado por ANTRAX

Respuestas: 1
Vistas: 2460
Último mensaje Julio 26, 2010, 12:50:40 pm
por _katze_
Cómo descargar archivos de Internet

Iniciado por ANTRAX

Respuestas: 1
Vistas: 2583
Último mensaje Julio 27, 2010, 12:24:46 pm
por _katze_
Modulo Tratamiento de archivos

Iniciado por alexander1712

Respuestas: 0
Vistas: 3635
Último mensaje Enero 26, 2013, 12:56:47 pm
por alexander1712