================================================================================ 7-zip32.DLL Ver 9.22.00.01 API 説明ファイル ================================================================================ 秋田 稔 (2014/06/25) 高度の圧縮率で知られる7-Zipを統合アーカイバ仕様のDLLにしたものです。 7z形式の圧縮解凍および通常よりも圧縮率の高いZIP書庫を作成します。 An English document please refer to this one. (Thanks. M.R. Poeschl) http://www.csdinc.co.jp/archiver/lib/main-e.html -------------------------------------------------------------------------------- int WINAPI SevenZip(const HWND _hwnd, LPCSTR _szCmdLine, LPSTR _szOutput, const DWORD _dwSize) -------------------------------------------------------------------------------- 順序数 1 機能 圧縮・解凍等を行います。 引数 _hwnd 7-zip32.dll を呼び出すアプリのウィンドウハンドル。 7-zip32.dll は実行時にこのウィンドウに対して EnableWindow() を実行しウィンドウの動作を抑制します。 ウィンドウが存在しないコンソールアプリの場合や、 指定する必要のない場合は NULL を渡します。 _szCmdLine 7-zip32.dll に渡すコマンド文字列。 _szOutput 7-zip32.dll が結果を返すためのバッファ。 グローバルメモリー 等の場合はロックされている必要が あります。 _dwSize バッファのサイズ。 結果が指定サイズを越える場合は、このサイズに 切り詰められます。 サイズが 1 以上であれば、常に最後に NULL 文字が 付加されます。 戻り値 正常終了の時 0。 エラー発生時 0 以外の数。 エラー値は未検証。 -------------------------------------------------------------------------------- WORD WINAPI SevenZipGetVersion(VOID) -------------------------------------------------------------------------------- 順序数 2 機能 7-zip32.dll のバージョンを返します。 戻り値 現在のバージョンの上位 2 ワードに 100 を掛けたものが返ってきます。 例) 2.30 -> 230 下位 2 ワードを得るには,SevenZipGetSubVersion() を使用します。 その他 版数は取り合えずですが以下のようにしています。 2.30.18.01|a : 本家 7-zip のメジャーバージョン。 a.bb.cc.dd|bb : 本家 7-zip のマイナーバージョン。 |cc : 本家 7-zip のベータバージョン。(現在は未使用) |dd : 7-zip32.dll のリリース番号(本家が上がれば 01 に戻る) -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetCursorMode(VOID) -------------------------------------------------------------------------------- 順序数 3 機能 7-zip32.dll の動作中にカーソルを表示するモードか否かを得ます。 戻り値 TRUE カーソル表示モード。 FALSE カーソル非表示モード。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipSetCursorMode(const BOOL _CursorMode) -------------------------------------------------------------------------------- 順序数 4 機能 7-zip32.dll の動作中にカーソルを表示するモードか否かを設定します。 7-zip32.dll では値は保存しますが、動作に影響はありません。 引数 _CursorMode 設定するカーソルモード。 TRUE カーソル表示モード。 FALSE カーソル非表示モード。 戻り値 常に TRUE を返す。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetBackGroundMode(VOID) -------------------------------------------------------------------------------- 順序数 5 機能 7-zip32.dll がバックグラウンドモードか否かを得ます。 戻り値 TRUE バックグラウンドモード。 FALSE 非バックグラウンドモード。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipSetBackGroundMode(const BOOL _BackGroundMode) -------------------------------------------------------------------------------- 順序数 6 機能 7-zip32.dll のバックグラウンドモードを設定します。 7-zip32.dll では値は保存しますが、動作に影響はありません。 引数 bBackGroundMode 設定するバックグラウンドモード。 TRUE バックグラウンドモード FALSE 非バックグラウンドモード 戻り値 常に TRUE を返す。 -------------------------------------------------------------------------------- WORD WINAPI SevenZipGetCursorInterval(VOID) -------------------------------------------------------------------------------- 順序数 7 機能 カーソルの回転速度を得ます。 戻り値 カーソルの回転速度(msec) -------------------------------------------------------------------------------- BOOL WINAPI SevenZipSetCursorInterval(const WORD _Interval) -------------------------------------------------------------------------------- 順序数 8 機能 カーソルの回転速度を設定します。 7-zip32.dll では値は保存しますが、動作に影響はありません。 引数 _Interval カーソルの回転速度(msec) デフォルトは 80 (msec) です。 戻り値 常に TRUE を返す。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetRunning(VOID) -------------------------------------------------------------------------------- 順序数 10 機能 現在 7-zip32.dll が動作中か否かを得ます。 アプリケーション側は必ず圧縮/解凍等のファイルアクセスを伴うAPIを 実行する前には、これにより実行可能かをチェックする必要があります。 戻り値 TRUE 実行中です。 FALSE 実行中ではない(実行可能)。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipConfigDialog(const HWND _hwnd, LPSTR _szOptionBuffer, const int _iMode) -------------------------------------------------------------------------------- 順序数 11 機能 解凍のオプション指定ダイアログの表示。 引数 _hwnd 7-zip32.dll を呼び出すアプリのウィンドウハンドル。 _szOptionBuffer 現時点では無視。NULL を指定。 _iMode 現時点では無視。0 を指定。 戻り値 ERROR_ALREADY_RUNNING 7-zip32.dll が既に実行中の時。 TRUE 設定が成功した時。 FALSE 設定が出来なかった(されなかった)時 または取消終了時。 その他 現時点ではバージョン情報を表示します。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipCheckArchive(LPCSTR _szFileName, const int _iMode) -------------------------------------------------------------------------------- 順序数 12 機能 指定ファイルがサポートしている書庫ファイルとして 正しいかどうかを返します。 引数 _szFileName チェックすべき書庫ファイルのファイル名。 _iMode チェックモード。 CHECKARCHIVE_RAPID 簡易モード。 (0) ヘッダのチェックだけ行います。ヘッダが暗号化されて いてもパスワードを求めません。 場合によってはサポートされていない場合も正しい書庫 として返す場合があります。 設定していてヘッダが正常ならば TRUE を返します。 CHECKARCHIVE_BASIC 通常モード。 (1) 簡易モードとは異なり、正しい書庫か判断します。 ヘッダが暗号化されている場合はパスワードを求めます。 CHECKARCHIVE_FULLCRC 厳密モード。 (2) 格納ファイルの CRC もチェックします。 書庫のテストを行うので処理が完了するまでに長い時間を 要する場合があります。 戻り値 TRUE 正しい書庫ファイルの時。 FALSE ファイルが不正の時。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- int WINAPI SevenZipGetArchiveType(LPCSTR _szFileName) -------------------------------------------------------------------------------- 順序数 13 機能 指定したアーカイブファイルの形式を得ます。 引数 _szFileName チェックすべき書庫ファイルのファイル名。 戻り値 ARCHIVETYPE_ZIP (1) ZIP形式 ARCHIVETYPE_7Z (2) 7Z形式 0 7-zip32.dll で利用できない形式 -1 エラー SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- int WINAPI SevenZipGetFileCount(LPCSTR _szArcFile) -------------------------------------------------------------------------------- 順序数 17 機能 指定された書庫ファイルに格納されているファイル数を得ます。 引数 _szArcFile 格納ファイル数を得たい書庫ファイル名。 戻り値 格納ファイル数を得る。エラーのときは -1 を返す。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipQueryFunctionList(const int _iFunction) -------------------------------------------------------------------------------- 順序数 18 機能 指定された API が 7-zip32.dll で使用可能かどうかを得ます。 アプリケーション側は目的の機能(API)が有効であるかどうか、 事前にチェックするようにしてください。 引数 _iFunction API を示す一意な数値。 具体的な数値については 7-zip32.h を参照して下さい。 戻り値 TRUE 使用可能。 FALSE 使用出来ない、または _iFunction は無効な値。 -------------------------------------------------------------------------------- HARC WINAPI SevenZipOpenArchive(const HWND _hwnd, LPCSTR _szFileName, const DWORD _dwMode) -------------------------------------------------------------------------------- 順序数 21 機能 指定ファイルが 7-zip32.dll に有効な書庫ファイルかどうか調べ、 有効であればオープンし、一意の数値(ハンドル)を返します。 以後の書庫ファイルへのアクセスはこのハンドルでおこないます。 DLL を開放する際に自動的にハンドルは閉じられますが 終了の際は、一応 SevenZipCloseArchive() で閉じてください。 引数 _hwnd 7-zip32.dll を呼び出すアプリのウィンドウハンドル。 _szFileName 書庫ファイル名。 _dwMode 処理モードを指定するフラグ。 M_ERROR_MESSAGE_ON 書庫ヘッダが暗号化されている場合 パスワードを問い合わせるダイアログを表示します。 但し SevenZipSetDefaultPassword() にてグローバルなパスワードが 設定されている場合はそのパスワードを書庫に関連付け使用します。 この時パスワードが間違ってても書庫のハンドルを返します。 フラグを指定していない場合はパスワード未設定のまま開きます。 M_CHECK_ALL_PATH ファイル名の検索時に全パスを使用して検索します。("-r") M_CHECK_FILENAME_ONLY 検索時にファイル名のみを対象とします。デフォルト。("-r-") M_CHECK_ALL_PATH と同時に使用するとワイルドカード名に付いては 全パスを使用して検索します。("-r0") 戻り値 指定の書庫ファイルに対応したハンドル。エラー時は NULL を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 その他 7-zip32.dll は、同時に複数のハンドルを利用することが可能です。 -------------------------------------------------------------------------------- int WINAPI SevenZipCloseArchive(HARC _harc) -------------------------------------------------------------------------------- 順序数 22 機能 SevenZipOpenArchive() で割り付けたハンドルを解放します。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 正常終了時に 0 、異常時には -1 が返ります。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- int WINAPI SevenZipFindFirst(HARC _harc, LPCSTR _szWildName, INDIVIDUALINFO *_lpSubInfo) -------------------------------------------------------------------------------- 順序数 23 機能 最初の格納ファイルの情報を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _szWildName 検索するファイル名の指定。 ワイルドカード指定が可能。 ファイル名はスペース区切りで複数指定が可能。 _lpSubInfo 結果を返すための INDIVIDUALINFO 構造体へのポインタ。 結果を必要としない場合は NULL を指定できます。 戻り値 0 正常終了。 _lpSubInfo で指定された構造体に格納ファイルの情報をセット。 -1 検索終了。 0,-1 以外 エラー終了。エラーコードを返します。 その他 書庫のヘッダが暗号化されていて SevenZipSetDefaultPassword() にてパスワードが 設定されていない場合はパスワードを問い合わせるダイアログを表示します。 パスワードが設定されている場合はそのパスワードを使用します。 この時パスワードが間違っていると ERROR_PASSWORD_FILE を返します。 -------------------------------------------------------------------------------- int WINAPI SevenZipFindNext(HARC _harc, INDIVIDUALINFO *_lpSubInfo) -------------------------------------------------------------------------------- 順序数 24 機能 直前の SevenZipFindFirst() または SevenZipFindNext() の 次の格納ファイルの情報を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpSubInfo 結果を返すための INDIVIDUALINFO 構造体へのポインタ。 結果を必要としない場合は NULL を指定できます。 戻り値 0 正常終了。 _lpSubInfo で指定された構造体に格納ファイルの情報をセット。 -1 検索終了。 0,-1 以外 エラー終了。エラーコードを返します。 -------------------------------------------------------------------------------- int WINAPI SevenZipGetArcFileName(HARC _harc, LPSTR _lpBuffer, int _nSize) -------------------------------------------------------------------------------- 順序数 31 機能 書庫ファイル名を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpBuffer ファイル名を格納するバッファ。 _nSize バッファのサイズ。 戻り値 正常終了時に 0 、異常時にはエラーコード( 0 以外)が返ります。 -------------------------------------------------------------------------------- DWORD WINAPI SevenZipGetArcFileSize(HARC _harc) -------------------------------------------------------------------------------- 順序数 32 機能 書庫ファイルのサイズを得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 書庫ファイルのサイズ。エラー時には -1 を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- DWORD WINAPI SevenZipGetArcOriginalSize(HARC _harc) -------------------------------------------------------------------------------- 順序数 33 機能 現時点までの検索(SevenZipFindFirst() 及び SevenZipFindNext() )に マッチしたファイルの(解凍後の)サイズの合計を得ます。 SevenZipFindNext() の検索が終了した後では、 書庫ファイル中の検索で一致した全ファイルの合計値となります。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 合計サイズ。エラー時には -1 を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- DWORD WINAPI SevenZipGetArcCompressedSize(HARC _harc) -------------------------------------------------------------------------------- 順序数 34 機能 検索にマッチしたファイルの圧縮サイズの合計を得ます。 その他詳細は SevenZipGetArcOriginalSize() に準じます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 圧縮サイズの合計。エラー時若しくはソリッド書庫の場合は -1 を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 注意 書庫がソリッド書庫か判別するには戻り値ではエラーと識別できない為 SevenZipGetArcCompressedSizeEx を使用するか SevenZipGetLastError でエラーの詳細を確認して下さい。 -------------------------------------------------------------------------------- WORD WINAPI SevenZipGetArcRatio(HARC _harc) -------------------------------------------------------------------------------- 順序数 35 機能 検索にマッチしたファイルの全体の圧縮率を得ます。 その他詳細は SevenZipGetArcOriginalSize() に準じます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 全体の圧縮率(パーミル)。エラー時には -1。 ソリッド書庫の場合は 0 を返す。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- WORD WINAPI SevenZipGetArcDate(HARC _harc) -------------------------------------------------------------------------------- 順序数 36 機能 書庫ファイルの日付を DOS 形式 (ローカルタイム) で得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 書庫ファイルの日付。エラー時には -1。 形式は MSDOS のタイムスタンプに準じます。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- WORD WINAPI SevenZipGetArcTime(HARC _harc) -------------------------------------------------------------------------------- 順序数 37 機能 書庫ファイルの時刻を DOS 形式 (ローカルタイム) で得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 書庫ファイルの時刻。エラー時には -1。 形式は MSDOS のタイムスタンプに準じます。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- UINT WINAPI SevenZipGetArcOSType(HARC _harc) -------------------------------------------------------------------------------- 順序数 38 機能 書庫ファイル作成に使用された OS の種類を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 OS の種類を示す数値。 0 : MS-DOS 1 : PRIMOS 2 : UNIX 3 : AMIGA 4 : MAC-OS 5 : OS/2 6 : APPLE GS 7 : ATARI ST 8 : NEXT 9 : VAX VMS 10: その他。 11: OS9 12: OS/68K 13: OS/386 14: HUMAN 15: CP/M 16: FLEX 17: Runser 18: VM CMS 19: Z SYSTEM 20: TOPS20 21: Windows NTFS -1: エラー。 ※ 現時点ではエラー時以外は必ず 0 を返します。 -------------------------------------------------------------------------------- int WINAPI SevenZipIsSFXFile(HARC _harc) -------------------------------------------------------------------------------- 順序数 39 機能 書庫ファイルが自己解凍ファイルかどうかを調べます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 0 通常の書庫ファイル。 1 自己解凍ファイル。 -1 エラー。 ※ 現時点ではエラー時以外は必ず 0 を返します。 -------------------------------------------------------------------------------- int WINAPI SevenZipGetFileName(HARC _harc, LPCSTR _lpBuffer, int _nSize) -------------------------------------------------------------------------------- 順序数 40 機能 格納ファイルのファイル名を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpBuffer ファイル名を格納するバッファ。 _nSize バッファのサイズ。 戻り値 正常終了時には 0 が返され、_lpBuffer にファイル名が格納されます。 SevenZipGetLastError にてエラーの詳細を得られます。 その他 「格納ファイル」とは、直前の検索(SevenZipFindFirst() 又は SevenZipFindNext() )にマッチしたファイルを示します。 以下の各 API でも同様です。 -------------------------------------------------------------------------------- DWORD WINAPI SevenZipGetOriginalSize(HARC _harc) -------------------------------------------------------------------------------- 順序数 41 機能 格納ファイルの(解凍後の)サイズを得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 格納ファイルのサイズ。エラー時は -1。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- DWORD WINAPI SevenZipGetCompressedSize(HARC _harc) -------------------------------------------------------------------------------- 順序数 42 機能 格納ファイルの圧縮サイズを得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 格納ファイルの圧縮サイズ。エラー時は -1。 ソリッド書庫の場合は 0 を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- WORD WINAPI SevenZipGetRatio(HARC _harc) -------------------------------------------------------------------------------- 順序数 43 機能 格納ファイルの圧縮率を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 格納ファイルの圧縮率(パーミル)。エラー時は -1。 ソリッド書庫の場合は 0 を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- WORD WINAPI SevenZipGetDate(HARC _harc) -------------------------------------------------------------------------------- 順序数 44 機能 格納ファイルの日付を DOS 形式 (ローカルタイム) で得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 格納ファイルの日付。エラー時は -1。 形式は MSDOS のタイムスタンプに準じます。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- WORD WINAPI SevenZipGetTime(HARC _harc) -------------------------------------------------------------------------------- 順序数 45 機能 格納ファイルの時刻を DOS 形式 (ローカルタイム) で得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 格納ファイルの時刻。エラー時は -1。 形式は MSDOS のタイムスタンプに準じます。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- DWORD WINAPI SevenZipGetCRC(HARC _harc) -------------------------------------------------------------------------------- 順序数 46 機能 格納ファイルのチェックコード( CRC やチェックサム等)を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 格納ファイルのチェックコード。エラー時は -1。 SevenZipGetLastError にてエラーの詳細を得られます。 その他 取得された結果が 0xFFFFFFFF(-1) の場合、エラーと同一になってしまいます。 本当にエラーかどうかは SevenZipGetLastError で確認できます。 -------------------------------------------------------------------------------- int WINAPI SevenZipGetAttribute(HARC _harc) -------------------------------------------------------------------------------- 順序数 47 機能 格納ファイルの属性を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 格納ファイルの属性。以下の各ビットをオア(|)接続したもの。 エラー時は -1。 SevenZipGetLastError にてエラーの詳細を得られます。 0x01 FA_RDONLY 読み込み専用ファイル。 0x02 FA_HIDDEN 不可視属性ファイル。 0x04 FA_SYSTEM システムファイル。 0x08 FA_LABEL ボリュームラベル。 0x10 FA_DIREC ディレクトリ。 0x20 FA_ARCH 保存ビット。 0x40 FA_ENCRYPTED パスワード保護されたファイル。 -------------------------------------------------------------------------------- UINT WINAPI SevenZipGetOSType(HARC _harc) -------------------------------------------------------------------------------- 順序数 48 機能 格納ファイルが作成された OS を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 OS を示す数値。 詳細は SevenZipGetArcOSType() を参照。 ※ 現時点ではエラー時以外は必ず 0 を返します。 -------------------------------------------------------------------------------- int WINAPI SevenZipGetMethod(HARC _harc, LPSTR _lpBuffer, const int _nSize) -------------------------------------------------------------------------------- 順序数 61 機能 格納ファイルの圧縮法を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpBuffer メソッド名を格納するバッファ。 _nSize バッファのサイズ。 戻り値 正常終了時には 0 が返され、_lpBuffer に圧縮法式を示す文字列が格納されます。 _nSize が 8 の時は INDIVIDUALINFO 構造体の szMode と同じ物が 格納されますが、それ以外の場合はより詳しい情報が格納されます。 但し、バッファに入りきらない分は切り捨てられエラーを返します。 SevenZipGetLastError にてエラーの詳細を得られます。 例) szMode | _lpBuffer (_nSize != 8) --------+------------------------ LZMA | LZMA:20 PPMD | PPMD:o6:mem24 -------------------------------------------------------------------------------- DWORD WINAPI SevenZipGetWriteTime(HARC _harc) -------------------------------------------------------------------------------- 順序数 62 機能 格納ファイルの最終更新日時 (UTC) を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 格納ファイルの UNIX 形式の UTC による更新日時。エラー時は -1。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- DWORD WINAPI SevenZipGetCreateTime(HARC _harc) -------------------------------------------------------------------------------- 順序数 63 機能 格納ファイルの作成日時 (UTC) を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 格納ファイルの UNIX 形式の UTC による作成日時。エラー時は -1。 SevenZipGetLastError にてエラーの詳細を得られます。 注意 書庫に作成日時の情報が記録されていない場合は更新日時を返し SevenZipGetLastError に ERROR_GET_TIME が設定されます。 -------------------------------------------------------------------------------- DWORD WINAPI SevenZipGetAccessTime(HARC _harc) -------------------------------------------------------------------------------- 順序数 64 機能 格納ファイルの参照日時 (UTC) を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 戻り値 格納ファイルの UNIX 形式の UTC による参照日時。エラー時は -1。 SevenZipGetLastError にてエラーの詳細を得られます。 注意 書庫に参照日時の情報が記録されていない場合は更新日時を返し SevenZipGetLastError に ERROR_GET_TIME が設定されます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetWriteTimeEx(HARC _harc, FILETIME *_lpftLastWriteTime) -------------------------------------------------------------------------------- 順序数 65 機能 格納ファイルの最終更新日時 (UTC) を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpftLastWriteTime 情報を格納する FILETIME 構造体へのポインタ。 戻り値 正常終了時は TRUE を、そうでない場合は FALSE を返し、 指定された FILETIME 構造体に最終更新日時を格納します。 FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の 経過時間を 64bit の数値で表したものです。 詳しくは Win32 API のヘルプ等を参照してください。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetCreateTimeEx(HARC _harc, FILETIME *_lpftCreationTime) -------------------------------------------------------------------------------- 順序数 66 機能 格納ファイルの作成日時 (UTC) を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpftCreationTime 情報を格納する FILETIME 構造体へのポインタ。 戻り値 正常終了時は TRUE を、そうでない場合は FALSE を返し、 指定された FILETIME 構造体に最終更新日時を格納します。 FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の 経過時間を 64bit の数値で表したものです。 詳しくは Win32 API のヘルプ等を参照してください。 SevenZipGetLastError にてエラーの詳細を得られます。 注意 書庫に作成日時の情報が記録されていない場合は更新日時を格納し TRUE を 返しますが SevenZipGetLastError に ERROR_GET_TIME が設定されます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetAccessTimeEx(HARC _harc, FILETIME *_lpftLastAccessTime) -------------------------------------------------------------------------------- 順序数 67 機能 格納ファイルの参照日時 (UTC) を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpftLastAccessTime 情報を格納する FILETIME 構造体へのポインタ。 戻り値 正常終了時は TRUE を、そうでない場合は FALSE を返し、 指定された FILETIME 構造体に最終更新日時を格納します。 FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の 経過時間を 64bit の数値で表したものです。 詳しくは Win32 API のヘルプ等を参照してください。 SevenZipGetLastError にてエラーの詳細を得られます。 注意 書庫に参照日時の情報が記録されていない場合は更新日時を格納し TRUE を 返しますが SevenZipGetLastError に ERROR_GET_TIME が設定されます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetArcCreateTimeEx(HARC _harc, FILETIME *_lpftCreationTime) -------------------------------------------------------------------------------- 順序数 68 機能 書庫の作成日時 (UTC) を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpftCreationTime 情報を格納する FILETIME 構造体へのポインタ。 戻り値 正常終了時は TRUE を、そうでない場合は FALSE を返し、 指定された FILETIME 構造体に最終更新日時を格納します。 FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の 経過時間を 64bit の数値で表したものです。 詳しくは Win32 API のヘルプ等を参照してください。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetArcAccessTimeEx(HARC _harc, FILETIME *_lpftLastAccessTime) -------------------------------------------------------------------------------- 順序数 69 機能 書庫の参照日時 (UTC) を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpftLastAccessTime 情報を格納する FILETIME 構造体へのポインタ。 戻り値 正常終了時は TRUE を、そうでない場合は FALSE を返し、 指定された FILETIME 構造体に最終更新日時を格納します。 FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の 経過時間を 64bit の数値で表したものです。 詳しくは Win32 API のヘルプ等を参照してください。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetArcWriteTimeEx(HARC _harc, FILETIME *_lpftLastWriteTime) -------------------------------------------------------------------------------- 順序数 70 機能 書庫の最終更新日時 (UTC) を得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpftLastWriteTime 情報を格納する FILETIME 構造体へのポインタ。 戻り値 正常終了時は TRUE を、そうでない場合は FALSE を返し、 指定された FILETIME 構造体に最終更新日時を格納します。 FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の 経過時間を 64bit の数値で表したものです。 詳しくは Win32 API のヘルプ等を参照してください。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipSetOwnerWindow(HWND _hwnd) -------------------------------------------------------------------------------- 順序数 90 機能 7-zip32.dll のメッセージの送信先ウィンドウを設定します。 7-zip32.dll はここで指定されたウィンドウに圧縮解凍状況を知らせる メッセージを送信します。メッセージの詳細については 下記「ウィンドウズ・メッセージ」を参照。 引数 _hwnd メッセージを受け取るウィンドウのハンドル 戻り値 正常終了の場合 TRUE を返します。 動作中で変更できなかった場合や、既にこの API で別のウィンドウが 設定されている場合には FALSE を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipClearOwnerWindow(VOID) -------------------------------------------------------------------------------- 順序数 91 機能 SevenZipSetOwnerWindow() で設定したウィンドウの設定を解除します。 戻り値 正常終了の場合 TRUE を返します。 動作中で変更できなかった場合には FALSE を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipSetOwnerWindowEx(HWND _hwnd, LPARCHIVERPROC _lpArcProc) -------------------------------------------------------------------------------- 順序数 92 機能 7-zip32.dll の圧縮解凍状況を受け取るためのコールバック関数の指定を行います。 _lpArcProc に NULL を指定すると _hwnd で指定したウィンドウに メッセージを送出します(SevenZipSetOwnerWindow(_hwnd)と同じ)。 引数 _hwnd メッセージを受け取るウィンドウのハンドル。 _lpArcProc 処理を渡すコールバック関数のポインタ。 戻り値 正常終了の場合 TRUE を返します。 動作中で変更できなかった場合や、既にこの API で別のウィンドウが 設定されている場合には FALSE を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipKillOwnerWindowEx(HWND _hwnd) -------------------------------------------------------------------------------- 順序数 93 機能 SevenZipSetOwnerWindowEx() で設定したウィンドウの設定を解除します。 戻り値 正常終了の場合 TRUE を返します。 動作中で変更できなかった場合や指定した _hwnd が現在の設定と 一致しない場合には FALSE を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- WORD WINAPI SevenZipGetSubVersion(VOID) -------------------------------------------------------------------------------- 順序数 94 機能 7-zip32.dll のバージョンを返します。 戻り値 現在のバージョンの下位 2 ワードに 100 を掛けたものが返ってきます。 例) 4.01 -> 401 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetArcFileSizeEx(HARC _harc, ULHA_INT64 *_lpllSize) -------------------------------------------------------------------------------- 順序数 103 機能 書庫ファイルのサイズを 64 ビット整数で得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpllSize 情報を格納するためのバッファへのポインタ。 VC++ や C++ Builder 5.x 等では実体は LONGLONG となっています。 BC++ 等 64ビット整数として LONGLONG を扱えない コンパイラを使用する場合には、(アラインメントのない) LARGE_INTEGER 等で代用してください。 戻り値 正常終了時は TRUE。エラー時には FALSE を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 注意 格納ファイルの合計サイズではなく、書庫そのもののサイズであることに 注意してください。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetArcOriginalSizeEx(HARC _harc, ULHA_INT64 *_lpllSize) -------------------------------------------------------------------------------- 順序数 104 機能 検索にマッチしたファイルのサイズの合計を 64 ビット整数で得ます。 SevenZipFindNext() の検索が終了した後でないと返却値に意味はありません。 検索中の場合はそれまでにマッチしたファイルの合計となります。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpllSize 情報を格納するためのバッファへのポインタ。 VC++ や C++ Builder 5.x 等では実体は LONGLONG となっています。 BC++ 等 64ビット整数として LONGLONG を扱えない コンパイラを使用する場合には、(アラインメントのない) LARGE_INTEGER 等で代用してください。 戻り値 正常終了時は TRUE。エラー時には FALSE を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 注意 SevenZipFindNext() の検索が終了してから呼び出すようにしてください。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetArcCompressedSizeEx(HARC _harc, ULHA_INT64 *_lpllSize) -------------------------------------------------------------------------------- 順序数 105 機能 検索にマッチしたファイルの圧縮サイズの合計を64 ビット整数で得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpllSize 情報を格納するためのバッファへのポインタ。 VC++ や C++ Builder 5.x 等では実体は LONGLONG となっています。 BC++ 等 64ビット整数として LONGLONG を扱えない コンパイラを使用する場合には、(アラインメントのない) LARGE_INTEGER 等で代用してください。 戻り値 正常終了時は TRUE。エラー時には FALSE を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 注意 SevenZipFindNext() の検索が終了してから呼び出すようにしてください。 但し、ソリッド書庫か判定する場合はこの限りではありません。 TRUE が返り _lpllSize に -1 が格納されていればソリッド書庫です。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetOriginalSizeEx(HARC _harc, ULHA_INT64 *_lpllSize) -------------------------------------------------------------------------------- 順序数 106 機能 格納ファイルのサイズを 64 ビット整数で得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpllSize 情報を格納するためのバッファへのポインタ。 VC++ や C++ Builder 5.x 等では実体は LONGLONG となっています。 BC++ 等 64ビット整数として LONGLONG を扱えない コンパイラを使用する場合には、(アラインメントのない) LARGE_INTEGER 等で代用してください。 戻り値 正常終了時は TRUE。エラー時には FALSE を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipGetCompressedSizeEx(HARC _harc, ULHA_INT64 *_lpllSize) -------------------------------------------------------------------------------- 順序数 107 機能 格納ファイルの圧縮サイズを 64 ビット整数で得ます。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 _lpllSize 情報を格納するためのバッファへのポインタ。 VC++ や C++ Builder 5.x 等では実体は LONGLONG となっています。 BC++ 等 64ビット整数として LONGLONG を扱えない コンパイラを使用する場合には、(アラインメントのない) LARGE_INTEGER 等で代用してください。 戻り値 正常終了時は TRUE。エラー時には FALSE を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipSetOwnerWindowEx64(HWND _hwnd, LPARCHIVERPROC _lpArcProc, DWORD _dwStructSize) -------------------------------------------------------------------------------- 順序数 108 機能 7-zip32.dll の圧縮解凍状況を受け取るためのコールバック関数の指定を行います。 _lpArcProc に NULL を指定すると _hwnd で指定したウィンドウに メッセージを送出します(SevenZipSetOwnerWindow(_hwnd)と同じ)。 引数 _hwnd メッセージを受け取るウィンドウのハンドル。 _lpArcProc 処理を渡すコールバック関数のポインタ。 _dwStructSize 使用する構造体のサイズを指定。 EXTRACTINGINFOEX, EXTRACTINGINFOEX32, EXTRACTINGINFOEX64 の内のどれかのサイズ。 戻り値 正常終了の場合 TRUE を返します。 動作中で変更できなかった場合や、既にこの API で別のウィンドウが 設定されている場合には FALSE を返します。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipKillOwnerWindowEx64(HWND _hwnd) -------------------------------------------------------------------------------- 順序数 109 機能 SevenZipSetOwnerWindowEx64() で設定したウィンドウの設定を解除します。 戻り値 正常終了の場合 TRUE を返します。 動作中で変更できなかった場合や指定した _hwnd が現在の設定と 一致しない場合には FALSE を返します。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipSetPriority(const int _nPriority) -------------------------------------------------------------------------------- 順序数 119 機能 7-zip32.dll の優先順位 (プライオリティ) を指定します。 引数 _nPriority 優先順位。 WindowsAPI の SetThreadPriority() で指定する値と同じです。 戻り値 正常終了時は TRUE。エラー時には FALSE を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 その他 UNLHA32.DLL の UnlhaSetPriority() と同様な機能になりますが SetThreadPriority() で指定できる以外の優先順位を指定しても意味は有りません。 そして、通常より低い優先度を指定しても Sleep() API を呼びだしてウエイトを 入れていないので CPU の負荷は最大になります。 圧縮/解凍時の経過ダイアログでバックグラウンドのボタンを押すと ここでの設定にかかわらず優先度を THREAD_PRIORITY_IDLE に切り替え 解除するとこの API で指定した優先度に戻ります。 THREAD_PRIORITY_IDLE を指定していた場合はバックグラウンドを設定した 状態で実行され、解除すると THREAD_PRIORITY_NORMAL に設定されます。 -------------------------------------------------------------------------------- int WINAPI SevenZipGetLastError(LPDWORD _lpdwSystemError) -------------------------------------------------------------------------------- 順序数 123 機能 7-zip32.dll の最新のエラーコードを取得します。 引数 _lpdwSystemError 7-zip32.dll がエラーコードを設定した時点でのシステムの エラーコード (GetLastError() API を実行して得られたもの) を格納するためのバッファへのポインタ。 不要な場合は NULL を指定する事が出来ます。 戻り値 7-zip32.dll の最新のエラーコードが返されます。 一部の API では正常終了しても 0 以外が設定される場合があります。 注意 7-zip32.dll は,各 API の実行開始時に内部的に保持しているエラーコードの クリアを行います。 -------------------------------------------------------------------------------- int WINAPI SevenZipSetDefaultPassword(HARC _harc, LPCSTR _szPassword) -------------------------------------------------------------------------------- 順序数 178 機能 書庫の情報を得る際に使用する標準パスワードを設定します。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 NULL を指定するとグローバルなパスワードが設定されます。 _szPassword 標準として設定したいパスワード。 NULL を設定すると設定が解除されます。 戻り値 正常終了時は 0。エラー時にはその他を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 その他 書庫のヘッダが暗号化されていた場合、SevenZipOpenArchive() 等で書庫の 情報を得ようとするとパスワードを求めるダイアログが表示されますが あらかじめ設定しておけばその動作を抑制できます。 グローバルなパスワードは全ての書庫に於いてそのパスワードが使用されます。 ただし、別に _harc に関連付けられたパスワードが設定されている場合 その書庫に対しては関連付けられたパスワードが使用されます。 パスワードを解除する場合に空の文字列を指定しても空の文字列と言う パスワードが設定されるので解除する事はできません。 この API にてパスワードを設定しても SevenZip() にてコマンドを送る際には 影響は有りません。明示的に -p スイッチで指定する必要が有ります。 SevenZipOpenArchive() 後に連続してファイルの抽出等を行いたい場合は 書庫のハンドルを閉じる前に SevenZipGetDefaultPassword() でパスワードを 取得して、コマンドに -p スイッチを付けて送信してください。 -------------------------------------------------------------------------------- DWORD WINAPI SevenZipGetDefaultPassword(HARC _harc, LPSTR _szPassword, DWORD _dwSize) -------------------------------------------------------------------------------- 順序数 179 機能 書庫の情報を得る際に使用する標準パスワードを取得します。 引数 _harc SevenZipOpenArchive() で返されたハンドル。 NULL を指定するとグローバルなパスワードを取得します。 _szPassword 標準パスワードを格納するバッファ。 _dwSize バッファのサイズ。 戻り値 正常終了時は 0。エラーまたは標準パスワードが設定されていないときは -1。 バッファの容量不足の際は必要なバイト数を返します。 SevenZipGetLastError にてエラーの詳細を得られます。 // ここまでチェック -------------------------------------------------------------------------------- int WINAPI SevenZipPasswordDialog(HWND _hwnd, LPSTR _szBuffer, DWORD _dwSize) -------------------------------------------------------------------------------- 順序数 180 機能 7-zip32.dll 標準のパスワード入力ダイアログを表示します。 引数 _hwnd 7-zip32.dll を呼び出すアプリのウィンドウハンドル。 _szPassword 標準パスワードを格納するバッファ。 _dwSize バッファのサイズ。 戻り値 正常終了時は 0。キャンセルされた場合は -1。 エラー時はその他を返します。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipSetUnicodeMode(BOOL _bUnicode) -------------------------------------------------------------------------------- 順序数 200 機能 使用する文字コードを UTF-8 に設定、及び解除を行います。 引数 _bUnicode TRUE を設定すると UTF-8 が使用されます。 FALSE を設定すると OEM コードセットが使用されます。 戻り値 正常終了時は TRUE。エラー時には FALSE を返します。 -------------------------------------------------------------------------------- int WINAPI SevenZipSfxConfigDialog(HWND _hwnd, LPSTR _szBuffer, DWORD _dwSize) -------------------------------------------------------------------------------- 順序数 210 機能 7-zip32.dll 標準の SFX 設定ダイアログを表示します。 引数 _hwnd 7-zip32.dll を呼び出すアプリのウィンドウハンドル。 _szBuffer SFX 設定ファイルのテキストを格納するバッファ。 常に UTF-8 文字列で格納されます。 _dwSize バッファのサイズ。 戻り値 正常終了時は 0。キャンセルされた場合は -1。 エラー時はその他を返します。 -------------------------------------------------------------------------------- BOOL WINAPI SevenZipSfxFileStoring(LPCSTR _szFileName) -------------------------------------------------------------------------------- 順序数 211 機能 7-zip32.dll 内蔵 SFX モジュールをファイルに保存します。 引数 _szFileName SFX モジュールを保存するファイル名。 戻り値 正常終了時は TRUE。既にファイルが存在する等エラー時には FALSE を返します。 -------------------------------------------------------------------------------- INDIVIDUALINFO の構造 -------------------------------------------------------------------------------- 構造体定義 typedef struct { DWORD dwOriginalSize; DWORD dwCompressedSize; DWORD dwCRC; UINT uFlag; UINT uOSType; WORD wRatio; WORD wDate; WORD wTime; char szFileName[FNAME_MAX32 + 1]; char dummy1[3]; char szAttribute[8]; char szMode[8]; } INDIVIDUALINFO; メンバの説明 dwOriginalSize ファイルのサイズ。 dwCompressedSize 圧縮後のサイズ。 dwCRC ファイルのチェックサム用 CRC。 uFlag 7-zip32.dll では常に 0。 uOSType ファイルを格納した際に使われた OS。 現状では常に 0。 wRatio パーミル (千分率) で表された圧縮率。 ソリッド書庫の場合は常に 0。 wDate ファイルの更新日付(DOS 形式)。 wTime ファイルの更新時間(DOS 形式)。 szFileName アーカイブファイル名。 szAttribute ファイルの属性。 szMode 7-zip32.dll では圧縮方式の文字列が格納。 -------------------------------------------------------------------------------- ウィンドウズ・メッセージ -------------------------------------------------------------------------------- ●wm_arcextract wm_arcextract nMode = (int)wParam /* 通知モードを表す */ lpEis = (LPEXTRACTINGINFO)lParam /* 構造体を指すポインタ */  wm_arcextract メッセージは、SevenZipSetOwnerWindow() で設定した ウィンドウに 7-zip32.dll から送られます。 このメッセージを受け取ることにより 7-zip32.dll がこれから処理する 格納ファイル名やファイルサイズ等を得ることができます。  SevenZipSetOwnerWindowEx(), SevenZipSetOwnerWindowEx64() にて _lpArcProc に NULL を指定した際にも送られてきます。 この時 lpEis の値は ARCHIVERPROC に渡される _lpEis のポインタとなり 設定するモードによって構造体が変わります。 nMode wParam の値です。7-zip32.dll の処理の状態を表します。 lpEis lParam の値です。 ファイル名等を格納する EXTRACTINGINFO 構造体を指すポインタです。 戻り値  このメッセージを処理するアプリケーションは、 FALSEを返さなければなりません。 FALSE 以外を返すことにより、7-zip32.dll の処理を 中止させることができます。 -------------------------------------------------------------------------------- コールバック関数 -------------------------------------------------------------------------------- 7-zip32.dll の処理状況に応じて、SevenZipSetOwnerWindowEx() 及び SevenZipSetOwnerWindowEx64() で設定したコールバック関数が呼ばれます。 このコールバック関数に渡される引数により、7-zip32.dll が これから処理する格納ファイル名やファイルサイズ等を得ることができます。 typedef BOOL CALLBACK ARCHIVERPROC(HWND _hwnd, UINT _uMsg, UINT _nState, LPVOID _lpEis); _hwnd SevenZipSetOwnerWindowEx(), SevenZipSetOwnerWindowEx64() で指定したウィンドウハンドルが渡されます。 _uMsg 現在のところは wm_arcextract となります。 _nState wm_arcextract の wParam、つまり nMode と同じ意味です。 _lpEis 構造体へのポインタで格納ファイルに関する情報が得られます。 実際には次のどれかとなります。 LPEXTRACTINGINFOEX _lpEis SevenZipSetOwnerWindowEx() か sizeof(EXTRACTINGINFOEX) を指定して SevenZipSetOwnerWindowEx64() を使用した場合。 LPEXTRACTINGINFOEX32 _lpEis sizeof(EXTRACTINGINFOEX32) を指定して SevenZipSetOwnerWindowEx64() を使用した場合。 LPEXTRACTINGINFOEX64 _lpEis  sizeof(EXTRACTINGINFOEX64) を指定して SevenZipSetOwnerWindowEx64() を使用した場合。 ARCHIVERPROC は 7-zip32.dll に処理を継続させるときは TRUE、 中止させるときは FALSE を返さなければなりません。 -------------------------------------------------------------------------------- EXTRACTINGINFO の構造 -------------------------------------------------------------------------------- 構造体定義 typedef struct { DWORD dwFileSize; DWORD dwWriteSize; char szSourceFileName[FNAME_MAX32 + 1]; char dummy1[3]; char szDestFileName[FNAME_MAX32 + 1]; char dummy[3]; } EXTRACTINGINFO; メンバの説明 dwFileSize 全処理ファイルの合計サイズ。 全体のサイズが 0xFFFFFFFF(-1) 以上の場合は 0xFFFFFFFF(-1) を格納する。 dwWriteSize 圧縮解凍処理で処理した全体のサイズ。 dwFileSize が 0xFFFFFFFF(-1) の場合は 全体の処理率(パーミル)を格納する。 szSourceFileName 処理する書庫内の格納ファイル名。 szDestFileName 実際に書(読)込みされるディスク上のファイルのフルパス。 -------------------------------------------------------------------------------- EXTRACTINGINFOEX の構造 -------------------------------------------------------------------------------- 構造体定義 typedef struct { EXTRACTINGINFO exinfo; DWORD dwCompressedSize; DWORD dwCRC; UINT uOSType; WORD wRatio; WORD wDate; WORD wTime; char szAttribute[8]; char szMode[8]; } EXTRACTINGINFOEX; メンバの説明 exinfo EXTRACTINGINFO 構造体が格納されます。 dwCompressedSize 格納ファイルの圧縮サイズ。 圧縮サイズが 0xFFFFFFFF(-1) 以上の場合は 0xFFFFFFFF(-1) を格納する。 dwCRC 格納ファイルのチェックサム。 uOSType ファイルを格納した際に使われた OS。 現状では常に 0。 wRatio パーミル (千分率) で表された圧縮率。 ソリッド書庫の場合は常に 0。 wDate ファイルの更新日付(DOS 形式)。 wTime ファイルの更新時間(DOS 形式)。 szAttribute ファイルの属性。 szMode 7-zip32.dll では圧縮方式の文字列が格納。 -------------------------------------------------------------------------------- EXTRACTINGINFOEX32 の構造 -------------------------------------------------------------------------------- 構造体定義 typedef struct { DWORD dwStructSize; EXTRACTINGINFO exinfo; DWORD dwFileSize; DWORD dwCompressedSize; DWORD dwWriteSize; DWORD dwAttributes; DWORD dwCRC; UINT uOSType; WORD wRatio; FILETIME ftCreateTime; FILETIME ftAccessTime; FILETIME ftWriteTime; char szMode[8]; char szSourceFileName[FNAME_MAX32 + 1]; char dummy1[3]; char szDestFileName[FNAME_MAX32 + 1]; char dummy2[3]; } EXTRACTINGINFOEX32; メンバの説明 dwStructSize 構造体のサイズ。 exinfo EXTRACTINGINFO 構造体が格納されます。 互換性のために残してあるだけです。 dwFileSize 全処理ファイルの合計サイズ。 全体のサイズが 0xFFFFFFFF(-1) 以上の場合は 0xFFFFFFFF(-1) を格納する。 dwCompressedSize 格納ファイルの圧縮サイズ。 圧縮サイズが 0xFFFFFFFF(-1) 以上の場合は 0xFFFFFFFF(-1) を格納する。 dwWriteSize 圧縮解凍処理で処理した全体のサイズ。 dwFileSize が 0xFFFFFFFF(-1) の場合は 全体の処理率(パーミル)を格納する。 dwAttributes ファイルの属性。 dwCRC 格納ファイルのチェックサム。 uOSType ファイルを格納した際に使われた OS。 現状では常に 0。 wRatio パーミル (千分率) で表された圧縮率。 ソリッド書庫の場合は常に 0。 ftCreateTime FILETIME 形式によるファイルの作成日時。 ftAccessTime FILETIME 形式によるファイルの参照日時。 ftWriteTime FILETIME 形式によるファイルの更新日時。 szMode 7-zip32.dll では圧縮方式の文字列が格納。 szSourceFileName 処理する書庫内の格納ファイル名。 szDestFileName 実際に書(読)込みされるディスク上のファイルのフルパス。 -------------------------------------------------------------------------------- EXTRACTINGINFOEX64 の構造 -------------------------------------------------------------------------------- 構造体定義 typedef struct { DWORD dwStructSize; EXTRACTINGINFO exinfo; ULHA_INT64 llFileSize; ULHA_INT64 llCompressedSize; ULHA_INT64 llWriteSize; DWORD dwAttributes; DWORD dwCRC; UINT uOSType; WORD wRatio; FILETIME ftCreateTime; FILETIME ftAccessTime; FILETIME ftWriteTime; char szMode[8]; char szSourceFileName[FNAME_MAX32 + 1]; char dummy1[3]; char szDestFileName[FNAME_MAX32 + 1]; char dummy2[3]; } EXTRACTINGINFOEX64; メンバの説明 dwStructSize 構造体のサイズ。 exinfo EXTRACTINGINFO 構造体が格納されます。 互換性のために残してあるだけです。 llFileSize 全処理ファイルの合計サイズ。 llCompressedSize 格納ファイルの圧縮サイズ。 llWriteSize 圧縮解凍処理で処理した全体のサイズ。 dwAttributes ファイルの属性。 dwCRC 格納ファイルのチェックサム。 uOSType ファイルを格納した際に使われた OS。 現状では常に 0。 wRatio パーミル (千分率) で表された圧縮率。 ソリッド書庫の場合は常に 0。 ftCreateTime FILETIME 形式によるファイルの作成日時。 ftAccessTime FILETIME 形式によるファイルの参照日時。 ftWriteTime FILETIME 形式によるファイルの更新日時。 szMode 7-zip32.dll では圧縮方式の文字列が格納。 szSourceFileName 処理する書庫内の格納ファイル名。 szDestFileName 実際に書(読)込みされるディスク上のファイルのフルパス。 -------------------------------------------------------------------------------- 処理の流れ --------------------------------------------------------------------------------  処理される格納ファイルごとに次の1・2を繰り返す。 1.ARCEXTRACT_OPEN(3) でメッセージを送出。   szSourceFileName に処理する書庫名が格納される。 2.ARCEXTRACT_BEGIN(0) でメッセージを送出。   szSourceFileName, szDestFileName, ファイル属性, 更新日時が有効になる。   最初に送信された際に dwFileSize, llFileSize ヘ処理が行われる   ファイルの合計サイズが格納される。 (合計サイズがオーバーフローする場合は 0xFFFFFFFF(-1) を格納)   解凍時(e,x コマンド)は他の各メンバも有効になる。   削除時(d コマンド)は送出されず、3を処理が終わるまで繰り返す。 3.ARCEXTRACT_INPROCESS(1) でメッセージを送出。 dwWriteSize, llWriteSize にこれまで処理した合計サイズが格納される。 (dwFileSize が 0xFFFFFFFF(-1) の場合は dwWriteSize には全体の処理率を格納) 処理中のファイルの処理が終わるまで送出される。   場合によっては送出されない事もある。   他に処理するファイルが残っている場合は2へ戻り   すべての処理が終了した時点で4へ。(処理状況表示を消すタイミング) 4.ARCEXTRACT_END(2) でメッセージを送出。   lParam(_lpEis) は 0(NULL) が格納される。 -------------------------------------------------------------------------------- API の返すエラーコード -------------------------------------------------------------------------------- ERROR_WARNING (0x8101) 何か致命的でないエラーが発生しました。 ERROR_FATAL (0x8102) 何か致命的なエラーが発生しました。 ERROR_FILE_CREATE (0x8106) ファイルが作成できませんでした。 ERROR_PASSWORD_FILE (0x800A) 暗号化書庫、若しくは入力されたパスワードが間違っています。 ERROR_CANNOT_WRITE (0x8013) 書き込みエラーが生じました。 ERROR_NOT_ARC_FILE (0x8019) 指定したファイルは、アーカイブファイルではありません。 ERROR_COMMAND_NAME (0x801C) コマンド指定が間違っています。 ERROR_MORE_HEAP_MEMORY (0x801D) メモリが不足しています。 ERROR_ALREADY_RUNNING (0x801F) 既に 7-ZIP32.DLL が動作中です。 ERROR_USER_CANCEL (0x8020) ユーザーによって処理が中断されました。 ERROR_HARC_ISNOT_OPENED (0x8021) SevenZipOpenArchive() で書庫とハンドルを関連付ける前に SevenZipFindFirst() 等の API が使用されました。 ERROR_NOT_SEARCH_MODE (0x8022) SevenZipFindFirst() を使用する前に SevenZipFindNext() が呼ばれたか これらを呼び出す前に SevenZipGetFileName() 等の API が呼ばれた。 ERROR_NOT_FIND_ARC_FILE (0x8029) アーカイブファイルが見つかりません。 ERROR_GET_INFORMATION (0x8036) 情報が取得できませんでした。 ERROR_GET_TIME (0x803A) 時間が取得できませんでした。 ERROR_TOO_BIG (0x804A) ファイルサイズが 32bit 以上で変数に格納出来ませんでした。 ERROR_INVALID_VALUE (0x804C) 無効なデータが得られたか、用意されたバッファが不足しています。 -------------------------------------------------------------------------------- 注意 -------------------------------------------------------------------------------- 今後仕様変更される事があります。 ================================================================================