Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Fabricio en 7 Abril 2009, 20:02 pm



Título: Como saber si una carpeta esta vacia
Publicado por: Fabricio en 7 Abril 2009, 20:02 pm
Hola a todos hay algun codigo de VB 6 que me permita saber si una carpeta esta vacia  :huh: yo comosco la ruta de la carpeta a exsaminar y deseo saber si tiene archivos u otras carpetas de contenido

saludos
muchas gracias  :-\


Título: Re: Como saber si una carpeta esta vacia
Publicado por: YST en 7 Abril 2009, 20:13 pm
Podrias ver con FindFirstFile (http://allapi.mentalis.org/apilist/FindFirstFile.shtml) si hay archivos o carpetas en la ruta , dame unos minutos y te hago un source.

EDIT:

Lo prometido es deuda , la función es 100% funcional , el parametro que hay que pasarle es lla ruta de la carpeta sin \ ni nada adelante por ejemplo para revisar C:\ ponemos C: .

Código
  1. Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
  2. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  3. Private Type FILETIME
  4.    dwLowDateTime As Long
  5.    dwHighDateTime As Long
  6. End Type
  7. Private Type WIN32_FIND_DATA
  8.    dwFileAttributes As Long
  9.    ftCreationTime As FILETIME
  10.    ftLastAccessTime As FILETIME
  11.    ftLastWriteTime As FILETIME
  12.    nFileSizeHigh As Long
  13.    nFileSizeLow As Long
  14.    dwReserved0 As Long
  15.    dwReserved1 As Long
  16.    cFileName As String * 260
  17.    cAlternate As String * 14
  18. End Type
  19. Dim Find As WIN32_FIND_DATA
  20. Dim HandleBusqueda As Long
  21.  
  22. Public Function CapetaVacia(Ruta As String) As Boolean
  23. HandleBusqueda = FindFirstFile(Ruta & "\*", Find)
  24. FindNextFile HandleBusqueda, Find
  25. If Left(Find.cFileName, 2) = ".." Then
  26. FindNextFile HandleBusqueda, Find
  27. Else
  28. End If
  29. If Left(Find.cFileName, 2) = ".." Then
  30. CapetaVacia = True
  31. Else
  32. CapetaVacia = False
  33. End If
  34. End Function


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Fabricio en 7 Abril 2009, 20:56 pm
Hola YST  muchas gracias por responder tan rapido  :D
probe tu codigo... yo necesito saber si la carpeta ubicada en C:\Informacion\CarpetaDatos posee archivos o carpetas dentro
como le paso la ruta segun tu cadigo  :huh:

gracias
saludos


Título: Re: Como saber si una carpeta esta vacia
Publicado por: xkiz ™ en 7 Abril 2009, 21:03 pm

Código
  1. Private Sub Form_Load()
  2. Dim Vacio As String
  3. Vacio = Dir("C:\Informacion\CarpetaDatos\*.*")
  4.  
  5. If Vacio = "" Then
  6. MsgBox "no existe ningun archivo en esa carpeta"
  7. End If
  8. End Sub
  9.  


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Fabricio en 7 Abril 2009, 21:06 pm
Muchas gracias a xkiz  y a YST
 :-\


Título: Re: Como saber si una carpeta esta vacia
Publicado por: YST en 7 Abril 2009, 21:09 pm
Le pasas C:\Informacion\CarpetaDatos , :xD no se me ocurrio hacerlo con dir :P


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Fabricio en 7 Abril 2009, 21:10 pm
Prueben este codigo a ver que les parece
Código:

Private Sub Command1_Click()

Dim fs As Object
Dim carpeta As Object
Dim archivo As Object
Dim cantidad As Integer

Set fs = CreateObject("Scripting.FileSystemObject")
Set carpeta = fs.GetFolder("C:\Info\Log")
Set archivo = carpeta.Files
cantidad = archivo.Count
If cantidad > 0 Then
    MsgBox cantidad
End If

End Sub


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Novlucker en 7 Abril 2009, 21:11 pm
También sirve, solo que hace uso del objeto FSO  :rolleyes:

Saludos


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Fabricio en 7 Abril 2009, 21:13 pm
el uso del objeto fso consume mas recursos ?????
saludos


Título: Re: Como saber si una carpeta esta vacia
Publicado por: LeandroA en 7 Abril 2009, 21:14 pm
Private Declare Function PathIsDirectoryEmpty Lib "shlwapi.dll" Alias "PathIsDirectoryEmptyA" (ByVal pszPath As String) As Long

Private Sub Form_Load()
MsgBox PathIsDirectoryEmpty("C:\Documents and Settings\Administrador\Escritorio\Nueva carpeta")
End Sub

yo opto por esta ya que te va a poner si hay un archivo oculto o una carpeta vasia.

Saludos


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Fabricio en 7 Abril 2009, 21:18 pm
ya que hay muchos viendo alguien sabe como puedo leer y escribir datos en un pendrive 


Título: Re: Como saber si una carpeta esta vacia
Publicado por: YST en 7 Abril 2009, 21:26 pm
Igual como escribirias y leerias cualquier archivo

Código
  1.  
  2.  
  3. '---------------------------------------------------------------------------------------
  4. ' Procedimiento : ReadFile
  5. ' Autor         : Karcrack
  6. ' Fecha         : 07/04/2009
  7. ' Parametro(s)  : sPath -> La ruta del fichero
  8. ' Return        : Devuelve un Byte array con los bytes del fichero
  9. '---------------------------------------------------------------------------------------
  10.  
  11. Private Function ReadFile(ByVal sPath As String) As Byte()
  12.    Dim bvTmp()         As Byte
  13.  
  14.    Open sPath For Binary As #1
  15.        ReDim bvTmp(0 To LOF(1) - 1)
  16.        Get #1, , bvTmp
  17.    Close #1
  18.  
  19.    ReadFile = bvTmp
  20. End Function
  21.  
  22.  
  23. '---------------------------------------------------------------------------------------
  24. ' Procedimiento : SaveFile
  25. ' Autor         : Karcrack
  26. ' Fecha         : 07/04/2009
  27. ' Parametro(s)  : bvData() -> Array de datos
  28. '                 sPath    -> Ruta de guardado
  29. '---------------------------------------------------------------------------------------
  30.  
  31. Private Sub SaveFile(ByRef bvData() As Byte, ByVal sPath As String)
  32.    Open sPath For Binary As #1
  33.        Put #1, , bvData
  34.    Close #1
  35. End Sub
  36.  

y para detectarlos

http://foro.elhacker.net/programacion_vb/source_detectar_unidades_extraibles_usb-t214774.0.html;msg1030424


Título: Re: Como saber si una carpeta esta vacia
Publicado por: xkiz ™ en 7 Abril 2009, 21:31 pm
aca pongo otra forma de detectar cuando se inserta un dispositivo onda pendrive

USB device detection (Cobien) (http://www.advancevb.com.ar/page/index.php?option=com_content&view=category&id=39:code&Itemid=56&layout=default)


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Fabricio en 7 Abril 2009, 21:36 pm
yo cree una funcion similar leo los archivos que cree luego los cierro pero dejo funcionado mi programa el problema surge cuando quiero extraer el pen haciendo click en extraer harware con seguridad o con una funcion similar a la de cobien
me dice que no se puede extraer por que otra aplicacion (en este caso mi programa ) esta usando el pen

espero haber sido claro
gracias un saludo


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Fabricio en 8 Abril 2009, 17:26 pm
Como hago para cerrar los handle de los archivos que abri para leer dentro del pen drive ????
saludos


Título: Re: Como saber si una carpeta esta vacia
Publicado por: YST en 8 Abril 2009, 18:04 pm
Como hago para cerrar los handle de los archivos que abri para leer dentro del pen drive ????
saludos
Con close #numero , por cierto usa las funciones que te pase de karcrack , si no te fubnciona con eso no se por donde va la cosa de el mensaje de que esta ocupado el pendrive.


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Fabricio en 8 Abril 2009, 18:29 pm
Hola YST yo  ya usaba Close #numero para cerrar los archivo
el mensaje que me da es "No se puede detener el dispositivo en este momento. Intente mas tarde" si cierro mi programa lo puedo detener y quitar pero si no lo cierro  no puedo el teme es que el dispositivo debe quitarse con el programa funcionando

alguna idea ???
gracias


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Dessa en 8 Abril 2009, 18:47 pm
Hola, si o si necesitas el ESN del fabricante del USB en tu aplicacion ???


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Fabricio en 8 Abril 2009, 18:57 pm
Si el ESN se nececisita si o si por que solo se van a poder usar en el programa los pen que yo habilite  estos ESN van a estar almacenados en una BD y la unica forma 100% segura de identificar a un pen es con el ESN el numero de volumen no me sirve por que si almaceno este numero y formatean el pen en otra pc o sin que el programa este corriendo el numero varia

gracias por colaborar
saludos


Título: Re: Como saber si una carpeta esta vacia
Publicado por: Dessa en 8 Abril 2009, 19:16 pm
No entiendo cual es la diferencia de tener almacenado en la base de datos el número serial que windows te dá al formatar en lugar del ESN,

A) que el load de tu aplicación revise el serial de formateo y si no coincide no se ejecuta

B) si en alguna instancia de tu aplicación tenes que formatear el USB, en este caso borras todo el contenido del USB en lugar de formatearlo (para mantener el seria de windows)