當前位置:編程學習大全網 - 編程語言 - vb60編程中,如何用API函數中的createfile()創建壹個文件?

vb60編程中,如何用API函數中的createfile()創建壹個文件?

實例

'This project needs a Common Dialog box, named CDBox.

' (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)

' and select Microsoft Common Dialog control)

Private Type FILETIME

dwLowDateTime As Long

dwHighDateTime As Long

End Type

Private Type SYSTEMTIME

wYear As Integer

wMonth As Integer

wDayOfWeek As Integer

wDay As Integer

wHour As Integer

wMinute As Integer

wSecond As Integer

wMilliseconds As Integer

End Type

Private Const GENERIC_WRITE = &H40000000

Private Const OPEN_EXISTING = 3

Private Const FILE_SHARE_READ = &H1

Private Const FILE_SHARE_WRITE = &H2

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long

Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long

Private Sub Form_Load()

Dim m_Date As Date, lngHandle As Long

Dim udtFileTime As FILETIME

Dim udtLocalTime As FILETIME

Dim udtSystemTime As SYSTEMTIME

m_Date = Format(Now, "DD-MM-YY")

'Set the dialog's title

CDBox.DialogTitle = "Choose a file ..."

'Set the dialog's filter

CDBox.Filter = "All Files (*.*)|*.*"

'Show the 'Open File'-dialog

CDBox.ShowOpen

udtSystemTime.wYear = Year(m_Date)

udtSystemTime.wMonth = Month(m_Date)

udtSystemTime.wDay = Day(m_Date)

udtSystemTime.wDayOfWeek = WeekDay(m_Date) - 1

udtSystemTime.wHour = Hour(m_Date)

udtSystemTime.wSecond = Second(m_Date)

udtSystemTime.wMilliseconds = 0

' convert system time to local time

SystemTimeToFileTime udtSystemTime, udtLocalTime

' convert local time to GMT

LocalFileTimeToFileTime udtLocalTime, udtFileTime

' open the file to get the filehandle

lngHandle = CreateFile(CDBox.Filename, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)

' change date/time property of the file

SetFileTime lngHandle, udtFileTime, udtFileTime, udtFileTime

' close the handle

CloseHandle lngHandle

MsgBox "The date of the file '" + CDBox.Filename + "' has been changed to" + Str$(m_Date), vbInformation + vbOKOnly, App.Title

End Sub

附:

VB聲明

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

別名

CreateFileA

說明

這是壹個全功能的例程,可打開和創建文件、管道、郵槽、通信服務、設備以及控制臺

返回值

Long,如執行成功,則返回文件句柄。INVALID_HANDLE_VALUE表示出錯,會設置GetLastError。即使函數成功,但若文件存在,且指定了CREATE_ALWAYS

或 OPEN_ALWAYS,GetLastError也會設為ERROR_ALREADY_EXISTS

備註

打開壹個通信端口時(如COM1),無論如何都要設置成

OPEN_EXISTING

這個函數代替了lOpen 和 lCreate函數,應該是我們的首選

參數表

lpFileName ----- String,要打開的文件的名字

dwDesiredAccess - Long,如果為 GENERIC_READ

表示允許對設備進行讀訪問;如果為 GENERIC_WRITE

表示允許對設備進行寫訪問(可組合使用);如果為零,表示只允許獲取與壹個設備有關的信息

dwShareMode ---- Long,零表示不***享; FILE_SHARE_READ 和/或

FILE_SHARE_WRITE 表示允許對文件進行***享訪問

lpSecurityAttributes - SECURITY_ATTRIBUTES,指向壹個SECURITY_ATTRIBUTES結構的指針,定義了文件的安全特性(如果操作系統支持的話)

dwCreationDisposition - Long,下述常數之壹:

CREATE_NEW

創建文件;如文件存在則會出錯

CREATE_ALWAYS

創建文件,會改寫前壹個文件

OPEN_EXISTING

文件必須已經存在。由設備提出要求

OPEN_ALWAYS

如文件不存在則創建它

TRUNCATE_EXISTING

講現有文件縮短為零長度

dwFlagsAndAttributes - Long,壹個或多個下述常數

FILE_ATTRIBUTE_ARCHIVE

標記歸檔屬性

FILE_ATTRIBUTE_COMPRESSED

將文件標記為已壓縮,或者標記為文件在目錄中的默認壓縮方式

FILE_ATTRIBUTE_NORMAL

默認屬性

FILE_ATTRIBUTE_HIDDEN

隱藏文件或目錄

FILE_ATTRIBUTE_READONLY

文件為只讀

FILE_ATTRIBUTE_SYSTEM

文件為系統文件

FILE_FLAG_WRITE_THROUGH

操作系統不得推遲對文件的寫操作

FILE_FLAG_OVERLAPPED

允許對文件進行重疊操作

FILE_FLAG_NO_BUFFERING

禁止對文件進行緩沖處理。文件只能寫入磁盤卷的扇區塊

FILE_FLAG_RANDOM_ACCESS

針對隨機訪問對文件緩沖進行優化

FILE_FLAG_SEQUENTIAL_SCAN

針對連續訪問對文件緩沖進行優化

FILE_FLAG_DELETE_ON_CLOSE

關閉了上壹次打開的句柄後,將文件刪除。特別適合臨時文件

也可在Windows NT下組合使用下述常數標記:

SECURITY_ANONYMOUS, SECURITY_IDENTIFICATION,

SECURITY_IMPERSONATION, SECURITY_DELEGATION, SECURITY_CONTEXT_TRACKING,

SECURITY_EFFECTIVE_ONLY

hTemplateFile -- Long,如果不為零,則指定壹個文件句柄。新文件將從這個文件中復制擴展屬性

  • 上一篇:Linux 是什麽?
  • 下一篇:靈感到底是什麽?我想寫小說,時不時就會想到某個情節,感覺加到小說裏肯定不錯,請問這是靈感嗎?
  • copyright 2024編程學習大全網