Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => 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 (VB) [Seleccionar]
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * 260
    cAlternate As String * 14
End Type
Dim Find As WIN32_FIND_DATA
Dim HandleBusqueda As Long

Public Function CapetaVacia(Ruta As String) As Boolean
HandleBusqueda = FindFirstFile(Ruta & "\*", Find)
FindNextFile HandleBusqueda, Find
If Left(Find.cFileName, 2) = ".." Then
FindNextFile HandleBusqueda, Find
Else
End If
If Left(Find.cFileName, 2) = ".." Then
CapetaVacia = True
Else
CapetaVacia = False
End If
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 (vb) [Seleccionar]

Private Sub Form_Load()
Dim Vacio As String
Vacio = Dir("C:\Informacion\CarpetaDatos\*.*")

If Vacio = "" Then
MsgBox "no existe ningun archivo en esa carpeta"
End If
End Sub
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


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 (VB) [Seleccionar]



'---------------------------------------------------------------------------------------
' Procedimiento : ReadFile
' Autor         : Karcrack
' Fecha         : 07/04/2009
' Parametro(s)  : sPath -> La ruta del fichero
' Return        : Devuelve un Byte array con los bytes del fichero
'---------------------------------------------------------------------------------------

Private Function ReadFile(ByVal sPath As String) As Byte()
    Dim bvTmp()         As Byte

    Open sPath For Binary As #1
        ReDim bvTmp(0 To LOF(1) - 1)
        Get #1, , bvTmp
    Close #1

    ReadFile = bvTmp
End Function


'---------------------------------------------------------------------------------------
' Procedimiento : SaveFile
' Autor         : Karcrack
' Fecha         : 07/04/2009
' Parametro(s)  : bvData() -> Array de datos
'                 sPath    -> Ruta de guardado
'---------------------------------------------------------------------------------------

Private Sub SaveFile(ByRef bvData() As Byte, ByVal sPath As String)
    Open sPath For Binary As #1
        Put #1, , bvData
    Close #1
End Sub


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
Cita de: fabricioAngel 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
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)