En la programación vb60, ¿cómo crear un archivo usando createfile() en la función API?
Ejemplo
'Este proyecto necesita un cuadro de diálogo común, llamado CDBox.
' (Para agregar el cuadro de diálogo común a su menú de herramientas, vaya a Proyecto -gt;Componentes (o presione CTRL-T)
' y seleccione el control Microsoft Common Dialog)
Tipo privado FILETIME
dwLowDateTime As Long
dwHighDateTime como largo
Tipo final
Tipo privado SYSTEMTIME
wAño como entero
wMes como entero
wDíaDeLa Semana Como Entero
wDía Como Entero
wHora Como Entero
wMinuto Como Entero
wSegundo Como Entero
wMilisegundos como entero
Tipo de fin
Const privada GENERIC_WRITE = amp;H40000000
Const privada OPEN_EXISTING = 3
Const privada FILE_SHARE_READ = amp;H1
Const privada FILE_SHARE_WRITE = amp;H2
Función de declaración privada CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName como cadena, ByVal dwDesiredAccess como larga, ByVal dwShareMode mientras, ByVal lpSecurityAttributes mientras, ByVal dwCreationDisposition mientras, ByVal dwFlagsAndAttributes mientras, ByVal hTemplateFile mientras)
Función de declaración privada SetFileTime Lib "kernel32" (ByVal hFile mientras, lpCreationTime como FILETIME, lpLastAccessTime como FILETIME, lpLastWriteTime como FILETIME) siempre y cuando
Función de declaración privada SystemTimeToFileTime Lib "kernel32" (lpSystem
Tiempo como SYSTEMTIME, lpFileTime como FILETIME) Mientras
Función de declaración privada CloseHandle Lib "kernel32" (ByVal hObject As Long) Mientras
Función de declaración privada LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime Como FILETIME, lpFileTime Como FILETIME) Mientras
Private Sub Form_Load()
Dim m_Date Como Fecha, lngHandle Mientras
Dim udtFileTime Como FILETIME
Dim udtLocalTime como FILETIME
Dim udtSystemTime como SYSTEMTIME
m_Date = Format(Now, "DD-MM-AA")
'Establece el título del diálogo
CDBox.DialogTitle = "Elija un archivo ..."
'Establezca el filtro del diálogo
CDBox.Filter = "Todos los archivos (*. *)|*.*"
'Mostrar el cuadro de diálogo 'Abrir archivo'
CDBox.ShowOpen
udtSystemTime.wAño = Año(m_Date) p>
udtSystemTime.wMonth = Mes(m_Date)
udtSystemTime.wDay = Día(m_Date)
udtSystemTime.wDayOfWeek = WeekDay(m_Date) - 1
udtSystemTime.wHour = Hora(m_Date)
udtSystemTime.wSecond = Segundo(m_Date)
udtSystemTime.wMillisegundos = 0
'convierte la hora del sistema a local time
SystemTimeToFileTime udtSystemTime, udtLocalTime
' convierte la hora local a GMT
LocalFileTimeToFileTime udtLocalTime, udtFileTime
' abre el archivo para obtener el filehandle
lngHandle = CreateFile(CDBox.Filename, GENERIC_WRITE, FILE_SHARE_RE
AD o FILE_SHARE_WRITE, ByVal 0amp;, OPEN_EXISTING, 0, 0)
'cambia la propiedad de fecha/hora del archivo
SetFileTime lngHandle, udtFileTime, udtFileTime, udtFileTime
' cerrar el identificador
CloseHandle lngHandle
MsgBox "La fecha del archivo '" CDBox.Filename "' se ha cambiado a" Str$(m_Date), vbInformation vbOKOnly, App.Title
End Sub
Adjunto:
Declaración VB
Función de declaración privada CreateFile Lib "kernel32" Alias "CreateFileA " ( ByVal lpFileName como cadena, ByVal dwDesiredAccess mientras, ByVal dwShareMode mientras, lpSecurityAttributes como SECURITY_ATTRIBUTES, ByVal dwCreationDisposition mientras, ByVal dwFlagsAndAttributes mientras, ByVal hTemplateFile mientras) mientras
Alias
CreateFileA
Descripción
Esta es una rutina con todas las funciones que puede abrir y crear archivos, canalizaciones, ranuras de correo, servicios de comunicación, dispositivos y consolas
Valor de retorno
Largo, si la ejecución es exitosa, se devuelve el identificador del archivo. INVALID_HANDLE_VALUE indica un error y se establecerá GetLastError.
Incluso si la función tiene éxito, si el archivo existe y se especifica CREATE_ALWAYS
u OPEN_ALWAYS, GetLastError se establecerá en ERROR_ALREADY_EXISTS
Notas
Al abrir un puerto de comunicación (Como COM1), debe establecerse en OPEN_EXISTING pase lo que pase
OPEN_EXISTING
Esta función reemplaza las funciones lOpen y lCreate y debería ser nuestra primera opción
Lista de parámetros
p>lpFileName ----- Cadena, el nombre del archivo que se abrirá
dwDesiredAccess - Largo, si GENERIC_READ
significa que se permite acceso de lectura al dispositivo; si GENERIC_WRITE
Indica que se permite acceso de escritura al dispositivo (se puede usar en combinación si es cero, indica que solo se permite información relacionada con un dispositivo); a obtener
dwShareMode ---- Largo, cero Indica que no se permite compartir FILE_SHARE_READ y/o
FILE_SHARE_WRITE indica que se permite el acceso compartido al archivo
;lpSecurityAttributes - SECURITY_ATTRIBUTES, un puntero a una estructura SECURITY_ATTRIBUTES, define las características de seguridad del archivo (si las admite el sistema operativo)
dwCreationDisposition - Largo, una de las siguientes constantes:
CREATE_NEW
Crea el archivo si el archivo existe, Error
CREATE_ALWAYS
Crear un archivo sobrescribirá el archivo anterior
OPEN_EXISTING
El archivo ya debe existir. Solicitado por el dispositivo
OPEN_ALWAYS
Crear archivo si no existe
TRUNCATE_EXISTING
Acortar el archivo existente a longitud cero
dwFlagsAndAttributes - Largo, una o más de las siguientes constantes
FILE_ATTRIBUTE_ARCHIVE
Marcar atributos de archivo
FILE_ATTRIBUTE_COMPRESSED
Marcar el archivo como comprimido o como método de compresión predeterminado para el archivo en el directorio
FILE_ATTRIBUTE_NORMAL
Atributo predeterminado
FILE_ATTRIBUTE_HIDDEN
Archivos ocultos o directorios
FILE_ATTRIBUTE_READONLY
El archivo es de solo lectura
FILE_ATTRIBUTE_SYSTEM
El archivo es un archivo de sistema
FILE_FLAG_WRITE_THROUGH
El sistema operativo no debe diferir las operaciones de escritura en el archivo
FILE_FLAG_OVERLAPPED
Se permiten operaciones superpuestas en el archivo
FILE_FLAG_NO_BUFFERING
Deshabilitar el almacenamiento en búfer de archivos.
Los archivos solo se pueden escribir en bloques sectoriales de volúmenes de disco
FILE_FLAG_RANDOM_ACCESS
Optimizar el almacenamiento en búfer de archivos para acceso aleatorio
FILE_FLAG_SEQUENTIAL_SCAN
Para optimizar archivos almacenamiento en búfer para acceso continuo
FILE_FLAG_DELETE_ON_CLOSE
Elimina el archivo después de cerrar el último identificador abierto. Especialmente adecuado para archivos temporales
Las siguientes etiquetas constantes también se pueden utilizar en combinación en Windows NT:
SECURITY_ANONYMOUS, SECURITY_IDENTIFICATION,
SECURITY_IMPERSONATION, SECURITY_DELEGATION, SECURITY_CONTEXT_TRACKING,
p>
SECURITY_EFFECTIVE_ONLY
hTemplateFile: largo, si es distinto de cero, especifica un identificador de archivo. El nuevo archivo copiará los atributos extendidos de este archivo