VB6 リファレンス お品書き へ戻ります
Visual Basic6 リファレンス


VB6 LHAファイル操作
LZH形式のアーカイブファイルの圧縮・解凍

Unlha32 API
UNLHA32.DLL が必要です。 Download

ソースはVB6用で記述しています。VB.NET以降のバージョンは型宣言に注意してください(VB6:Long → VB.NET以降:Integer)

お品書き
● 標準モジュールLHA(API)用の定義 標準モジュールのサンプルリスト
● サンプルリストLZHファイルへ圧縮するサンプルリスト
● サンプルリストLZHファイルを解凍するサンプルリスト
● UnlhaLZHファイルへ圧縮または解凍する
● UnlhaGetVersionUNLHA32.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メソッド
【機能】LHAファイルを圧縮/解凍します。成功すれば、0を返します。
【API書式】 int WINAPI Unlha(
                 HWND _hwnd,
                 LPCTSTR _szCmdLine,
                 LPTSTR _szOutput,
                 const DWORD _dwSize
             )
【宣言】
(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
【宣言】
(VB.NET)
Public Declare Function Unlha Lib "unlha32" (ByVal hwnd As Integer, ByVal szCmdLine As String, ByVal szOutput As String, ByVal dwSize As Integer) As Integer

hwndウィンドウハンドルを指定します。
szCmdLineUnlhaに渡すコマンドを指定します。

コマンドの書式
[<command>] [[-<switch>[+|-|0|1|2]]...] <archive_file_name>[.LZH]
[[<base_directory_name>¥] [<path_name>|<wild_name>]...]]...

<command>説明
a書庫にファイルを追加
c書庫内のファイルに注釈を入れる
d書庫からファイルを削除
e書庫内のファイルを展開
f書庫のファイルを更新
j書庫に別の書庫を加える
l書庫の内容の一覧出力
m書庫にファイルを移動
n書庫内のファイルの名前を変更
pテキストファイルをバッファへ出力
s既存書庫を変換して自己解凍書庫を作成
t書庫の完全性検査
u書庫へのファイルの更新・追加 (タイムスタンプ チェック)
v書庫の内容の冗長な一覧表示
xパス情報を有効にしてファイルを展開
y新しいスイッチで書庫を変換

<switch> (0:off 1:on)説明default
-レスポンスファイル指定文字の設定[--@]
+レジストリの設定を無視[-+0]
a[0|1|2]属性の保存
-a0:隠し属性・システム属性のついたファイルを無視
-a1:すべてのファイルについて属性を展開/格納
[-a0]
c[0|1]タイムスタンプ検査を省略[-c0]
d[0|1]ディレクトリの格納[-d0]
e[0|1]スライド辞書サイズを半分にして圧縮[-e1]
f[0|1]ディスク容量チェックの中止[-f0]
h[0|1|2|3]ヘッダの形式を指定[-h2]
i[0|1|2|3]ファイル検索で大文字と小文字を区別
-i0:パスを含めて大文字に変換
-i1:ファイル名のみを大文字に変換
-i2:ファイル名のみを小文字に変換
-i3:パスを含めて小文字に変換
-i4:変換しない
[-i4]
jスイッチ文字の意味を交替させる 
l[0|1|2]展開ログのファイル名の表示法の変更
-l0:ファイル名だけを表示
-l1:書庫内のパス名及び展開先のパス名を表示
-l2:v命令と共に使用するとより詳しい一覧を表示
[-l0]
m[0|1|2]質問に yes と仮定
ファイルの上書きとディレクトリ作成の問い合わせをスキップ
[-m0]
n[0|1]展開状況ダイアログ表示の抑止[-n0]
o[0|1|2|3]旧形式で書庫を作成
-o0: UNLHA32.DLL 標準の書庫を作成。
-o1:LHarc v1.13 互換の書庫を作成。
-o2:LHA v2.13 互換の書庫を作成。
-o3:lh6 形式で書庫を作成。
[-o0]
p[0|1|2]全パス名で合致[-p0]
r[0|1|2]再帰的検索[-r0]
s[0|1]スキップ表示の抑制[-s0]
t[0|1]書庫の更新日時の指定[-t0]
u[0|1|2|3]ファイルの更新 (不在と新しいもの)
-u0:存在しないものを含めてすべてのファイル
-u1:より新しいか存在しないファイル
-u2:より古いか存在しないファイル
-u3:存在しないかタイムスタンプ及びサイズの異なるファイル
[-u1]
w[0|1|<作業ディレクトリ名>]作業用ディレクトリの指定
-w0:書庫と同じディレクトリを使用
-w1:システムの作業ディレクトリを使用
-wC:¥WORK : C:¥WORKを使用
[-w1]
x[0|1]ディレクトリ名を有効にする[-x0]
y[0|1]すべての質問に yes と仮定[-y0]
z[0|1|2|<拡張子>]未圧縮ファイルの指定
-z0:すべてのファイルを圧縮して格納
-z1:すべてのファイルを圧縮せずに格納
-z2:LZH,LZS,ZIP,PAK,ARC,ZOO,ARJは圧縮しない
-z拡張子:指定拡張子は圧縮しない
[-z0]
ja[0|1]書庫の注釈の表示を抑止[-ja1]
jb[<パス名>]書庫内の基準ディレクトリを指定 
jc[0|1]破損ヘッダを無視[-jc0]
jd[<サイズ>]ディスクの空き容量を確認[-jd0]
je[<サイズ>]Huffman バッファの大きさを指定[-je16384]
jf[0|1|2]ルート記号の削除
-jf0:指定した基準ディレクトリからの相対パスで展開
-jf2:絶対パスで展開
[-jf1]
jh[0|1]WindowsNT/95 専用のマークを書庫に付加[-jh0]
ji[0|1]短いファイル名で格納・展開[-ji0]
jm[0〜8|a|m]圧縮形式を指定
-jm0:無圧縮保管
-jm1:LHarc 互換
-jm2:LHA Ver 2.13 互換
-jm3:LHA Ver 2.6x以降と互換
-jm5:LH 1.9x 互換
-jm6:LH 1.9x 互換
-jm7:LArc 互換
-jm8:LArc 互換
[-jm2]
jn[0|1]新規ファイルのみ
e,x 命令とセットでディレクトリに存在しないファイルのみを展開
a,m 命令とセットで書庫に存在しないファイルのみを追加
d,l 命令とセットでディレクトリに存在しないファイルのみを扱う
[-jn0]
jo[b][<時間指定>]指定日時以降のファイルを処理 
jp[0|1]進捗バーをプログレス・バーで表示[-jp0]
jr[0|1]ファイルの置き換え[-jr0]
js<フラグ>
    a
    b
    c
    d
    e
    f
    g
    l
    m
    n
    o
    p
    s
    t
    v
    z
各種フラグの設定
書き戻し後に削除
メッセージループを回さない
展開できなかったファイル数を返す
空き容量取得に失敗した場合の処理を指定
展開時の上書きオープン等をエラーとする
タイムスタンプの補正を行わない
書庫の後ろに存在する余剰データを許可しない
圧縮・格納ファイルの重複チェックを行わない
サウンドを使用する
ヘッダ内のパス長不正の場合にエラー
SH_DENYNO でのオープンを行わない
不正なパスを拒否
共有エラーの場合に処理を続行
FILETIME 構造体ヘッダの格納を省略
書庫操作後に書庫をチェック
小文字の拡張子を付加
 
[-jsa0]
[-jsb0]
[-jsc0]
[-jsd0]
[-jse0]
[-jsf1]
[-jsg1]
[-jsl0]
[-jsm0]
[-jsn0]
[-jso0]
[-jsp1]
[-jss0]
[-jst1]
[-jsv0]
[-jsz0]
jt<フラグ>
    b
    c
    l<コードページ>
    p[<優先順位>]
    s[0|<文字数>]
    u[0|1|2]





    z[0|1|<拡張子>]
各種フラグの設定
バックアップモードを指定
指定したファイルのみ格納
ヘッダのコードページを指定
優先順位の指定
スペース文字の連続数を指定
Unicode 名ヘッダの扱いを指定
  -jtu0:Unicode 名ヘッダの作成を行わない
  -jtu1:表現できない文字を含んだ場合 Unicode ヘッダで作成
  -jtu2:常に Unicode ヘッダで作成
  -jtu3:表現できない文字を含んだ場 CP_UTF8 ヘッダで作成
  -jtu4:常に CP_UTF8 ヘッダで作成
実行可能ファイルの指定
 
[-jtb0]
[-jtc0]


[-jts8]
[-jtu1]





[-jtz1]
jw[j|e][0|1|2|3|4]WinSFX/WinSFXM を作成[-jw0]
jx[<ファイル名>]除外するファイル名 
jy[<フラグ>]
    b
    c
    d
    k
    n
    o
yes と仮定して質問を抑制
不正パス警告の処理選択確認を省略
ディレクトリ作成の確認を省略
ファイル削除の確認を省略
使用できるディスク容量の確認の省略
新ファイル名の要求の省略
既存ファイルへの上書き確認の省略
 






jz[<ファイル名>]ファイル注釈のファイルを供給 
ga[0|1|2]書き込み不可属性を無視
-ga0:確認して上書き展開
-ga1:無条件で展開
-ga2:展開をスキップ
[-ga0]
gb[<ファイル名>]ファイル・モードを指定 
gd[0|1]余分なデータの削除[-gd0]
ge[0|1]最初の拡張子を認識[-ge0]
gf[0|1|2|3]すでにある新しいファイルの更新
-gf0:存在しないものを除くすべてのファイル
-gf1:より新しいファイルのみ
-gf2:より古いファイルのみ
-gf3:タイムスタンプ及びサイズの異なるファイルのみ
[-gf0]
gj[0|1]x 命令を e 命令と同様と見なす[-gj0]
gl[<ファイル名>]ログをファイルに出力 
gm[0|1]エラーメッセージ表示の抑止[-gm0]
gn[0|1|2]展開ファイルの合計サイズを 100% とした進捗グラフの表示
-gn2:簡易表示
[-gn0]
go[0|1]ダイアログのオーナーウィンドウの指定[-go0]
gp[0|1]ウィンドウを Disable にしない[-gp0]
gq[0|1]ダイアログを前面に表示[-gq0]
gr[<ファイル名>]変更ファイル名を供給 
gs[<サイズ>]ヘッダ検索サイズの指定[-gs-]
gt[0|1]特殊ディレクトリ指定を解析[-gt0]
gu[0|1]WinSFX,DosSFX にすべてのファイルを格納[-gu0]
gw[j|e][0|1|2|3|4]WinSFX32/WinSFX32M を作成 
gx<フラグ>WinSFX(32) の省略値を指定 
gy<サブスイッチ>
    a[0|1]
    c[0|1]
    d<ディレクトリ>
    e<コマンド文字列>
    o[0|1]
    q[0|1]
    s[0|1]
    t<タイトル文字列>
    w<タイトル文字列>
    x[0|1]
WinSFX(32) の各種パラメータを指定
属性を解凍
タイムスタンプチェックの省略
解凍先ディレクトリを指定
実行コマンドを指定
自動上書きを指定(上書き確認を行わない)
自動実行を指定
改竄チェックを行う
解凍先ディレクトリ欄タイトルの設定
ダイアログのタイトルの設定
ディレクトリ情報の復元を行う
 
[-gya1]
[-gyc1]
 
 
[-gyo0]
[-gyq0]
[-gys0]
 
 
[-gyx0]

szOutputUnlhaの実行結果のログを返します。省略する時は、"" を指定。
dwSize szOutputのサイズを指定します。省略時は、0を指定。
【 例 】 '==================
' ファイルをLZH形式で圧縮する
'==================
Dim result As Long             '戻り値 (成功:0 失敗:エラーコード)
Dim szOutput As String * 2048  'Unlhaの実行ログ
result = Unlha(Me.hWnd, "a -x1 -r1 c:¥test¥sample.lzh c:¥test¥*.*", szOutput, Len(szOutput))
szOutput = Left(szOutput, InStr(szOutput, vbNullChar) - 1)
Debug.Print szOutput
If (result <> 0) Then MsgBox "Error/Warning : 0x" & Hex(result)
  ※ 失敗、もしくは、ユーザキャンセルした場合は、戻り値にエラーコードが返ります。Err.LastDllErrorには、GetLastErrorのエラーコードがセットされます。

  ※ szCmdLine のフォルダやファイル名にスペースがある場合は、ダブルクォーテーションで囲みます。
      "a -x1 -r1 " & Chr(34) & "c:¥Program Files¥sample.lzh" & Chr(34) & " " & Chr(34) & "c:¥My Documents¥*.*" & Chr(34)


● UnlhaGetVersion APIメソッド
【機能】UNLHA32.DLLのバージョンを返します。
【API書式】 WORD WINAPI UnlhaGetVersion(
              VOID
          )
【宣言】 Public Declare Function UnlhaGetVersion Lib "unlha32" () As Integer
【 例 】 result = UnlhaGetVersion()
  ※ 戻り値のバージョンは、版数に 100 を掛けたものが返ってきます。


● 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