Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/06/2008, 15:10
Avatar de Txoco
Txoco
 
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 16 años, 11 meses
Puntos: 7
Respuesta: Apertura de archivos dudas...

La API ReadDirectoryChangesW te puede ayudar en ese caso, ya que te devuelve el nombre de lo que se haya creado, con su ruta completa, en el momento en que el sistema detecte la creación, por lo que te ahorras todas las comprobaciones.

Otra opción que no te había comentado antes es utilizar el objeto FileSystemObject así:

Código:
    Set UltimaCarpeta = Nothing
    Set UltimoFichero = Nothing

' Busca la carpeta más recientemente creada
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder("c:\entrada")
    Set sf = f.SubFolders
    For Each f1 In sf
        If UltimaCarpeta Is Nothing Then
            Set UltimaCarpeta = f1
        Else
            If f1.DateCreated > UltimaCarpeta.DateCreated Then
                Set UltimaCarpeta = f1
            End If
        End If
        DoEvents
    Next

' Busca el fichero más recientemente creado
    Set f = fs.GetFolder(UltimaCarpeta.Path)
    Set fc = f.Files
    For Each f1 In fc
        If UltimoFichero Is Nothing Then
            Set Ultimo Fichero = f1
        Else
            If f1.DateCreated > UltimoFichero.DateCreated Then
                Set UltimoFichero = f1
            End If
            DoEvents
        End If
    Next
Puedes declarar todas las variables necesarias como Object. Al terminar este código, puedes utilizar las siguientes propiedades de UltimoFichero:

.Attributes (máscara de atributos del fichero)
.DateCreated (fecha de creación)
.DateLastAccessed (fecha de último acceso)
.DateLastModified (fecha de última modificación)
.Drive (letra de la unidad)
.Name (nombre del fichero)
.ParentFolder (objeto Folder en que se encuentra el fichero)
.Path (ruta del fichero, incluye el nombre)
.ShortName (nombre en formato corto)
.ShortPath (ruta completa en formato corto, incluye el nombre del fichero)
.Size (tamaño en bytes)
.Type (descripción asignada a la extensión, si la tiene)

No he probado el código tal cual te lo he escrito aquí, pero no debería darte problemas. Ten en cuenta también que sólo vale para el último fichero; si por cualquier razón necesitases acceder a los dos o tres últimos, o a todos los creados en la carpeta más nueva, tendrías que hacer varias modificaciones.

Ya nos cuentas!