Unlha32.DLL, Zip32J.DLL呼び出し関数(TKInfo.dll)(Ver7.22対応版)
 LZHファイルを作成したり解凍したりするために、Unlha32.dllおよびZip32J.dllを呼び出す関数を用意しました。

注意:
 これらの関数は秀丸メールの32bit版でないと使えません。Unlha32.dllおよびZip32J.dllは32bit版しか用意されてないので、64bit版の秀丸メール上ではそれら32bit版のDLLはロードできず、LoadUnlhaDll関数などでエラーになってしまいます。64bit版/32bit版のどちらの秀丸メールからもZip圧縮できる用のマクロが「秀まるおのホームページ」の「ライブラリ」の中にアップロードされてるので、そちらの利用をお勧めします。
■Unlha32.dll用
LoadUnlhaDll
 返り値は数値、パラメータ無し。

 Unlha32.dllをロードします。成功すると1、失敗すると0を返します。


FreeUnlhaDll
 返り値もパラメータも無し。

 Unlha32.dllを解放します。


Unlha
 返り値は数値、パラメータ1が親ウィンドウハンドル、パラメータ2がコマンドライン。

 Unlha関数を呼び出します。パラメータ1にはhidemaruhandle(0)を渡し、パラメータ2にlha用のコマンドラインをそのまま渡してください。
 返り値は、Unlha32.dllのUnlha関数そのままです。詳しくはそちらを参照ください。


GetUnlhaResult
 返り値は文字列、パラメータ無し。

 Unlha関数を呼び出した結果文字列を返します。


■Zip32J.dll用
LoadZipDll
 返り値は数値、パラメータ無し。

 Zip32J.dllをロードします。成功すると1、失敗すると0を返します。


FreeZipDll
 返り値もパラメータも無し。

 Zip32J.dllを解放します。


Zip
 返り値は数値、パラメータ1が親ウィンドウハンドル、パラメータ2がコマンドライン。

 Zip関数を呼び出します。パラメータ1にはhidemaruhandle(0)を渡し、パラメータ2にlha用のコマンドラインをそのまま渡してください。
 返り値は、Zip32J.dllのZip関数そのままです。詳しくはそちらを参照ください。


GetZipResult
 返り値は文字列、パラメータ無し。

 Zip関数を呼び出した結果文字列を返します。


 一般には、LoadUnlhaDll関数を呼んでからUnlha関数を呼び、必要に応じてGetUnlhaResult関数で結果文字列を取得して、最後にFreeUnlhaDll関数でDLLを解放すればいいです。
例(LZHファイル)
if( ! dllfunc("LoadUnlhaDll") ) {
    message "Unlha32.dllがインストールされていません。";
    endmacro;
}
#n = dllfunc("Unlha", hidemaruhandle(0), "a \"c:\\test.lzh\" abc.txt xyz.txt");
$s = dllfuncstr("GetUnlhaResult");
#n = dllfunc("FreeUnlhaDll");
message $s;
例(ZIPファイル)
if( ! dllfunc("LoadZipDll") ) {
    message "Zip32J.dllまたはZIP32.DLLがインストールされていません。";
    endmacro;
}
#n = dllfunc("Zip", hidemaruhandle(0), "-j \"c:\\test.zip\" abc.txt xyz.txt");
$s = dllfuncstr("GetZipResult");
#n = dllfunc("FreeZipDll");
message $s;