SAK 図書館
VB テクニック編23 - LHA 圧縮解凍 unlha32.dll
■SAK 関数利用規程
・テクニック編で紹介する関数は、私こと Y.SAK の開発関数である。
・著作権明示部分の改編は認めない。
・個人、企業がこれらの関数を使用したり、一部を使用して新たなシステムや
プログラムを開発することは自由です。
・但し、これらの関数を一部でも使用しているソフトウェアをシェアウェア、
その他有償プロダクトとして配布・販売するには、私の許可が必要です。
(無償のフリーソフトウェアなら、自由に配布しても良い。)
・これらの関数を使用して発生した、いかなる形での損害も私こと Y.SAK は
賠償しません。
■LHA 圧縮解凍
・unlha32.dll を利用するには、次のようにする。
LHA パラメタ(para) には、DOS の lha.exe のコマンドラインと同等のもの
を渡せばよい。
尚、unlha32.dll の作者さんのドキュメントによると、マルチプロセスには
対応していないとのことである。
if LHA(HWND, "a g:\tmp\test.lzh g:\tmp\ *.sf") = false then
msgbox "LHA 圧縮エラー"
end if
if LHA(HWND, "a -x1 -r2 g:\tmp\test.lzh g:\tmp\ *.*") = false then
msgbox "LHA ディリクトリ付圧縮エラー"
end if
if LHA(HWND, "e g:\tmp\test.lzh g:\tmp\") = false then
msgbox "LHA 解凍エラー"
end if
if LHA(HWND, "x g:\tmp\test.lzh g:\tmp\") = false then
msgbox "LHA ディリクトリ付解凍エラー"
end if
if LHA(HWND, "e -c -m g:\tmp\test.lzh g:\tmp\") = false then
msgbox "LHA 上書き解凍エラー"
end if
if LHA(HWND, "x -c g:\tmp\test.lzh g:\tmp\") = false then
msgbox "LHA 上書きディリクトリ付解凍エラー"
end if
'** Unlha32 API 定義
Public Declare Function Unlha Lib "unlha32" (ByVal hWindows As Long, ByVal CmdLine As String, ByVal Console As String, ByVal size As Long) As Long
'=======================================================================
' LHA 圧縮解凍
'=======================================================================
'【引数】
' hwd = ウィンドウハンドル
' para = LHA パラメタ
'【戻り値】
' boolean = 処理結果
' TRUE = 正常終了
' FALSE = 異常終了
'【処理】
' ・LHA パラメタに従って、LZH の圧縮解凍を行う。
' ・圧縮パラメタ "a g:\tmp\test.lzh g:\tmp\ *.sf"
' | | | |_ 対象ファイル指定
' | | |_ ファイルのあるパス
' | |_ 圧縮先パス、ファイル名
' |_ 圧縮指定
' ・解凍パラメタ "e g:\tmp\test.lzh g:\tmp\"
' | | |_ 解凍先パス
' | |_ 対象パス、LZH ファイル名
' |_ 解凍指定
'=======================================================================
Public Function LHA(hwd As Variant, para As String) As Boolean
Dim rcd As Long
Dim cons As String
'** LHA 圧縮解凍
cons = Space(256)
rcd = Unlha(hwd, para, cons, LenB(cons))
If rcd <> 0 Then
LHA = False
Else
LHA = True
End If
End Function
■VB テクニック編資料
■VB 入門編資料
■VB 基礎編資料
■VB ビジュアル編資料