首页
社区
课程
招聘
[旧帖] [分享]windows API 函数 (申请邀请码) 0.00雪花
发表于: 2010-1-1 23:45 2119

[旧帖] [分享]windows API 函数 (申请邀请码) 0.00雪花

2010-1-1 23:45
2119
全部来自于网络,本人负责整理,方便大家查询。

windows消息函数

BroadcastSystemMessage

VB声明
Declare Function BroadcastSystemMessage Lib "user32" Alias "BroadcastSystemMessage" (ByVal dw As Long, pdw As Long, ByVal un As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
说明
将一条系统消息广播给系统中所有的顶级窗口
返回值
Long,大于零表示成功;-1表示出错。如设置了BSF_QUERY,而且至少有一个消息接收者返回零,那么这个函数返回零
参数表
参数 类型及说明
dw Long,下述常数的一个或多个
BSF_FLUSHDISK 每次处理完一条消息后,都对磁盘进行刷新(将未存盘的数据存下来
BSF_FORCEIFHUNG 如目标处于挂起状态,则在设定的超时后到期返回
BSF_IGNORECURRENTTASK 发送任务不接收消息
BSF_LPARAMBUFFER lParam指向一个内存缓冲区
BSF_NOHANG 跳过被挂起的所有进程
BSF_POSTMESSAGE 投递消息。不与BSF_LPARAMBUFFER和BSF_QUERY兼容
BSF_QUERY 将消息顺序发给进程,只有前一个返回TRUE时,才进入下一个进程
pdw Long,下述常数的一个或多个
BSF_ALLCOMPONENTS 消息进入能够接收消息的每一个系统组件
BSF_APPLICATIONS 消息到达应用程序
BSF_INSTALLABLEDRIVERS 消息到达可安装的驱动程序
BSF_NETDRIVERS 消息到达网络驱动程序
BSF_VXDS 消息到达系统设备驱动程序
un Long,消息编号
wParam Long,由消息决定
lParam Long,由消息决定。如指定了BSF_LPARAMBUFFER,这就是位于调用进程地址空间的一个内存缓冲区的地址,而且缓冲区的第一个16位字包含了缓冲区的长度

Top
GetMessagePos

VB声明
Declare Function GetMessagePos Lib "user32" Alias "GetMessagePos" () As Long
说明
取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置
返回值
Long,X坐标对应于结果值的低字,Y坐标对应于高字

GetMessageTime

VB声明
Declare Function GetMessageTime Lib "user32" Alias "GetMessageTime" () As Long
说明
取得消息队列中上一条消息处理完毕时的时间
返回值
Long,返回一个时间,表示为自系统启动以来经历的毫秒数
原文:The time is specified in milliseconds from the time the system was started.

PostMessage, PostMessageBynum, PostMessageBystring

VB声明
Declare Function PostMessage& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Declare Function PostMessageByNum& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
Declare Function PostMessageByString& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)
说明
将一条消息投递到指定窗口的消息队列。投递的消息会在Windows事件处理过程中得到处理。在那个时候,会随同投递的消息调用指定窗口的窗口函数。特别适合那些不需要立即处理的窗口消息的发送
返回值
Long,如消息投递成功,则返回TRUE(非零)。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,接收消息的那个窗口的句柄。如设为HWND_BROADCAST,表示投递给系统中的所有顶级窗口。如设为零,表示投递一条线程消息(参考PostThreadMessage)
wMsg Long,消息标识符
wParam Long,具体由消息决定
lParam Any,具体由消息决定

PostThreadMessage

VB声明
Declare Function PostThreadMessage Lib "user32" Alias "PostThreadMessageA" (ByVal idThread As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
说明
将一条消息投递给应用程序。这条消息由应用程序的内部GetMessage循环获得,但不会传给一个特定的窗口
返回值
Long,如消息投递成功,则返回TRUE(非零)。会设置GetLastError
参数表
参数 类型及说明
idThread Long,用于接收消息的那个线程的标识符
msg Long,消息标识符
wParam Long,具体由消息决定
ByVal Long,具体由消息决定

RegisterWindowMessage

VB声明
Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long
说明
获取分配给一个字串标识符的消息编号
返回值
Long,&C000 到 &FFFF之间的一个消息编号。零意味着出错
参数表
参数 类型及说明
lpString String,注册消息的名字
注解
如果没有一个子类处理程序的帮助,这个函数就没有什么用

ReplyMessage

VB声明
Declare Function ReplyMessage Lib "user32" Alias "ReplyMessage" (ByVal lReply As Long) As Long
说明
如将消息传送给位于不同进程的一个窗口,通常第一个进程会暂时挂起,直到另一个进程中的窗口函数完成操作为止。在目标进程的窗口函数完成之前,另一个进程可用这个函数向第一个进程返回一个结果,使之能继续进行
返回值
Long,如准备答复的消息是由另一个进程发来的,则返回TRUE。如果它是从同一个进程中发出来的,则返回FALSE(此时,该函数没有任何效果)
参数表
参数 类型及说明
lReply Long,指定发回调用进程的一个结果

SendMessage, SendMessageBynum, SendMessageByString

VB声明
Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Declare Function SendMessageBynum& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
Declare Function SendMessageByString& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)
说明
调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, SendMessageByString是该函数的“类型安全”声明形式
返回值
Long,由具体的消息决定
参数表
参数 类型及说明
hwnd Long,要接收消息的那个窗口的句柄
wMsg Long,消息的标识符
wParam Long,具体取决于消息
lParam Any,具体取决于消息

SendMessageCallback

VB声明
Declare Function SendMessageCallback Lib "user32" Alias "SendMessageCallbackA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal lpResultCallBack As Long, ByVal dwData As Long) As Long
说明
将一条消息发给窗口。该函数最大的特定是可以立即返回。目标窗口函数执行完毕后,会用回调函数的形式将结果返回
返回值
Long,TRUE表示成功,FALSE表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,要接收消息的那个窗口的句柄
msg Long,消息的标识符
wParam Long,取决于消息
lParam Long,取决于消息
lpResultCallBack Long,指定函数地址。在vb5中可用AddressOf操作符获得
dwData Long,用户自定义值
注解
回调函数声明如下:
Public Function WndProc(ByVal hwnd&, ByVal msg&, ByVal wp&, ByVal lp&) As Long
其中,wp参数是作为dwData参数传递的值。lp参数包含了来自窗口函数的结果

SendMessageTimeout

VB声明
Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
说明
向窗口发送一条消息。如窗口位于不同的线程中,则利用这个函数可以指定一个超时值,以便在另一个进程挂起的时候防止调用进程也永远挂起
返回值
Long,成功时返回TRUE,失败时返回FALSE。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,要接收消息的一个窗口的句柄
msg Long,消息的标识符
wParam Long,由消息决定
lParam Long,由消息决定
fuFlags Long,下述常数的一个或多个
SMTO_ABORTIFHUNG 如目标进程挂起,则函数立即返回
SMTO_BLOCK 除非函数返回,否则调用线程不能处理消息
SMTO_NORMAL 允许调用线程处理消息,同时保持函数继续执行
uTimeout Long,超时值,采用毫秒为单位
lpdwResult Long,用于装载函数结果的一个变量

SendNotifyMessage

VB声明
Declare Function SendNotifyMessage Lib "user32" Alias "SendNotifyMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
说明
向窗口发送一条消息。如目标窗口位于同调用方相同的线程内,则这个函数会表现为SendMessage函数。而且除非消息得到处理,否则函数不会返回。如目标窗口从属于一个不同的线程,则函数会立即返回
返回值
Long,TRUE表示成功,FALSE表示出错。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,用于接收消息的一个窗口的句柄
msg Long,消息的标识符
wParam Long,具体由消息决定
lParam Long,具体由消息决定

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 18
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
文件处理函数

CloseHandle

VB声明
Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As Long
说明
关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hObject Long,欲关闭的一个对象的句柄
注解
除非对内核对象的所有引用都已关闭,否则该对象不会实际删除

CompareFileTime

VB声明
Declare Function CompareFileTime Lib "kernel32" Alias "CompareFileTime" (lpFileTime1 As FILETIME, lpFileTime2 As FILETIME) As Long
说明
根据FILETIME结构的信息,对比两个文件的时间
返回值
Long,如两个时间相等,就返回零;如lpFileTime1小于lpFileTime2,返回-1;如lpFileTime2小于lpFileTime1,返回1
参数表
参数 类型及说明
lpFileTime1 FILETIME,参考FILETIME
lpFileTime2

CopyFile

VB声明
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
说明
复制文件。与vb的filecopy命令相似
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpExistingFileName String,源文件名
lpNewFileName String,目标文件名
bFailIfExists Long,如果设为TRUE(非零),那么一旦目标文件已经存在,则函数调用会失败。否则目标文件被改写

CreateDirectory, CreateDirectoryEx

VB声明
Declare Function CreateDirectory& Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)
Declare Function CreateDirectoryEx& Lib "kernel32" Alias "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)
说明
创建一个新目录
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpTemplateDirectory String,指定一个模板目录的名字,从中复制默认属性(比如目录中文件的默认压缩方式)。如设为vbNullString,则表示不使用模板
lpNewDirectory String,新目录的名字
lpSecurityAttributes SECURITY_ATTRIBUTES,这个结构定义了目录的安全特性——如果操作系统支持的话

CreateFile

VB声明
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
说明
这是一个全功能的例程,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台
返回值
Long,如执行成功,则返回文件句柄。INVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了CREATE_ALWAYS 或 OPEN_ALWAYS,GetLastError也会设为ERROR_ALREADY_EXISTS
参数表
参数 类型及说明
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,如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性
注解
打开一个通信端口时(如COM1),无论如何都要设置成 OPEN_EXISTING
这个函数代替了lOpen 和 lCreate函数,应该是我们的首选

Top

CreateFileMapping

VB声明
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
说明
创建一个新的文件映射对象
返回值
Long,新建文件映射对象的句柄;零意味着出错。会设置GetLastError。即使函数成功,但倘若返回的句柄属于一个现成的文件映射对象,那么GetLastError也会设置成ERROR_ALREADY_EXISTS。在这种情况下,文件映射的长度就是现有对象的长度,而不是这个函数指定的尺寸
参数表
参数 类型及说明
hFile Long,指定欲在其中创建映射的一个文件句柄。&HFFFFFFFF&表示在内存中创建一个文件映射
lpFileMappigAttributes SECURITY_ATTRIBUTES,指定一个安全对象,在创建文件映射时使用。如果为NULL(用ByVal As Long传递零),表示使用默认安全对象
flProtect Long,下述常数之一:
PAGE_READONLY 以只读方式打开映射
PAGE_READWRITE 以可读、可写方式打开映射
PAGE_WRITECOPY 为写操作留下备份
可组合使用下述一个或多个常数
SEC_COMMIT 为文件映射一个小节中的所有页分配内存
SEC_IMAGE 文件是个可执行文件
SEC_RESERVE 为没有分配实际内存的一个小节保留虚拟内存空间
dwMaximumSizeHigh Long,文件映射的最大长度(高32位)
dwMaximumSizeLow Long,文件映射的最小长度(低32位)。如这个参数和dwMaximumSizeHigh都是零,就用磁盘文件的实际长度
lpName String,指定文件映射对象的名字。如存在这个名字的一个映射,函数就会打开它。用vbNullString创建一个无名的文件映射

DeleteFile

VB声明
Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
说明
删除指定文件
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpFileName String,欲删除文件的名字
注解
与vb的kill语句相似,在windows 95下使用这个函数要小心——即使文件当前正由一个应用程序打开,该函数也会将其删除

DeviceIoControl

VB声明
Declare Function DeviceIoControl Lib "kernel32" Alias "DeviceIoControl" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As OVERLAPPED) As Long
说明
对设备执行指定的操作
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hDevice Long,设备句柄
dwIoControlCode Long,带有 FSCTL_ 前缀的常数。参考设备控制选项的部分列表
lpInBuffer Any,具体取决于dwIoControlCode参数。参考设备控制选项的部分列表
nInBufferSize Long,输入缓冲区的长度
lpOutBuffer Any,具体取决于dwIoControlCode参数。参考设备控制选项的部分列表
nOutBufferSize Long,输出缓冲区的长度
lpBytesReturned Long,实际装载到输出缓冲区的字节数量
lpOverlapped OVERLAPPED,这个结构用于重叠操作。针对同步操作,请用ByVal As Long传递零值
注解
可用于windows 95 和 windows nt,但并非所有的操作都得到了两种操作系统的同时支持

DosDateTimeToFileTime

VB声明
Declare Function DosDateTimeToFileTime Lib "kernel32" Alias "DosDateTimeToFileTime" (ByVal wFatDate As Long, ByVal wFatTime As Long, lpFileTime As FILETIME) As Long
说明
将DOS日期和时间值转换成一个 win32 FILETIME 值
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
wFatDate Long,16位DOS日期值
wFatTime Long,16位DOS时间值
lpFileTime FILETIME,用于装载win32时间的一个结构

FileTimeToDosDateTime

VB声明
Declare Function FileTimeToDosDateTime Lib "kernel32" Alias "FileTimeToDosDateTime" (lpFileTime As FILETIME, ByVal lpFatDate As Long, ByVal lpFatTime As Long) As Long
说明
将一个 win32  FILETIME 值转换成DOS日期和时间值
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpFileTime FILETIME,包含了欲转换时间的一个结构
lpFatDate Long,16位DOS日期值
lpFatTime Long,16位DOS时间值

FileTimeToLocalFileTime

VB声明
Declare Function FileTimeToLocalFileTime Lib "kernel32" Alias "FileTimeToLocalFileTime" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
说明
将一个FILETIME结构转换成本地时间
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpFileTime FILETIME,包含了UTC时间信息的一个结构
lpLocalFileTime FILETIME,用于装载转换过后的本地时间的结构

FileTimeToSystemTime

VB声明
Declare Function FileTimeToSystemTime Lib "kernel32" Alias "FileTimeToSystemTime" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
说明
根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpFileTime FILETIME,包含了文件时间的一个结构
lpSystemTime SYSTEMTIME,用于装载系统时间信息的一个结构

FindClose

VB声明
Declare Function FindClose Lib "kernel32" Alias "FindClose" (ByVal hFindFile As Long) As Long
说明
关闭由FindFirstFile函数创建的一个搜索句柄
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hFindFile Long,由FindFirstFile函数提供的搜索句柄

FindFirstFile

VB声明
Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
说明
根据文件名查找文件
返回值
Long,如执行成功,返回一个搜索句柄。如果出错,返回一个INVALID_HANDLE_VALUE常数,一旦不再需要,应该用FindClose函数关闭这个句柄
参数表
参数 类型及说明
lpFileName String,欲搜索的文件名。可包含通配符,并可包含一个路径或相对路径名
lpFindFileData WIN32_FIND_DATA,这个结构用于装载与找到的文件有关的信息。该结构可用于后续的搜索
注解
由这个函数返回的句柄可以作为一个参数用于FindNextFile函数。这样一来,就可以方便的枚举出与lpFileName参数指定的文件名相符的所有文件

FindNextFile

VB声明
Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
说明
根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
返回值
Long,非零表示成功,零表示失败。如不再有与指定条件相符的文件,会将GetLastError设置成ERROR_NO_MORE_FILES
参数表
参数 类型及说明
hFindFile Long,由FindFirstFile函数返回的搜索句柄
lpFindFileData WIN32_FIND_DATA,这个结构用于装载与找到的文件有关的信息

FlushFileBuffers

VB声明
Declare Function FlushFileBuffers Lib "kernel32" Alias "FlushFileBuffers" (ByVal hFile As Long) As Long
说明
针对指定的文件句柄,刷新内部文件缓冲区
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hFile Long,文件句柄

FlushViewOfFile

VB声明
Declare Function FlushViewOfFile Lib "kernel32" Alias "FlushViewOfFile" (lpBaseAddress As Any, ByVal dwNumberOfBytesToFlush As Long) As Long
说明
将写入文件映射缓冲区的所有数据都刷新到磁盘
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpBaseAddress Any,包含了刷新基本地址的一个Long值(参考注解)
dwNumberOfBytesToFlush Long,欲刷新的字节数
注解
如与远程系统建立了文件映射,那么虽然这个函数可保证数据已在当前系统写入,但不能保证数据实际写入远程系统的磁盘——除非用FILE_FLAG_WRITE_THROUGH 选项打开文件。该选项的作用是禁止写延迟,所有更新的数据都必须立即写入磁盘
这个函数的另一种声明形式:Declare Function FlushViewOfFile& Lib "kernel32" (ByVal lpBaseAddress As Long, ByVal dwNumberOfBytesToFlush As Long)

GetBinaryType

VB声明
Declare Function GetBinaryType Lib "kernel32" Alias "GetBinaryTypeA" (ByVal lpApplicationName As String, lpBinaryType As Long) As Long
说明
判断文件是否可以执行
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
lpApplicationName String,欲测试文件的完整路径名
lpBinaryType Long,用于装载文件类型的一个变量。这些类型由下述任何一个常数定义:
SCS_32BIT_BINARY win32执行程序
SCS_DOS_BINARY DOS执行程序
SCS_OS216_BINARY 16位OS/2执行程序
SCS_PIF_BINARY 用于执行DOS程序的一个pif文件
SCS_POSIX_BINARY 一个Posix应用
SCS_WOW_BINARY 16位windows执行程序

GetCompressedFileSize

VB声明
Declare Function GetCompressedFileSize Lib "kernel32" Alias "GetCompressedFileSizeA" (ByVal lpFileName As String, lpFileSizeHigh As Long) As Long
说明
判断一个压缩文件在磁盘上实际占据的字节数
返回值
Long,返回文件长度。&HFFFFFFFF表示出错。注意如lpFileSizeHigh不为NULL,且结果为&HFFFFFFFF,那么必须调用GetLastError,判断是否实际发生了一个错误,因为这是一个有效的结果
参数表
参数 类型及说明
lpFileName String,欲测试的文件名
lpFileSizeHigh Long,指定一个Long值,用于装载一个64位文件尺寸的高32位。如长度没有超过2^32字节,则可设为NULL(变成ByVal)
注解
如磁盘卷已被压缩,可检查这个函数的结果是否与GetFileSize函数的结果有异,从而判断文件是否也被压缩(如有异,表明文件已被压缩)

GetCurrentDirectory

VB声明
Declare Function GetCurrentDirectory Lib "kernel32" Alias "GetCurrentDirectory" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
说明
在一个缓冲区中装载当前目录
返回值
Long,装载到lpBuffer的字节数。如nBufferLength的长度不够,不足以容纳目录,则返回值是必要的缓冲区长度(要求至少这个长度),其中包括空中止字符。零表示失败。会设置GetLastError
参数表
参数 类型及说明
nBufferLength Long,lpBuffer缓冲区的长度
lpBuffer String,指定一个预定义字串,用于装载当前目录

GetDiskFreeSpace

VB声明
Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
说明
获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpRootPathName String,不包括卷名的一个磁盘根路径
lpSectorsPerCluster Long,用于装载一个簇内扇区数的变量
lpBytesPerSector Long,用于装载一个扇区内字节数的变量
lpNumberOfFreeClusters Long,用于装载磁盘上剩余簇数的变量
lpTtoalNumberOfClusters Long,用于装载磁盘上总簇数的变量
注解
在采用FAT16格式的windows95系统中,如一个驱动器(分区)的容量超过了2GB,则不应使用这个函数。此时,这个函数能识别的最大分区容量只有2GB

GetDiskFreeSpaceEx

VB声明
Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, lpTotalNumberOfBytes As LARGE_INTEGER, lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long
说明
获取与一个磁盘的组织以及剩余空间容量有关的信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpRootPathName String,不包括卷名的磁盘根路径名
lpFreeBytesAvailableToCaller LARGE_INTEGER,指定一个变量,用于容纳调用者可用的字节数量
lpTotalNumberOfBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上的总字节数
lpTotalNumberOfFreeBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上可用的字节数
适用平台
Windows 95 OSR2,Windows NT 4.0
注解
LARGE_INTEGER结构与FILETIME结构在内部完全一致。正式调用前,用GetVersionEx判断函数是否得到了支持。在Windows 95 OSR2环境中,OSVERSIONINFO结构的dwBuildNumbe字段会大于1000

GetDriveType

VB声明
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
说明
判断一个磁盘驱动器的类型
返回值
Long,如驱动器不能识别,则返回零。如指定的目录不存在,则返回1。如执行成功,则用下述任何一个常数指定驱动器类型:DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM 或 DRIVE_RAMDISK
参数表
参数 类型及说明
nDrive String,包含了驱动器根目录路径的一个字串

GetExpandedName

VB声明
Declare Function GetExpandedName Lib "lz32.dll" Alias "GetExpandedNameA" (ByVal lpszSource As String, ByVal lpszBuffer As String) As Long
说明
取得一个压缩文件的全名。文件必须是用 COMPRESS.EXE 程序压缩的,而且在压缩时适用/r选项
返回值
Long,1表示成功,LZERROR_BADVALUE 表示失败
参数表
参数 类型及说明
lpszSource String,压缩文件的名字
lpszBuffer String,指定一个缓冲区,用于装载文件全名
注解
注意事先将lpszBuffer字串初始化成一个合适的长度,使其足以容纳文件名

GetFileAttributes

VB声明
Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
说明
判断指定文件的属性
返回值
Long,-1表示出错。如返回包含了标志的一个Long值,则指定文件的属性。其中的标志对应于带有FILE_ATTRIBUTE_???前缀的常数。具体参考BY_HANDLE_FILE_INFORMATION结构的File Attribute Types table表格
参数表
参数 类型及说明
lpFileName String,指定欲获取属性的一个文件的名字

GetFileInformationByHandle

VB声明
Declare Function GetFileInformationByHandle Lib "kernel32" Alias "GetFileInformationByHandle" (ByVal hFile As Long, lpFileInformation As BY_HANDLE_FILE_INFORMATION) As Long
说明
这个函数提供了获取文件信息的一种机制——在一个BY_HANDLE_FILE_INFORMATION结构中装载与文件有关的信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hFile Long,文件的句柄
lpFileInformation BY_HANDLE_FILE_INFORMATION,用于容纳文件信息的结构

GetFileSize

VB声明
Declare Function GetFileSize Lib "kernel32" Alias "GetFileSize" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
说明
判断文件长度
返回值
Long,返回文件长度。&HFFFFFFFF表示出错。注意如lpFileSizeHigh不为NULL,且结果为&HFFFFFFFF,那么必须调用GetLastError,判断是否实际发生了一个错误,因为这是一个有效的结果
参数表
参数 类型及说明
hFile Long,文件的句柄
lpFileSizeHigh Long,指定一个长整数,用于装载一个64位文件长度的头32位。如这个长度没有超过2^32字节,则该参数可以设为NULL(变成ByVal)

GetFileTime

VB声明
Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
说明
取得指定文件的时间信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hFile Long,文件的句柄
lpCreationTime FILETIME,用于装载文件的创建时间
lpLastAccessTime FILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性)
lpLastWriteTime FILETIME,用于装载文件上一次修改的时间
注解
如果不需要特定的信息,那么lpCreationTime,lpLastAccessTime,lpLastWriteTime都可以设置为零(用ByVal As Long)。这个函数返回的文件时间采用UTC格式

GetFileType

VB声明
Declare Function GetFileType Lib "kernel32" Alias "GetFileType" (ByVal hFile As Long) As Long
说明
在给出文件句柄的前提下,判断文件类型
返回值
Long,下述常数之一:
FILE_TYPE_UNKNOWN 文件类型未知
FILE_TYPE_DISK 属于磁盘文件
FILE_TYPE_CHAR 文件是一个控制台或打印机
FILE_TYPE_PIPE 文件是个管道
参数表
参数 类型及说明
hFile Long,要检查的文件的句柄

GetFileVersionInfo

VB声明
Declare Function GetFileVersionInfo& Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Byte)
说明
从支持版本标记的一个模块里获取文件版本信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lptstrFilename String,欲从中载入版本信息的一个文件的名字
dwHandle Long,win32中未用
dwLen Long,由lpData参数指定的字节数组或缓冲区的大小。用GetFileVersionInfoSize函数判断要求的缓冲区长度有多大
lpData Byte,指定一个字节缓冲区的第一个字节。该缓冲区用于装载文件的版本信息
注解
在win32下不用dwHandle参数

其他
请看vb的api文本查看器中的声明:Declare Function GetFileVersionInfo Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Any) As Long

GetFileVersionInfoSize

VB声明
Declare Function GetFileVersionInfoSize Lib "version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
说明
针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区
返回值
Long,容纳文件的版本资源所需的缓冲区长度。如文件不包含版本信息,则返回一个0值。会设置GetLastError
参数表
参数 类型及说明
lptstrFilename String,包含了版本资源的一个文件的名字
lpdwHandle Long,在这个变量中载入0值
注解
lpdwHandle参数在win32中已经放弃

GetFullPathName

VB声明
Declare Function GetFullPathName& Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, lpFilePart As Long)
说明
获取指定文件的完整路径名
返回值
Long,装载到lpBuffer中的字符数量(排除空中止字符)。如缓冲区的长度不足以容下完整的路径,则返回值就是要求的缓冲区大小。零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpFileName String,指定文件名(长文件名或8.3格式的DOS文件名)
nBufferLength Long,lpBuffer字串的长度
lpBuffer String,指定一个预先定义好的字串,用于装载目标文件的驱动器及路径名称。如存在长文件名,那么这个参数保存的就肯定是长文件名
lpFilePart Long,指定一个长整数变量,用于装载文件名起始的地方。参考注解
注解
lpFilePart参数在vb里很难使用。它的问题在于:尽管windows在这个Long值中装载lpBuffer字串中的地址,用它表示路径信息文件名部分的起始处。但非常不幸,由vb创建的、传递给api的ANSI字串缓冲区也会使用这个地址。等这个函数返回的时候,vb已将返回的(lpBuffer)字串复制回它的内部Unicode字串缓冲区,所以lpFilePart地址已没有任何意义。因此,我们面临两种选择。首先,可以简单的不使用lpFilePart信息(忽略windows装载在参数中的值)。其次,可以将lpBuffer参数变成一个字节数组(lpFilePart As Byte——将数组的第一个元素作为参数传递)

其他
在vb的api文本查看器中复制的声明为:Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long

GetLogicalDrives

VB声明
Declare Function GetLogicalDrives Lib "kernel32" Alias "GetLogicalDrives" () As Long
说明
判断系统中存在哪些逻辑驱动器字母
返回值
Long,这个结构中的二进制位标志着存在哪些驱动器。其中,位0设为1表示驱动器A:存在于系统中;位1设为1表示存在B:驱动器;以次类推

GetLogicalDriveStrings

VB声明
Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
说明
获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径
返回值
Long,装载到lpBuffer的字符数量(排除空中止字符)。如缓冲区的长度不够,不能容下路径,则返回值就变成要求的缓冲区大小。零表示失败。会设置GetLastError
参数表
参数 类型及说明
nBufferLength Long,lpBuffer字串的长度
lpBuffer String,用于装载逻辑驱动器名称的字串。每个名字都用一个NULL字符分隔,在最后一个名字后面用两个NULL表示中止(空中止)

GetOverlappedResult

VB声明
Declare Function GetOverlappedResult Lib "kernel32" Alias "GetOverlappedResult" (ByVal hFile As Long, lpOverlapped As OVERLAPPED, lpNumberOfBytesTransferred As Long, ByVal bWait As Long) As Long
说明
判断一个重叠操作当前的状态
返回值
Long,非零表示成功,零表示失败。会设置GetLastError。如bWait为FALSE,而且异步操作仍在执行,则函数回返回零,而GetLastError会设置成ERROR_IO_INCOMPLETE
参数表
参数 类型及说明
hFile Long,指定一个文件、管道或通信设备的句柄
lpOverlapped OVERLAPPED,为欲检查的I/O操作指定的一个结构
lpNumberOfBytesTransferred Long,用于容纳传输字节数量的一个变量
bWait Long,如果为TRUE,就一直等到异步操作结束才返回。FALSE表示立即返回

GetPrivateProfileInt

VB声明
Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
说明
为初始化文件中指定的条目获取一个整数值
返回值
Long,找到的条目的值;如指定的条目未找到,就返回默认值。如找到的数字不是一个合法的整数,函数会返回其中合法的一部分。如,对于“xyz=55zz”这个条目,函数返回55。这个函数也能理解采用标准C语言格式的十六进制数字:用0x作为一个十六进制数字的前缀——所以0x55ab等价于vb的&H55AB
参数表
参数 类型及说明
lpApplicationName String,指定在其中查找条目的小节。注意这个字串是不区分大小写的
lpKeyName String,欲获取的设置项或条目。这个支持不区分大小写
nDefault Long,指定条目未找到时返回的默认值
lpFileName String,初始化文件的名字。如果没有指定完整的路径名,windows就会在Windows目录中搜索文件
注解
在Windows NT中,有些初始化文件实际是在注册表中。可在注册表的下面这个项处找到这些文件的一个列表:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping

Top

GetPrivateProfileSection

VB声明
Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
说明
获取指定小节所有项名和值的一个列表
返回值
Long,装载到lpReturnedString缓冲区的字符数量。如缓冲区的容量不够大,不能容下所有信息,就返回nSize-2
参数表
参数 类型及说明
lpAppName String,欲获取的小节。注意这个字串不区分大小写
lpReturnedString String,项和值字串的列表。每个字串都由一个NULL字符分隔,最后一个字串后面用两个NULL字符中止
nSize Long,lpReturnedString缓冲区的大小。在windows系统中最大值为32767
lpFileName String,初始化文件的名字。如没有指定完整路径名,windows就在Windows目录中查找文件
注解
参考对GetPrivateProfileInt函数的注解

Top

GetPrivateProfileString

VB声明
Declare Function GetPrivateProfileString& Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String)
说明
为初始化文件中指定的条目取得字串
返回值
Long,复制到lpReturnedString缓冲区的字节数量,其中不包括那些NULL中止字符。如lpReturnedString缓冲区不够大,不能容下全部信息,就返回nSize-1(若lpApplicationName或lpKeyName为NULL,则返回nSize-2)
参数表
参数 类型及说明
lpApplicationName String,欲在其中查找条目的小节名称。这个字串不区分大小写。如设为vbNullString,就在lpReturnedString缓冲区内装载这个ini文件所有小节的列表
lpKeyName String,欲获取的项名或条目名。这个字串不区分大小写。如设为vbNullString,就在lpReturnedString缓冲区内装载指定小节所有项的列表
lpDefault String,指定的条目没有找到时返回的默认值。可设为空("")
lpReturnedString String,指定一个字串缓冲区,长度至少为nSize
nSize Long,指定装载到lpReturnedString缓冲区的最大字符数量
lpFileName String,初始化文件的名字。如没有指定一个完整路径名,windows就在Windows目录中查找文件
注解
如lpKeyName参数为vbNullString,那么lpReturnedString缓冲区会载入指定小节所有设置项的一个列表。每个项都用一个NULL字符分隔,最后一个项用两个NULL字符中止。也请参考GetPrivateProfileInt函数的注解

其他
在vb的api文本查看器中复制的声明为:Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Top

GetProfileInt

VB声明
Declare Function GetProfileInt Lib "kernel32" Alias "GetProfileIntA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal nDefault As Long) As Long
说明
取得win.ini初始化文件中指定条目的一个整数值
返回值
Long,找到条目的值;如指定的条目未找到,就返回默认值。如找到的数字不是一个合法的整数,函数就会返回其中合法的一部分。例如,对于“xyz=55zz”这个条目,函数会返回55。这个函数也能理解采用标准C语言格式的十六进制数字:用0x作为一个十六进制数字的前缀——所以0x55ab等价于vb的&H55AB
参数表
参数 类型及说明
lpAppName String,欲在其中搜索条目的小节名。这个字串不区分大小写
lpKeyName String,欲获取的项名或条目名。这个字串不区分大小写
nDefault Long,指定在条目未找到时返回的默认值
注解
参考对GetPrivateProfileInt函数的注解

Top

GetProfileSection

VB声明
Declare Function GetProfileSection Lib "kernel32" Alias "GetProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
说明
获取指定小节(在win.ini文件中)所有项名和值的一个列表
返回值
Long,装载到lpReturnedString缓冲区的字符数量。如缓冲区的长度不足以容下所有信息,则返回nSize-2
参数表
参数 类型及说明
lpAppName String,欲获取的小节。这个字串不区分大小写
lpReturnedString String,用于容纳项和值字串列表的一个缓冲区。每个字串都用一个NULL分隔,最后一个字串用两个NULL字符中止
nSize Long,lpReturnedString缓冲区的大小,在windows 95中最大为32767
注解
参考GetPrivateProfileInt函数的注解

GetProfileString

VB声明
Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
说明
为win.ini初始化文件中指定的条目取得字串
返回值
Long,复制到lpReturnedString缓冲区的字节数量,其中不包括那些NULL中止字符。如lpReturnedString缓冲区不够大,不能容下全部信息,就返回nSize-1(若lpAppName或lpKeyName为NULL,则返回nSize-2)
参数表
参数 类型及说明
lpAppName String,要在其中查找条目的小节名。这个字串不区分大小写。如果为vbNullString,则在lpReturnedString缓冲区装载这个.ini文件的所有小节的一个列表
lpKeyName String,欲获取的项名或条目名。这个字串不区分大小写。如果为vbNullString,则在lpReturnedString缓冲区装载指定小节内所有项的一个列表
lpDefault String,指定条目未找到时返回的默认值。可设为空("")
lpReturnedString String,指定一个预先初始化好的字串缓冲区,长度至少为nSize个字符
nSize Long,装载到lpReturnedString缓冲区的最大字符数
注解
如lpKeyName参数为零,那么lpReturnedString缓冲区会载入指定小节内所有设置项的一个列表。每个项都用一个NULL字符分隔,最后那个项用两个NULL字符中止

Top

GetShortPathName

VB声明
Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathName" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
说明
获取指定文件的短路径名
返回值
Long,装载到lpszShortPath缓冲区的字符数量。如lpszShortPath的长度不足,不能容下文件名,就返回需要的缓冲区长度
参数表
参数 类型及说明
lpszLongPath String,指定欲获取短路径名的那个文件的名字。可以是个完整路径,或者由当前目录决定
lpszShortPath String,指定一个缓冲区,用于装载文件的短路径和文件名
cchBuffer Long,lpszShortPath缓冲区长度

Top

GetSystemDirectory

VB声明
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
说明
这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作
返回值
Long,装载到lpBuffer缓冲区的字符数量。如lpBuffer不够大,不能容下文件名,则返回要求的缓冲区长度
参数表
参数 类型及说明
lpBuffer String,用于装载系统目录路径名的一个字串缓冲区。它应事先初始化成nSize+1个字符的长度。通常至少要为这个缓冲区分配MAX_PATH个字符的长度
nSize Long,lpBuffer字串的最大长度

Top

GetTempFileName

VB声明
Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
说明
这个函数包含了一个临时文件的名字,它可由应用程序使用
返回值
Long,最终用于生成文件名的wUnique数字的值。如wUnique参数不为零,这就是参数的值。零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpszPath String,临时文件使用的目录。通常用GetTempPath函数获得
lpPrefixString String,要使用的文件名前缀。头三个字符作为文件名前缀使用
wUnique Long,追加到前缀字串后面的数字。如果为0,则这个函数会用一个随机数字生成文件。随后,它会检查是否存在同名的文件。如果存在,函数会增加这个数字,并继续尝试,直到生成一个独一无二的名字为止。文件在驱动器上会以长度为0字节的形式保存。如果不为零,就不会创建文件,而且函数不会核实它是否一个独一无二的文件名
lpTempFileName String,用于装载新建临时文件名的缓冲区,这个缓冲区的长度至少应为MAX_PATH个字符
注解
函数使用的文件名肯定采用ANSI字符集。临时文件不会被windows自动删除

Top

GetTempPath

VB声明
Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
说明
获取为临时文件指定的路径
返回值
Long,装载到lpBuffer的字符数。如当前缓冲区的长度不够,不能容下整个路径,则返回lpBuffer需要的长度。零表示失败。会设置GetLastError
参数表
参数 类型及说明
nBufferLength Long,lpBuffer字串的长度
lpBuffer String,用于装载临时文件路径的一个预初始化字串
注解
临时路径是由TMP环境变量指定的一个路径。如TMP不存在,则是由TEMP环境变量指定的路径。如果这两个环境变量都不存在,就是当前目录

Top

GetVolumeInformation

VB声明
Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
说明
获取与一个磁盘卷有关的信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpRootPathName String,欲获取信息的那个卷的根路径
lpVolumeNameBuffer String,用于装载卷名(卷标)的一个字串
nVolumeNameSize Long,lpVolumeNameBuffer字串的长度
lpVolumeSerialNumber Long,用于装载磁盘卷序列号的变量
lpMaximumComponentLength Long,指定一个变量,用于装载文件名每一部分的长度。例如,在“c:\component1\component2.ext”的情况下,它就代表component1或component2名称的长度
lpFileSystemFlags Long,用于装载一个或多个二进制位标志的变量。对这些标志位的解释如下:
FS_CASE_IS_PRESERVED 文件名的大小写记录于文件系统
FS_CASE_SENSITIVE 文件名要区分大小写
FS_UNICODE_STORED_ON_DISK 文件名保存为Unicode格式
FS_PERSISTANT_ACLS 文件系统支持文件的访问控制列表(ACL)安全机制
FS_FILE_COMPRESSION 文件系统支持逐文件的进行文件压缩
FS_VOL_IS_COMPRESSED 整个磁盘卷都是压缩的
lpFileSystemNameBuffer String,指定一个缓冲区,用于装载文件系统的名称(如FAT,NTFS以及其他)
nFileSystemNameSize Long,lpFileSystemNameBuffer字串的长度

Top

GetWindowsDirectory

VB声明
Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
说明
这个函数能获取Windows目录的完整路径名。在这个目录里,保存了大多数windows应用程序文件及初始化文件
返回值
Long,复制到lpBuffer的一个字串的长度。如lpBuffer不够大,不能容下整个字串,就会返回lpBuffer要求的长度。零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpBuffer String,指定一个字串缓冲区,用于装载Windows目录名。除非是根目录,否则目录中不会有一个中止用的“\”字符
nSize Long,lpBuffer字串的最大长度

Top

hread

VB声明
Declare Function hread Lib "kernel32" Alias "_hread" (ByVal hFile As Long, lpBuffer As Any, ByVal lBytes As Long) As Long
说明
参考lread
注解
这个函数在win16中用于读取大于64KB的数据块。但win32的文件I/O函数并不受这个64KB的限制

Top

MoveFile, MoveFileEx

VB声明
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)
说明
移动文件。如dwFlags设为零,则MoveFile完全等价于MoveFileEx
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpExistingFileName String,欲移动的文件名
lpNewFileName String,新文件名
dwFlags Long,一个或多个下述常数
MOVEFILE_REPLACE_EXISTING 如目标文件存在,则将其替换
MOVEFILE_COPY_ALLOWED 如移动到一个不同的卷,则复制文件并删除原来的文件
MOVEFILE_DELAY_UNTIL_REBOOT 移动操作在系统下次重新启动时正式进行。这样便可在Windows NT中改换系统文件
注解
这两个函数通常不能将文件从一个卷移动到另一个卷。但如设置了MOVEFILE_COPY_ALLOWED标记,MoveFileEx可以做到这一点

Top

OpenFile

VB声明
Declare Function OpenFile Lib "kernel32" Alias "OpenFile" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
说明
这个函数能执行大量不同的文件操作。和这个函数相比,请优先考虑win32的CreateFile函数(它能打开命名管道和控制Unicode文件名,同时不受128个字符的路径名称的限制)
返回值
Long,如执行成功,返回文件句柄。注意文件句柄可能是无效的;例如,假设指定了OF_EXIST标志,文件在函数返回前会关闭,但它打开时的句柄却永远不会返回。如果出错,函数会返回HFILE_ERROR;此时,由lpReOpenBuff指定的OFSTRUCT结构的nErrCode会设置成发生的错误。表OpenFile-2(OFSTRUCT出错代码)对这些错误进行了总结。会设置GetLastError
参数表
参数 类型及说明
lpFileName String,欲打开文件的名字
lpReOpenBuff OFSTRUCT,该结构填充的数据包括与文件和操作结果有关的信息
wStyle Long,参考表OpenFile-1(OpenFile函数的标志常数表)总结的标志常数的组合,它决定了要采取的操作方式

表OpenFile-1(OpenFile函数的标志常数表)
wStyle常数 说明
OF_CREATE 创建指定的文件。如已经存在,则将其缩减为零长度
OF_DELETE 删除指定的文件
OF_EXIST 通过尝试打开文件的做法,判断一个文件是否存在。如文件存在,则将其关闭。此时,函数会返回文件打开时使用的句柄,但这个句柄是无效的。如指定的文件不存在,则返回一个负数
OF_PARSE 填写lpReOpenBuff结构的内容,但不执行其他任何操作
OF_PROMPT 如文件不存在,则显示一个消息框,在其中列出重试和取消按钮
OF_READ 以只读方式打开文件
OF_READWRITE 以可读、可写的方式打开文件
OF_REOPEN 打开lpReOpenBuff结构内指定的文件,而不是用lpFileName参数
OF_SEARCH 强迫windows查找文件——即使指定了特定的路径
OF_SHARE_COMPAT 文件可由多个应用程序打开多次
OF_SHARE_DENY_NONE 可打开文件,以便由其他程序读写
OF_SHARE_DENY_READ 禁止其他程序读写文件内容
OF_SHARE_DENY_WRITE 其他程序可以读文件,但不能写文件
OF_SHARE_EXCLUSIVE 其他任何一个程序都不能再打开这个文件
OF_WRITE 文件以只写模式打开
表OpenFile-2(OFSTRUCT出错代码)
十六进制值 说明 十六进制值 说明
1 函数无效 2 文件未找到
3 路径未找到 4 无可用文件句柄
5 拒绝访问 6 句柄无效
7 DOS内存冲突 8 无足够内存完成操作
9 无效块 A 非法环境
B 无效格式 C 无效访问
D 无效数据    
F 无效驱动器 10 当前目录无效
11 设备有异 12 没有更多的文件
13 写保护错 14 非法单位
15 驱动器未准备好 16 无效命令
17 CRC校验错 18 无效长度
19 搜索错误 1A 磁盘不兼容MS-DOS
1B 扇区未找到 1C 缺纸
1D 写错误 1E 读错误
1F 驱动器常规错误 20 共享违例
21 文件锁定违例 22 不正确的磁盘
23 无可用的文件控制块 24 共享缓冲区溢出
32 不支持的设备 33 远程设备不可用
34 重名错误 35 网络路径错误
36 网络忙 37 非法设备
38 命令太多 39 网卡硬件错误
3A 网络响应错误 3B 其他网络错误
3C 远程适配器错误 3D 打印队列满
3E 后台打印缓冲区满 3F 打印取消
40 删除的网络名 41 拒绝网络访问
42 无效设备类型 43 无效网络名
44 名字太多 45 会话太多
46 共享暂停 47 请求未接受
48 重定向暂停 50 文件退出
51 文件控制块重复 52 不能创建
53 中断24错误 54 缺少结构
55 已经分配 56 密码无效
57 参数无效 58 网络写错误

OpenFileMapping

VB声明
Declare Function OpenFileMapping Lib "kernel32" Alias "OpenFileMappingA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long
说明
打开一个现成的文件映射对象
返回值
Long,指定文件映射对象的句柄。零表示出错。会设置GetLastError
参数表
参数 类型及说明
dwDesiredAccess Long,带有前缀FILE_MAP_???的一个常数。参考MapViewOfFile函数的dwDesiredAccess参数的说明
bInheritHandle Long,如这个函数返回的句柄能由当前进程启动的新进程继承,则这个参数为TRUE
lpName String,指定要打开的文件映射对象名称

Top

QueryDosDevice

VB声明
Declare Function QueryDosDevice Lib "kernel32" Alias "QueryDosDeviceA" (ByVal lpDeviceName As String, ByVal lpTargetPath As String, ByVal ucchMax As Long) As Long
说明
在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况
返回值
Long,零表示出错。如执行成功,返回保存到lpTargetPath的字符数。会设置GetLastError
参数表
参数 类型及说明
lpDeviceName String,如果是vbNullString,那么lpTargetPath会载入当前映射的MS-DOS名称的一个列表。如果是个MS-DOS名,则lpTargetPath会载入一个设备映射列表(第一个名字是活动映射,后续的名字是以前尚未删掉的映射)
lpTargetPath String,名称列表,具体取决于lpDeviceName参数。这些名字用NULL字符分隔。列表最后用两个连续的NULL字符中止
ucchMax Long,lpTargetPath缓冲区的大小
注解
可用DefineDosDevice函数将映射变成DOS设备名

适用平台
Windows NT

Top

ReadFile

VB声明
Declare Function ReadFile Lib "kernel32" Alias "ReadFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
说明
从文件中读出数据。与lread函数相比,这个函数要明显灵活的多。该函数能够操作通信设备、管道、套接字以及邮槽
返回值
Long,非零表示成功,零表示失败。会设置GetLastError。如启动的是一次异步读操作,则函数会返回零值,并将ERROR_IO_PENDING设置成GetLastError的结果。如结果不是零值,但读入的字节数小于nNumberOfBytesToRead参数指定的值,表明早已抵达了文件的结尾
参数表
参数 类型及说明
hFile Long,文件的句柄
lpBuffer Any,用于保存读入数据的一个缓冲区
nNumberOfBytesToRead Long,要读入的字符数
lpNumberOfBytesRead Long,从文件中实际读入的字符数
lpOverlapped OVERLAPPED,如文件打开时指定了FILE_FLAG_OVERLAPPED,那么必须用这个参数引用一个特殊的结构。那个结构定义了一次异步读取操作。否则,应将这个参数设为NULL(将函数声明成ByVal As Long,并传递零值)
注解
并非每种操作系统都支持对每种设备进行异步操作。Windows 95不支持对一个磁盘文件进行异步读操作(重复读)

Top

RegCreateKey

VB声明
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
说明
在指定的项下创建一个新项。如指定的项已经存在,那么函数会打开现有的项
返回值
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
参数表
参数 类型及说明
hKey Long,要打开项的句柄,或者一个标准项名
lpSubKey String,欲创建的新子项。可同时创建多个项,只需用反斜杠将它们分隔开即可。例如level1\level2\newkey
phkResult Long,指定一个变量,用于装载新子项的句柄

Top

RegCreateKeyEx

VB声明
Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
说明
在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数。如指定的项已经存在,则函数会打开现有的项
返回值
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
参数表
参数 类型及说明
hKey Long,一个打开项的句柄,或者一个标准项名
lpSubKey String,欲创建的新子项的名字
Reserved Long,设为零
lpClass String,项的类名
dwOptions Long,下述常数为零:REG_OPTION_VOLATILE——这个项不正式保存下来,系统重新启动后会消失
samDesired Long,带有前缀KEY_??的一个或多个常数。它们组合起来描述了允许对这个项进行哪些操作
lpSecurityAttributes SECURITY_ATTRIBUTES,对这个项的安全特性进行描述的一个结构(用ByVal As Long传递空值)。不适用于windows 95
phkResult Long,指定用于装载新子项句柄的一个变量
lpdwDisposition Long,用于装载下列某个常数的一个变量:
REG_CREATED_NEW_KEY——新建的一个子项
REG_OPENED_EXISTING_KEY——打开一个现有的项  
注解
REG_OPTION_VOLATILE不适用于windows 95

Top

RegOpenKey

VB声明
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
说明
打开一个现有的注册表项
返回值
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
参数表
参数 类型及说明
hKey Long,一个已打开项的句柄,或指定一个标准项名
lpSubKey String,要打开的项名
phkResult Long,指定一个变量,用于装载(保存)打开注册表项的一个句柄
注解
在NT环境下,这个函数会使用默认的安全参数

Top

RegOpenKeyEx

VB声明
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
说明
打开一个现有的项。在win32下推荐使用这个函数
返回值
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
参数表
参数 类型及说明
hKey Long,一个已打开项的句柄,或指定一个标准项名
lpSubKey String,欲打开注册表项的名字
ulOptions Long,未用,设为零
samDesired Long,带有前缀KEY_??的一个或多个常数。它们的组合描述了允许对这个项进行哪些操作
phkResult Long,用于装载打开项的名字的一个变量

Top

RegQueryInfoKey

VB声明
Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long
说明
获取与一个项有关的信息
返回值
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码。如一个缓冲区的长度不够,不能容下返回的数据,则函数会返回ERROR_MORE_DATA
参数表
参数 类型及说明
hKey Long,一个已打开项的句柄,或指定一个标准项名
lpClass String,指定一个字串,用于装载这个注册表项的类名
lpcbClass Long,指定一个变量,用于装载lpClass缓冲区的长度。一旦返回,它会设为实际装载到缓冲区的字节数量
lpReserved Long,未用,设为零
lpcSubKeys Long,用于装载(保存)这个项的子项数量的一个变量
lpcbMaxSubKeyLen Long,指定一个变量,用于装载这个项最长一个子项的长度。注意这个长度不包括空中止字符
lpcbMaxClassLen Long,指定一个变量,用于装载这个项之子项的最长一个类名的长度。注意这个长度不包括空中止字符
lpcValues Long,用于装载这个项的设置值数量的一个变量
lpcbMaxValueNameLen Long,指定一个变量,用于装载这个项之子项的最长一个值名的长度。注意这个长度不包括空中止字符
lpcbMaxValueLen Long,指定一个变量,用于装载容下这个项最长一个值数据所需的缓冲区长度
lpcbSecurityDescriptor Long,装载值安全描述符长度的一个变量
lpftLastWriteTime FILETIME,指定一个结构,用于容纳该项的上一次修改时间

Top
2010-1-1 23:58
0
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好多啊   学习了~~~
2010-1-2 12:44
0
雪    币: 175
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
收集起来不容易
2010-1-2 19:49
0
雪    币: 1849
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
以后直接复制了,哈哈。
2010-1-4 13:12
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
网上不都有的嘛。
2010-1-4 15:45
0
雪    币: 137
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢楼主分享
2010-1-5 12:21
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
网上都有,还分享啥
2010-1-5 16:39
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢,正是我需要学习的
2013-11-10 18:58
0
游客
登录 | 注册 方可回帖
返回
//