Visual Basic6 リファレンス
|
VB6 LHAファイル操作
LZH形式のアーカイブファイルの圧縮・解凍 |
Unlha32 API UNLHA32.DLL が必要です。 Download ソースはVB6用で記述しています。VB.NET以降のバージョンは型宣言に注意してください(VB6:Long → VB.NET以降:Integer) |
お品書き |
● 標準モジュール | LHA(API)用の定義 標準モジュールのサンプルリスト |
● サンプルリスト | LZHファイルへ圧縮するサンプルリスト |
● サンプルリスト | LZHファイルを解凍するサンプルリスト |
● Unlha | LZHファイルへ圧縮または解凍する |
● UnlhaGetVersion | UNLHA32.DLLのバージョンを取得 |
● 標準モジュール(エラー定数) | LHA(API)用の標準モジュール(エラー定数)のサンプルリスト |
● 標準モジュール(エラー内容取得) | エラーコードからエラー内容を取得するサンプルリスト |
● LHA(API)用の定義 標準モジュールの記述 '================================ ' LHAファイルを圧縮・解凍する 標準モジュール (VB6) '================================ 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のバージョン情報を取得する (VB6) '=============================== Public Declare Function UnlhaGetVersion Lib "unlha32" () As Integer |
● ファイルをLZH形式で圧縮する サンプル プログラム '===================== ' ファイルを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形式のファイルを解凍する サンプル プログラム '==================== ' 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) |
● Unlha APIメソッド
※ szCmdLine のフォルダやファイル名にスペースがある場合は、ダブルクォーテーションで囲みます。 "a -x1 -r1 " & Chr(34) & "c:¥Program Files¥sample.lzh" & Chr(34) & " " & Chr(34) & "c:¥My Documents¥*.*" & Chr(34) |
● UnlhaGetVersion APIメソッド
|
● LHA(API)用の標準モジュール(エラー定数)の記述 '===================== ' LHA エラー定数 標準モジュール '===================== 'Constants - The Unlha32 functions return error codes. '/* WARNING */ Public Const ERROR_DISK_SPACE = &H8005& Public Const ERROR_READ_ONLY = &H8006& Public Const ERROR_USER_SKIP = &H8007& Public Const ERROR_UNKNOWN_TYPE = &H8008& Public Const ERROR_METHOD = &H8009& Public Const ERROR_PASSWORD_FILE = &H800A& Public Const ERROR_VERSION = &H800B& Public Const ERROR_FILE_CRC = &H800C& Public Const ERROR_FILE_OPEN = &H800D& Public Const ERROR_MORE_FRESH = &H800E& Public Const ERROR_NOT_EXIST = &H800F& Public Const ERROR_ALREADY_EXIST = &H8010& Public Const ERROR_TOO_MANY_FILES = &H8011& '/* ERROR */ Public Const ERROR_MAKEDIRECTORY = &H8012& Public Const ERROR_CANNOT_WRITE = &H8013& Public Const ERROR_HUFFMAN_CODE = &H8014& Public Const ERROR_COMMENT_HEADER = &H8015& Public Const ERROR_HEADER_CRC = &H8016& Public Const ERROR_HEADER_BROKEN = &H8017& Public Const ERROR_ARC_FILE_OPEN = &H8018& Public Const ERROR_NOT_ARC_FILE = &H8019& Public Const ERROR_CANNOT_READ = &H801A& Public Const ERROR_FILE_STYLE = &H801B& Public Const ERROR_COMMAND_NAME = &H801C& Public Const ERROR_MORE_HEAP_MEMORY = &H801D& Public Const ERROR_ENOUGH_MEMORY = &H801E& Public Const ERROR_ALREADY_RUNNING = &H801F& Public Const ERROR_USER_CANCEL = &H8020& Public Const ERROR_HARC_ISNOT_OPENED = &H8021& Public Const ERROR_NOT_SEARCH_MODE = &H8022& Public Const ERROR_NOT_SUPPORT = &H8023& Public Const ERROR_TIME_STAMP = &H8024& Public Const ERROR_TMP_OPEN = &H8025& Public Const ERROR_LONG_FILE_NAME = &H8026& Public Const ERROR_ARC_READ_ONLY = &H8027& Public Const ERROR_SAME_NAME_FILE = &H8028& Public Const ERROR_NOT_FIND_ARC_FILE = &H8029& Public Const ERROR_RESPONSE_READ = &H802A& Public Const ERROR_NOT_FILENAME = &H802B& Public Const ERROR_TMP_COPY = &H802C& Public Const ERROR_EOF = &H802D& Public Const ERROR_ADD_TO_LARC = &H802E& Public Const ERROR_TMP_BACK_SPACE = &H802F& Public Const ERROR_SHARING = &H8030& Public Const ERROR_NOT_FIND_FILE = &H8031& Public Const ERROR_LOG_FILE = &H8032& Public Const ERROR_NO_DEVICE = &H8033& Public Const ERROR_GET_ATTRIBUTES = &H8034& Public Const ERROR_SET_ATTRIBUTES = &H8035& Public Const ERROR_GET_INFORMATION = &H8036& Public Const ERROR_GET_POINT = &H8037& Public Const ERROR_SET_POINT = &H8038& Public Const ERROR_CONVERT_TIME = &H8039& Public Const ERROR_GET_TIME = &H803A& Public Const ERROR_SET_TIME = &H803B& Public Const ERROR_CLOSE_FILE = &H803C& Public Const ERROR_HEAP_MEMORY = &H803D& Public Const ERROR_HANDLE = &H803E& Public Const ERROR_TIME_STAMP_RANGE = &H803F& Public Const ERROR_MAKE_ARCHIVE = &H8040& Public Const ERROR_NOT_CONFIRM_NAME = &H8041& Public Const ERROR_UNEXPECTED_EOF = &H8042& Public Const ERROR_INVALID_END_MARK = &H8043& Public Const ERROR_INVOLVED_LZH = &H8044& Public Const ERROR_NO_END_MARK = &H8045& Public Const ERROR_HDR_INVALID_SIZE = &H8046& Public Const ERROR_UNKNOWN_LEVEL = &H8047& Public Const ERROR_BROKEN_DATA = &H8048& Public Const ERROR_INVALID_PATH = &H8049& Public Const ERROR_TOO_BIG = &H804A& Public Const ERROR_EXECUTABLE_FILE = &H804B& Public Const ERROR_INVALID_VALUE = &H804C& Public Const ERROR_HDR_EXPLOIT = &H804D& |
● エラーコードからエラー内容を取得する標準モジュール のサンプル プログラム '========================================== ' エラーコードからエラー内容を取得する標準モジュール ' 書式:strErrorMessage = ErrorMessage_Unlha32 ( 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 |