精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓.VB电子文档集锦.〓〓>>《老猫:VB声明API》>>VB API:文本和字体函数 第五页

主题:VB API:文本和字体函数 第五页
发信人: winsy(鹰派)
整理人: winsy(2003-03-16 10:29:13), 站内信件
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可以做到这一点
 

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,指定要打开的文件映射对象名称 


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 


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不支持对一个磁盘文件进行异步读操作(重复读)
 

ReadFileEx 

VB声明 
Declare Function ReadFileEx Lib "kernel32" Alias "ReadFileEx" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpOverlapped As OVERLAPPED, ByVal lpCompletionRoutine As Long) As Long 
说明 
与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hFile Long,文件的句柄 
lpBuffer Any,指定容纳读入数据的一个缓冲区。除非读操作执行完毕,否则不要访问这个缓冲区 
nNumberOfBytesToRead Long,要读入的字节数 
lpOverlapped OVERLAPPED,定义了一个异步操作的结构。使用这个函数时,结构中的hEvent字段会被忽略 
lpCompletionRoutine Long,回调函数的返回值 


RegCloseKey 

VB声明 
Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long 
说明 
关闭系统注册表中的一个项(或键) 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,要关闭的项 


RegConnectRegistry 

VB声明 
Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long) As Long 
说明 
访问远程系统的部分注册表 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
lpMachineName String,欲连接的系统。采用“\\计算机名”的形式 
hKey Long,HKEY_LOCAL_MACHINE 或 HKEY_USERS 
phkResult Long,用于装载指定项句柄的一个变量 


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,指定一个变量,用于装载新子项的句柄 


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
 

RegDeleteKey 

VB声明 
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long 
说明 
删除现有项下方一个指定的子项 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,一个已打开项的句柄,或者标准项名之一 
lpSubKey String,要删除项的名字。这个项的所有子项也会删除 


RegDeleteValue 

VB声明 
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long 
说明 
删除指定项下方的一个值 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,一个已打开项的句柄,或标准项名之一 
lpValueName String,要删除的值名。可设为vbNullString或一个空串,表示删除那个项的默认值 


RegEnumKey 

VB声明 
Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long 
说明 
枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,一个已打开项的句柄,或者指定一个标准项名 
dwIndex Long,欲获取的子项的索引。第一个子项的索引编号为零 
lpName String,用于装载指定索引处项名的一个缓冲区 
cbName Long,lpName缓冲区的长度 
注解 
用RegQueryInfoKey判断容纳最长那个项所需的缓冲区长度
 

RegEnumKeyEx 

VB声明 
Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long 
说明 
枚举指定项下方的子项 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,一个已打开项的句柄,或者指定一个标准项名 
dwIndex Long,欲获取的子项的索引。第一个子项的索引编号为零 
lpName String,用于装载指定索引处项名的一个缓冲区 
lpcbName Long,指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。一旦返回,它会设为实际装载到lpName缓冲区的字符数量 
lpReserved Long,未用,设为零 
lpClass String,项使用的类名。可以为vbNullString 
lpcbClass Long,用于装载lpClass缓冲区长度的一个变量。一旦返回,它会设为实际装载到缓冲区的字符数量 
lpftLastWriteTime FILETIME,枚举子项上一次修改的时间 


RegEnumValue 

VB声明 
Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long 
说明 
枚举指定项的值 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,一个已打开项的句柄,或者指定一个标准项名 
dwIndex Long,欲获取值的索引。注意第一个值的索引编号为零 
lpValueName String,用于装载位于指定索引处值名的一个缓冲区 
lpcbValueName Long,用于装载lpValueName缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量 
lpReserved Long,未用;设为零 
lpType Long,用于装载值的类型代码的变量 
lpData Byte,用于装载值数据的一个缓冲区 
lpcbData Long,用于装载lpData缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量 


RegFlushKey 

VB声明 
Declare Function RegFlushKey Lib "advapi32.dll" Alias "RegFlushKey" (ByVal hKey As Long) As Long 
说明 
将对项和它的子项作出的改动实际写入磁盘 
返回值 
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 
参数表 
参数 类型及说明 
hKey Long,欲刷新的一个项的句柄,或指定一个标准项名 
注解 
有些操作系统会将对注册表的修改延迟写入磁盘,以便保持系统的高性能。这个函数的作用就是确定将数据实际写入磁盘。但通常,应尽量避免使用这个函数,因为它可能严重影响一个应用程序的性能
 

[关闭][返回]