#uselib "unzip32"
#func UnZip "UnZip" nullptr, str, int, int
#func UnZipGetFileCount "UnZipGetFileCount" str
#func UnZipGetVersion "UnZipGetVersion"
; unzip32.dllが存在するか簡易チェック
if varptr(UnZipGetVersion) = 0 {
dialog "unzip32.dll が見つからん"
end
}
sdim filepath, 256
sdim outpath, 256
sdim szOutput,1024
; ZIPファイルのパス (例、Cドライブの直下にある場合)
filepath = "C:\\sample.zip"
mes "ZIPファイル : "+filepath+""
; 解凍したファイルの出力フォルダ
outpath = "C:\\"
mes "出力フォルダ : "+outpath+""
button "解凍", *unpack
button "情報", *info
button "ファイル数", *count
button "バージョン", *version
stop
; ZIPファイルの解凍
; 正常に終了すればstatに0が、エラーなら0以外が返ります。
; オプションとして、--i、-n、-o、-P*****、というようなものがあり、詳細は
; DLL同封の「UNZIP32D.TXT」を参照のこと。たとえば解凍状況ダイアログ非表示なら、
; (Ex) UnZip "--i \""+filepath+"\" 〜
*unpack
UnZip "\""+filepath+"\" \""+outpath+"\""
mes "解凍 : "+stat
stop
; ZIPファイル内の情報をszOutputに出力 (解凍処理なし)
; ファイルの内容の一覧表示(-l、-lv、-v)やCRCチェック(-t)などある。
*info
UnZip "-lv \""+filepath+"\"", varptr(szOutput), 1024
dialog ""+szOutput
stop
; ZIPファイル内に格納されているファイル数を取得
; ファイルが存在しない、ZIPファイルでない、書庫が壊れている、ような場合は
; -1が返るので、書庫チェック的なこととして利用可。
*count
UnZipGetFileCount filepath
mes "ファイル数 : "+stat+" コ"
stop
; unzip32.dllのバージョン取得
; 戻り値は下のような感じで返る。
; 75 -> Version 0.75 、100 -> Version 1.00 、540 -> Version 5.4
*version
UnZipGetVersion
value = stat
value = wpeek(value) ; これがないと2回目以降に正しく取得できない
mes "バージョン : "+value+" -> "+(value / 100)+"."+(value \ 100)+""
stop