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 | 网络写错误 |