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 :-\
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: .
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
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
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
Muchas gracias a xkiz y a YST
:-\
Le pasas C:\Informacion\CarpetaDatos , :xD no se me ocurrio hacerlo con dir :P
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
También sirve, solo que hace uso del objeto FSO :rolleyes:
Saludos
el uso del objeto fso consume mas recursos ?????
saludos
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
ya que hay muchos viendo alguien sabe como puedo leer y escribir datos en un pendrive
Igual como escribirias y leerias cualquier archivo
'---------------------------------------------------------------------------------------
' 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
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)
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
Como hago para cerrar los handle de los archivos que abri para leer dentro del pen drive ????
saludos
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.
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
Hola, si o si necesitas el ESN del fabricante del USB en tu aplicacion ???
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
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)