Red de conocimiento informático - Problemas con los teléfonos móviles - En la programación vb60, ¿cómo crear un archivo usando createfile() en la función API?

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)

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