Windows API函数
|
功能
|
CloseHandle | 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的 |
CompareFileTime | 根据FILETIME结构的信息,对比两个文件的时间 |
CopyFile | 复制文件。与vb的filecopy命令相似 |
CreateFile | 这是一个全功能的函数,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台 |
DeleteFile | 删除指定文件 |
FindClose | 关闭由FindFirstFile函数创建的一个搜索句柄 |
FindFirstFile | 根据文件名查找文件 |
FindNextFile | 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 |
FlushFileBuffers | 针对指定的文件句柄,刷新内部文件缓冲区 |
GetBinaryType | 判断文件是否可以执行 |
GetFileAttributes | 判断指定文件的属性 |
GetFileInformationByHandle | 这个函数提供了获取文件信息的一种机制——在一个BY_HANDLE_FILE_INFORMATION结构中装载与文件有关的信息 |
GetFileSize | 判断文件长度 |
GetFileTime | 取得指定文件的时间信息 |
GetFileType | 在给出文件句柄的前提下,判断文件类型 |
GetFileVersionInfo | 从支持版本标记的一个模块里获取文件版本信息 |
GetFileVersionInfoSize | 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区 |
GetShortPathName | 获取指定文件的短路径名 |
GetTempFileName | 这个函数包含了一个临时文件的名字,它可由应用程序使用 |
lclose | 关闭指定的文件,请参考CloseHandle函数,了解进一步的情况 |
lcreat | 创建一个文件。如文件已经存在,就会将其缩短成零长度,并将其打开,以便读写 |
llseek | 设置文件中进行读写的当前位置。该函数与vb的seek语句类似。如果用vb的open命令打开了一个文件,那么不要再对这个文件使用llseek函数 |
LockFile | 在windows中,文件可用共享模式打开——在这种情况下,多个进程可同时访问该文件。利用这个函数,要对文件进行读写的一个应用程序可将文件的某一部分锁定起来,使其不能由其他应用程序访问。这样便避免了同时读写时发生的冲突 |
LockFileEx | 与LockFile相似,只是它提供了更多的功能 |
lopen | 以二进制模式打开指定的文件 |
lread | 将文件中的数据读入内存缓冲区 |
lwrite | 将数据从内存缓冲区写入一个文件 |
MoveFile, MoveFileEx | 移动文件。如dwFlags设为零,则MoveFile完全等价于MoveFileEx |
OpenFile | 这个函数能执行大量不同的文件操作。和这个函数相比,请优先考虑win32的CreateFile函数(它能打开命名管道和控制Unicode文件名,同时不受128个字符的路径名称的限制) |
ReadFile | 从文件中读出数据。与lread函数相比,这个函数要明显灵活的多。该函数能够操作通信设备、管道、套接字以及邮槽 |
ReadFileEx | 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调 |
SearchPath | 查找指定文件 |
SetEndOfFile | 针对一个打开的文件,将当前文件位置设为文件末尾 |
SetFileAttributes | 设置文件属性 |
SetFilePointer | 在一个文件中设置当前的读写位置 |
SetFileTime | 设置文件的创建、访问及上次修改时间 |
UnlockFile | 解除对一个文件的锁定 |
UnlockFileEx | 解除对一个文件的锁定 |
WriteFile | 将数据写入一个文件。该函数比lwrite函数要灵活的多。也可将这个函数应用于对通信设备、管道、套接字以及邮槽的处理 |
WriteFileEx | 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调 |
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 |
参数 | 类型及说明 | |
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,如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性 |
long hfile= CreateFile(“c://test.txt”,GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING,FILE_ELAG_OVERLAPPED,NULL) |
Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As Long |
参数 | 类型及说明 |
lpPathName | String,欲创建的文件的名字 |
iAttribute | Long,下述值之一: 0——文件能够读写 1——创建只读文件 2——创建隐藏文件 3——创建系统文件 |
lcreat “c:/test.txt”,0 |
Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long |
参数 | 类型及说明 | |
lpPathName | String,欲打开文件的名字 | |
iReadWrite | Long,访问模式和共享模式常数的一个组合,如下所示: | |
1、访问模式 | ||
READ | 打开文件,读取其中的内容 | |
READ_WRITE | 打开文件,对其进行读写 | |
WRITE | 打开文件,在其中写入内容 | |
2、共享模式(参考OpenFile函数的标志常数表) | ||
OF_SHARE_COMPAT, OF_SHARE_DENY_NONE, OF_SHARE_DENY_READ, OF_SHARE_DENY_WRITE, OF_SHARE_EXCLUSIVE |
Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long |
参数 | 类型及说明 |
hFile | Long,文件的句柄 |
lpCreationTime | FILETIME,用于装载文件的创建时间 |
lpLastAccessTime | FILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性) |
lpLastWriteTime | FILETIME,用于装载文件上一次修改的时间 |
‘函数声明 Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FileTime, lpLastAccessTime As FileTime, lpLastWriteTime As FileTime) As Long Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long ‘定义变量 Dim file As Long Dim CreationTime As FileTime Dim lastaccesstime As FileTime Dim lastaccesstime As FileTime ‘定义结构 Private Type FileTime dwLowDateTime As Long dwHighDateTime As Long End Type Private Sub Form_Load() str1 = "c:/text.txt" file = lopen(str1, READ_WRITE) ‘打开文件 temp = GetFileTime(file, CreationTime, lastaccesstime, lastwritetime)’得到文件相关信息 MsgBox CreationTime ‘显示信息 End Sub |
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long |
参数 | 类型及说明 |
lpExistingFileName | String,源文件名 |
lpNewFileName | String,目标文件名 |
bFailIfExists | Long,如果设为TRUE(非零),那么一旦目标文件已经存在,则函数调用会失败。否则目标文件被改写 |
‘函数声明 Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long Private Sub Form_Load() CopyFile "c:/test1.txt", "c:/test2.txt", 1 End Sub |
Declare Function MoveFile& Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) |
参数
|
类型及说明
|
|
lpExistingFileName | String,欲移动的文件名 | |
lpNewFileName | String,新文件名 | |
dwFlags | Long,一个或多个下述常数 | |
MOVEFILE_REPLACE_EXISTING | 如目标文件存在,则将其替换 | |
MOVEFILE_COPY_ALLOWED | 如移动到一个不同的卷,则复制文件并删除原来的文件 | |
MOVEFILE_DELAY_UNTIL_REBOOT | 移动操作在系统下次重新启动时正式进行。这样便可在Windows NT中改换系统文件 |
‘定义结构 Private Const MOVEFILE_COPY_ALLOWED = &H2 Private Const MOVEFILE_DELAY_UNTIL_REBOOT = &H4 Private Const MOVEFILE_REPLACE_EXISTING = &H1 ‘函数声明 Private Declare Function MoveFile& Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) Private Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) Private Sub Form_Load() MoveFile "c:/test.txt", "d:/test1.txt" ‘移动文件 MoveFileEx "d:/test1.txt", "c:/test.txt", MOVEFILE_REPLACE_EXISTING ‘再一次移动 End Sub |
Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long |
参数 | 类型及说明 |
lpFileName | String,欲删除文件的名字 |
‘函数声明 Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long Private Sub Form_Load() DeleteFile "c:/test.txt" End Sub |