[VB] unlha32.dll を使って LHA 圧縮・解凍を行う方法 | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

unlha32.dll の API を利用すると、VB や VBA から 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

Sub main()

  If Lha("a test.lzh test.txt") = False Then
    MsgBox ("lha error!")
  End If

End Sub

Function Lha(szCmdLine As String) As Boolean

  Dim hWnd As Long                                      'ウィンドウハンドル
  Dim szOutput As String                                '出力バッファ<
  Const dwSize As Long = 256                            '出力バッファサイズ

  szOutput = Space(dwSize)                              '出力バッファを確保する。

  If Unlha(hWnd, szCmdLine, szOutput, dwSize) = 0 Then  'unlha32 を呼び出す。
    Lha = True
  Else
    Lha = False
  End If

End Function


このサンプルコードでは、LHA コマンドを実行する関数 LHA を定義し、その中で unlha32.dll を呼び出しています。


LHA 関数に LHA.EXE のコマンドラインと同様の文字列を渡すことにより、圧縮・解凍をはじめ、LHA書庫ファイルに対する各種操作を行うことができます。


(このサンプルコードでは test.txt というファイルを圧縮し、test.lzh というファイルを作成しています)


操作の成功/失敗はブール値で返します。


LHA コマンドラインの詳細については LHA.EXE または unlha32.dll のヘルプなどを参照してください。