簡介
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 網路寫錯誤