|
VB LZHファイル操作 |
| Unlha32 API UNLHA32.DLLが必要です。 |
| [DLL] UNLHA32.DLL [標準モジュール] '======================= ' LHAファイルを解凍する '======================= Public Declare Function Unlha Lib "unlha32" _ (ByVal hWnd As Long, ByVal szCmdLine As String, _ ByVal szOutput As String, ByVal dwSize As Long) As Long '======================================= ' UNLHA32.DLLのバージョン情報を取得する '======================================= Public Declare Function UnlhaGetVersion Lib "unlha32" () As Integer |
| [標準モジュール (エラー定数)] 'Constants - The Unlha32 functions return error codes. '/* WARNING */ Private Const ERROR_DISK_SPACE = &H8005& Private Const ERROR_READ_ONLY = &H8006& Private Const ERROR_USER_SKIP = &H8007& Private Const ERROR_UNKNOWN_TYPE = &H8008& Private Const ERROR_METHOD = &H8009& Private Const ERROR_PASSWORD_FILE = &H800A& Private Const ERROR_VERSION = &H800B& Private Const ERROR_FILE_CRC = &H800C& Private Const ERROR_FILE_OPEN = &H800D& Private Const ERROR_MORE_FRESH = &H800E& Private Const ERROR_NOT_EXIST = &H800F& Private Const ERROR_ALREADY_EXIST = &H8010& Private Const ERROR_TOO_MANY_FILES = &H8011& '/* ERROR */ Private Const ERROR_MAKEDIRECTORY = &H8012& Private Const ERROR_CANNOT_WRITE = &H8013& Private Const ERROR_HUFFMAN_CODE = &H8014& Private Const ERROR_COMMENT_HEADER = &H8015& Private Const ERROR_HEADER_CRC = &H8016& Private Const ERROR_HEADER_BROKEN = &H8017& Private Const ERROR_ARC_FILE_OPEN = &H8018& Private Const ERROR_NOT_ARC_FILE = &H8019& Private Const ERROR_CANNOT_READ = &H801A& Private Const ERROR_FILE_STYLE = &H801B& Private Const ERROR_COMMAND_NAME = &H801C& Private Const ERROR_MORE_HEAP_MEMORY = &H801D& Private Const ERROR_ENOUGH_MEMORY = &H801E& Private Const ERROR_ALREADY_RUNNING = &H801F& Private Const ERROR_USER_CANCEL = &H8020& Private Const ERROR_HARC_ISNOT_OPENED = &H8021& Private Const ERROR_NOT_SEARCH_MODE = &H8022& Private Const ERROR_NOT_SUPPORT = &H8023& Private Const ERROR_TIME_STAMP = &H8024& Private Const ERROR_TMP_OPEN = &H8025& Private Const ERROR_LONG_FILE_NAME = &H8026& Private Const ERROR_ARC_READ_ONLY = &H8027& Private Const ERROR_SAME_NAME_FILE = &H8028& Private Const ERROR_NOT_FIND_ARC_FILE = &H8029& Private Const ERROR_RESPONSE_READ = &H802A& Private Const ERROR_NOT_FILENAME = &H802B& Private Const ERROR_TMP_COPY = &H802C& Private Const ERROR_EOF = &H802D& Private Const ERROR_ADD_TO_LARC = &H802E& Private Const ERROR_TMP_BACK_SPACE = &H802F& Private Const ERROR_SHARING = &H8030& Private Const ERROR_NOT_FIND_FILE = &H8031& Private Const ERROR_LOG_FILE = &H8032& Private Const ERROR_NO_DEVICE = &H8033& Private Const ERROR_GET_ATTRIBUTES = &H8034& Private Const ERROR_SET_ATTRIBUTES = &H8035& Private Const ERROR_GET_INFORMATION = &H8036& Private Const ERROR_GET_POINT = &H8037& Private Const ERROR_SET_POINT = &H8038& Private Const ERROR_CONVERT_TIME = &H8039& Private Const ERROR_GET_TIME = &H803A& Private Const ERROR_SET_TIME = &H803B& Private Const ERROR_CLOSE_FILE = &H803C& Private Const ERROR_HEAP_MEMORY = &H803D& Private Const ERROR_HANDLE = &H803E& Private Const ERROR_TIME_STAMP_RANGE = &H803F& Private Const ERROR_MAKE_ARCHIVE = &H8040& Private Const ERROR_NOT_CONFIRM_NAME = &H8041& Private Const ERROR_UNEXPECTED_EOF = &H8042& Private Const ERROR_INVALID_END_MARK = &H8043& Private Const ERROR_INVOLVED_LZH = &H8044& Private Const ERROR_NO_END_MARK = &H8045& Private Const ERROR_HDR_INVALID_SIZE = &H8046& Private Const ERROR_UNKNOWN_LEVEL = &H8047& Private Const ERROR_BROKEN_DATA = &H8048& Private Const ERROR_INVALID_PATH = &H8049& Private Const ERROR_TOO_BIG = &H804A& Private Const ERROR_EXECUTABLE_FILE = &H804B& Private Const ERROR_INVALID_VALUE = &H804C& Private Const ERROR_HDR_EXPLOIT = &H804D& |
| 【サンプルリスト】 '============================= ' ファイルをLZH形式で圧縮する '============================= Dim result As Long '戻り値 (成功:0 失敗:エラーコード) result = Unlha(Me.hWnd, "a -x1 -r1 c:\test\sample.lzh c:\test\*.*", "", 0) If (result <> 0) Then MsgBox "Error/Warning : 0x" & Hex(result) |
| 【サンプルリスト】 '============================= ' LZH形式のファイルを解凍する '============================= Dim result As Long '戻り値 (成功:0 失敗:エラーコード) result = Unlha(Me.hWnd, "e -y c:\test\sample.lzh c:\test\", "", 0) If (result <> 0) Then MsgBox "Error/Warning : 0x" & Hex(result) |
| 【サンプルリスト】 '==================================================== ' エラーコードからエラー内容を取得する標準モジュール '==================================================== Public Function ErrorMessage_Unlha32(ByVal errCode As Long) As String
Dim str As String
Select Case errCode
Case ERROR_DISK_SPACE '(0x8005)
str = "ディスクの空き容量が足りません。"
Case ERROR_READ_ONLY '(0x8006)
str = "読込専用の同名ファイルが存在しています。"
Case ERROR_USER_SKIP '(0x8007)
str = "ユーザによりディレクトリ作成がキャンセルされました。"
Case ERROR_UNKNOWN_TYPE '(0x8008)
str = "特殊属性のファイルへ上書きできませんでした。"
Case ERROR_FILE_CRC '(0x800C)
str = "ファイルのCRCが書庫の情報と異なっています。"
Case ERROR_FILE_OPEN '(0x800D)
str = "ファイルの内部的なオープンエラーです。"
Case ERROR_MORE_FRESH '(0x800E)
str = "展開先に同名のファイルが存在しています。"
Case ERROR_NOT_EXIST '(0x800F)
str = "ファイルが展開先に存在しません。"
Case ERROR_ALREADY_EXIST '(0x8010)
str = "同名のファイルが展開先に既に存在しています。"
Case ERROR_MAKEDIRECTORY '(0x8012)
str = "ディレクトリの作成に失敗しました。"
Case ERROR_CANNOT_WRITE '(0x8013)
str = "ファイルの書き込みに失敗しました。"
Case ERROR_HUFFMAN_CODE '(0x8014)
str = "書庫が壊れています。"
Case ERROR_HEADER_CRC '(0x8016)
str = "ヘッダのCRCが一致しません。"
Case ERROR_HEADER_BROKEN '(0x8017)
str = "書庫のヘッダが破損しています。"
Case ERROR_ARC_FILE_OPEN '(0x8018)
str = "書庫のオープンに失敗しました。"
Case ERROR_NOT_ARC_FILE '(0x8019)
str = "書庫が指定されていません。"
Case ERROR_CANNOT_READ '(0x801A)
str = "ファイルの読み込みに失敗しました。"
Case ERROR_FILE_STYLE '(0x801B)
str = "このファイルはLZH書庫ではありません。"
Case ERROR_COMMAND_NAME '(0x801C)
str = "コマンドに誤りがあります。"
Case ERROR_MORE_HEAP_MEMORY '(0x801D)
str = "作業メモリを確保できませんでした。"
Case ERROR_ENOUGH_MEMORY '(0x801E)
str = "処理結果のバッファを確保できませんでした。"
Case ERROR_ALREADY_RUNNING '(0x801F)
str = "UNLHA32.DLL が既に動作中です。"
Case ERROR_USER_CANCEL '(0x8020)
str = "ユーザにより、処理がキャンセルされました。"
Case ERROR_HARC_ISNOT_OPENED '(0x8021)
str = "HARCハンドルが不正です。"
Case ERROR_NOT_SEARCH_MODE '(0x8022)
str = "書庫の検索に失敗しました。"
Case ERROR_NOT_SUPPORT '(0x8023)
str = "サポートされていないAPIです。"
Case ERROR_TIME_STAMP '(0x8024)
str = "日時指定に誤りがあります。"
Case ERROR_TMP_OPEN '(0x8025)
str = "作業ファイルが開けません。"
Case ERROR_LONG_FILE_NAME '(0x8026)
str = "パス名が長すぎます。"
Case ERROR_ARC_READ_ONLY '(0x8027)
str = "読込専用の書庫です。"
Case ERROR_SAME_NAME_FILE '(0x8028)
str = "書庫に同じ名前のファイルが存在しています。"
Case ERROR_NOT_FIND_ARC_FILE '(0x8029)
str = "指定された書庫ファイルが見つかりません。"
Case ERROR_RESPONSE_READ '(0x802A)
str = "レスポンスファイルからの読込に失敗しました。"
Case ERROR_NOT_FILENAME '(0x802B)
str = "ファイルが指定されていません。"
Case ERROR_TMP_COPY '(0x802C)
str = "作業用書庫へコピーできません。"
Case ERROR_EOF '(0x802D)
str = "予期しない箇所でファイルの終わりが検知されたました。"
Case ERROR_ADD_TO_LARC '(0x802E)
str = "この書庫は操作できません。"
Case ERROR_TMP_BACK_SPACE '(0x802F)
str = "作業中にディスクの空き容量がなくなりました。"
Case ERROR_SHARING '(0x8030)
str = "ファイルの共有エラーが発生しました。"
Case ERROR_NOT_FIND_FILE '(0x8031)
str = "ファイルが見当たりません。"
Case ERROR_LOG_FILE '(0x8032)
str = "ログファイルへの書き込みに失敗しました。"
Case ERROR_NO_DEVICE '(0x8033)
str = "デバイス(ドライブ) にアクセスできません。"
Case ERROR_GET_ATTRIBUTES '(0x8034)
str = "ファイルの属性取得に失敗しました。"
Case ERROR_SET_ATTRIBUTES '(0x8035)
str = "ファイルの属性変更に失敗しました。"
Case ERROR_GET_INFORMATION '(0x8036)
str = "ファイルの情報取得に失敗しました。"
Case ERROR_GET_POINT '(0x8037)
str = "ファイル操作に失敗しました。"
Case ERROR_SET_POINT '(0x8038)
str = "ファイル操作に失敗しました。"
Case ERROR_CONVERT_TIME '(0x8039)
str = "タイムスタンプの変換に失敗しました。"
Case ERROR_GET_TIME '(0x803A)
str = "タイムスタンプの取得に失敗しました。"
Case ERROR_SET_TIME '(0x803B)
str = "タイムスタンプの設定に失敗しました。"
Case ERROR_CLOSE_FILE '(0x803C)
str = "ファイルをクローズできませんでした。"
Case ERROR_HEAP_MEMORY '(0x803D)
str = "ヒープメモリの解放に失敗しました。"
Case ERROR_HANDLE '(0x803E)
str = "FindClose の呼び出しに失敗しました。"
Case ERROR_TIME_STAMP_RANGE '(0x803F)
str = "タイムスタンプが不正です。"
Case ERROR_MAKE_ARCHIVE '(0x8040)
str = "書庫が正常に作成できませんでした。"
Case ERROR_NOT_CONFIRM_NAME '(0x8041)
str = "パス名が正しく記録できませんでした。"
Case ERROR_UNEXPECTED_EOF '(0x8042)
str = "ヘッダ読み込みに失敗しました。"
Case ERROR_INVALID_END_MARK '(0x8043)
str = "不正な終了情報が書庫のエンドマークとして記録されています。"
Case ERROR_INVOLVED_LZH '(0x8044)
str = "他の書庫に格納されている LZH書庫です。"
Case ERROR_NO_END_MARK '(0x8045)
str = "必要な終了情報が書庫のエンドマークとして記録されていません。"
Case ERROR_HDR_INVALID_SIZE '(0x8046)
str = "不正なヘッダサイズです。"
Case ERROR_UNKNOWN_LEVEL '(0x8047)
str = "unlha32.DLL で扱えないヘッダ形式です。"
Case ERROR_BROKEN_DATA '(0x8048)
str = " 格納ファイルが壊れています。"
Case ERROR_INVALID_PATH '(0x8049)
str = "パスが基準ディレクトリやルートディレクトリを越えています。"
Case ERROR_TOO_BIG '(0x804A)
str = "ファイルサイズが大きすぎます。"
Case ERROR_EXECUTABLE_FILE '(0x804B)
str = "この拡張子は抑止されています。"
Case ERROR_INVALID_VALUE '(0x804C)
str = "パラメータの整合性がとれません。"
Case ERROR_HDR_EXPLOIT '(0x804D)
str = "不正なヘッダが見つかりました。"
Case 0
str = "正常に処理が終了しました。"
Case Else
str = "登録されていないエラーが発生しました。"
End Select
ErrorMessage_Unlha32 = str
End Function
|
●Unlha
※ フォルダやファイル名にスペースがある場合は、ダブルクォーテーションで囲みます。 "a -x1 -r1 " & Chr(34) & "c:\Program Files\sample.lzh" & Chr(34) & " " & Chr(34) & "c:\My Documents\*.*" & Chr(34) |
●UnlhaGetVersion
|