vb60编程中,如何用API函数中的createfile()创建一个文件?
发布网友
发布时间:2023-04-02 11:20
我来回答
共1个回答
热心网友
时间:2024-09-29 23:54
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
vb60编程中,如何用API函数中的createfile()创建一个文件?能否给出具体的代码?我要创建的是一个text文件,因为这个函数的参数太多了,看不懂?
解析:
实例
'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 = &H***********
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,如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性
CreateFileVB声明
在Windows编程中,CreateFileVB函数是一个非常重要的功能,它使用kernel32库中的CreateFileA方法,用于打开或创建多种对象,包括控制台、通信资源、目录、磁盘驱动器、文件、邮槽和管道。这个函数的原型如下:FUNCTION CreateFile(_In_ LPCTSTR lpFileName,_In_ DWORD dwDesiredAccess,_In_ DWORD dwShareMode...
vb中createfile返回-1
CreateFileA 【说明】这是一个全功能的例程,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台 【返回值】Long,如执行成功,则返回文件句柄。INVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了CREATE_ALWAYS 或 OPEN_ALWAYS,GetLastError也会设为ERROR_ALREADY...
运维工程师笔试题
1. 任何线程都可以调用此函数来终止自己或另一个进程的运行 2. 只要调用过了此函数,则指定要退出的进程已经退出。 3. 只有当无法使用另一种方法来迫使进程退出时,才考虑使用此函数。 4. 用此函数退出进程,进程没有机会将自己的数据存入硬盘,也无法释放占用的内存。 Question 49. (单选) 大量API中都需要一个S...
句柄是什么(在计算机编程中的意义)
在Windows操作系统中,句柄被用于访问各种系统资源,例如窗口、文件、进程、线程、事件、信号等。在WindowsAPI中,许多函数都需要句柄作为参数来指定要操作的对象或资源。例如,CreateWindowEx函数用于创建一个新的窗口,并返回一个窗口句柄;CreateFile函数用于打开一个文件,并返回一个文件句柄。在Linux操作系统...
WriteFileVB声明
在Windows编程中,经常会用到WriteFile函数,这个函数是通过kernel32库提供的,主要用来向文件中写入数据。VB编程中,我们需要通过声明来调用这个功能。WriteFile函数的声明如下:vbDeclare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOf...
WDM驱动消息如何传递到上层应用,上层应用如何得到驱动消息。 请用白...
(这里说明一下,在规范的WDM程序中,创建设备对象的任务本来该由AddDevice函数来做,而这个函数也是通过驱动程序对象的一个函数指针来定位的。在这种规范的WDM程序中,一旦有新硬件加入,系统就会自动通过驱动程序对象的函数指针找到AddDevice函数,并调用它来创建设备对象。但是在这里,我并不是在为实际存在的硬件写驱动,而...
如何编写木马程序?
Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, lpFileMappigAttributes As SECURITY_ATTRIBUTES, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long '创建一个新的文件...
wosa编程中怎样获取事件
CreateFile()为读访问、写访问或读写访问逗打开地串口。按照Windows的通常做法,CreateFile()返回一个句柄,随后在打开的端口的操作中使用CreateFile()函数非常复杂,复杂性的原因之一是它是通用的。可以使用CreateFile打开已存在的文件,创建新文件和打开根本就不是文件的设备,例如串口、并口和调制解调器。CreateFile()...
c++mfc编程中,按行读取txt文件字符串并在列表框中显示。
读文件:Win32API:首先CreateFile打开文件,然后ReadFile读取文件,CloseHandle关闭文件句柄C:1、fopen2、fread3、fcloseMFC显示文字:CDC*pDC=GetDC();.pDC->TextOut();//或者pDC->DrawText();ReleaseDC(pDC);
CreateFileVC声明
CreateFile函数在Windows系统中扮演重要角色,它用于创建或打开多种对象并返回一个句柄,包括文件、管道、邮件槽、通信资源等。这个函数的声明如下:HANDLE CreateFile( LPCTSTR lpFileName, // 文件名或设备名的指向指针 DWORD dwDesiredAccess, // 访问模式,如GENERIC_READ(读取)或GENERIC_WRITE(...