TNB Library
公開型 | 公開メンバ関数 | 全メンバ一覧
CArchiverDllHandler クラスabstract

アーカイバDLL管理クラス [詳解]

#include <TnbArchiverDllHandler.h>

+ CArchiverDllHandler の継承関係図

公開型

enum  ECommand { EC_Delete , EC_Extract , EC_ExtractDir , EC_Attract }
 コマンドの ID [詳解]
 

公開メンバ関数

 CArchiverDllHandler (LPCSTR lpszDllName, LPCSTR lpszPrifix)
 コンストラクタ [詳解]
 
bool CheckArchive (LPCSTR lpszArcFile, const int iMode)
 [確認] ファイル形式確認 [詳解]
 
int CloseArchive (HARC hArc)
 [処理] アーカイブClose. [詳解]
 
int Command (LPCSTR lpszCmdLine, const DWORD dwOutputSize)
 [処理] コマンド処理. [詳解]
 
int CompressMem (LPCSTR lpszArcFile, LPCSTR lpszName, time_t time, WORD wAttr, const BYTE *lpBuf, DWORD &_dwSize, LPCSTR lpszOption=NULL)
 [実行] メモリから格納 [詳解]
 
DWORD ConfigDialog (LPSTR _lpszOptionBuffer=NULL, const int iMode=0)
 [設定] オプション画面 [詳解]
 
int Execute (ECommand cmd, LPCSTR lpszArcFile, LPCSTR lpszPath, LPCSTR lpszFilter, LPCSTR lpszOption=NULL)
 [実行] コマンド実行 [詳解]
 
int ExtractMem (LPCSTR lpszArcFile, LPCSTR lpszName, BYTE *_lpBuf, size_t &dwSize, LPCSTR lpszOption=NULL)
 [実行] メモリに抽出 [詳解]
 
template<typename R >
Func (R &_r, LPCSTR lpszFuncName)
 [実行] DLL関数実行 [詳解]
 
template<typename R , typename T1 >
Func (R &_r, LPCSTR lpszFuncName, T1 t1)
 [実行] DLL関数実行 [詳解]
 
template<typename R , typename T1 , typename T2 >
Func (R &_r, LPCSTR lpszFuncName, T1 t1, T2 t2)
 [実行] DLL関数実行 [詳解]
 
template<typename R , typename T1 , typename T2 , typename T3 >
Func (R &_r, LPCSTR lpszFuncName, T1 t1, T2 t2, T3 t3)
 [実行] DLL関数実行 [詳解]
 
template<typename R , typename T1 , typename T2 , typename T3 , typename T4 >
Func (R &_r, LPCSTR lpszFuncName, T1 t1, T2 t2, T3 t3, T4 t4)
 [実行] DLL関数実行 [詳解]
 
int GetFileCount (LPCSTR lpszArcFile)
 [確認] アーカイブ数確認 [詳解]
 
CAscii GetResultString (void)
 [取得] 結果 [詳解]
 
WORD GetSubVersion (void)
 [取得] DLLのサブバージョン取得. [詳解]
 
WORD GetVersion (void)
 [取得] DLLのバージョン取得. [詳解]
 
CStr GetVersionString (void)
 [取得] DLLのバージョン取得. [詳解]
 
bool IsReady (void) const
 [確認] DLL準備確認 [詳解]
 
bool IsRunning (void)
 [確認] 動作中確認 [詳解]
 
virtual CAscii MakeCommand (ECommand cmd, LPCSTR lpszOption=NULL)
 [作成] コマンド文字列作成 [詳解]
 
virtual CAscii MakeCommandOption (ECommand cmd)=0
 [作成] コマンドオプション文字列作成. [詳解]
 
HARC OpenArchive (LPCSTR lpszArcFile, const DWORD dwMode=0)
 [処理] アーカイブOpen. [詳解]
 
bool QueryFunctionList (const int iFunction)
 [確認] ファンクションチェック. [詳解]
 
void SetParent (HWND hWnd)
 [設定] 関連 Windowハンドル [詳解]
 
virtual ~CArchiverDllHandler (void)
 デストラクタ [詳解]
 

詳解

アーカイバDLL管理クラス

アーカイバDLLの Load/Free、関数コールを容易にするためのクラスです。
例外
CNotSupportExceptionサポートしていない関数を実行すると、スローされます。
CNullPointerException指定のDLLがない場合、スローされます。
覚え書き
UNICODE プロジェクトでも OEMコードで動きます。
参照
http://www.csdinc.co.jp/archiver/
http://www.geocities.jp/matsuhp/pc/archive.html
必要ファイル
TnbArchiverDllHandler.h
日付
06/12/12 新規作成
10/10/04 構成改善

TnbArchiverDllHandler.h88 行目に定義があります。

列挙型メンバ詳解

◆ ECommand

enum ECommand

コマンドの ID

列挙値
EC_Delete 

削除

EC_Extract 

抽出

EC_ExtractDir 

抽出(Directory付き)

EC_Attract 

格納

TnbArchiverDllHandler.h93 行目に定義があります。

構築子と解体子

◆ CArchiverDllHandler()

CArchiverDllHandler ( LPCSTR  lpszDllName,
LPCSTR  lpszPrifix 
)

コンストラクタ

引数
lpszDllNameアーカイバのDLL名。
lpszPrifixアーカイバ種のプリフィックス。

TnbArchiverDllHandler.h106 行目に定義があります。

◆ ~CArchiverDllHandler()

virtual ~CArchiverDllHandler ( void  )
virtual

デストラクタ

TnbArchiverDllHandler.h113 行目に定義があります。

関数詳解

◆ CheckArchive()

bool CheckArchive ( LPCSTR  lpszArcFile,
const int  iMode 
)

[確認] ファイル形式確認

覚え書き
指定ファイルがサポートしているアーカイブファイルとして 正しいかどうかを返します。
APIを示す一様な数値 = ISARC_CHECK_ARCHIVE(16)
引数
lpszArcFileチェックすべきアーカイブファイルのファイル名。
iModeアーカイブ種による。省略すると0。
戻り値
true正しいアーカイブファイルの時。
falseファイルが不正の時。

TnbArchiverDllHandler.h346 行目に定義があります。

◆ CloseArchive()

int CloseArchive ( HARC  hArc)

[処理] アーカイブClose.

OpenArchive() で割り付けたハンドルを解放する。

覚え書き
APIを示す一様な数値 = ISARC_CLOSE_ARCHIVE(24)
引数
hArcOpenArchive() で返されたハンドル。
戻り値
0成功
-1異常時

TnbArchiverDllHandler.h409 行目に定義があります。

◆ Command()

int Command ( LPCSTR  lpszCmdLine,
const DWORD  dwOutputSize 
)

[処理] コマンド処理.

圧縮・解凍等を行います。

覚え書き
結果は、 GetResultString() で得ることが出来ます。
APIを示す一様な数値 = ISARC(0)
引数
lpszCmdLineアーカイバdll に渡すコマンド文字列。
dwOutputSizeアーカイバdll が結果を返すためのサイズ。 結果の文字列は、 GetResultString() で得られます
戻り値
0正常終了
0以外エラー発生

TnbArchiverDllHandler.h264 行目に定義があります。

◆ CompressMem()

int CompressMem ( LPCSTR  lpszArcFile,
LPCSTR  lpszName,
time_t  time,
WORD  wAttr,
const BYTE *  lpBuf,
DWORD &  _dwSize,
LPCSTR  lpszOption = NULL 
)

[実行] メモリから格納

覚え書き
結果は、 GetResultString() で得ることが出来ます。
引数
[in]lpszArcFile対象アーカイブ。
[in]lpszName格納ファイル名。
[in]time格納時間。
[in]wAttr格納属性。
[in]lpBuf格納内容。
[in,out]_dwSizelpBuf のサイズ。処理後は圧縮後のサイズが格納されます。
[in]lpszOption追加オプション(省略可能)。
戻り値
0正常終了
0以外エラー発生

TnbArchiverDllHandler.h523 行目に定義があります。

◆ ConfigDialog()

DWORD ConfigDialog ( LPSTR  _lpszOptionBuffer = NULL,
const int  iMode = 0 
)

[設定] オプション画面

覚え書き
解凍のオプション指定ダイアログの表示。
APIを示す一様な数値 = ISARC_CONFIG_DIALOG(17)
引数
[out]_lpszOptionBufferアーカイブ種によるオプション。省略すると NULL。
[in]iModeアーカイブ種によるモード。省略すると 0。
戻り値
ERROR_ALREADY_RUNNINGアーカイブdll が既に実行中の時。
TRUE設定が成功した時。
FALSE設定が出来なかった(されなかった)時。または取消終了時。

TnbArchiverDllHandler.h330 行目に定義があります。

◆ Execute()

int Execute ( ECommand  cmd,
LPCSTR  lpszArcFile,
LPCSTR  lpszPath,
LPCSTR  lpszFilter,
LPCSTR  lpszOption = NULL 
)

[実行] コマンド実行

覚え書き
結果は、 GetResultString() で得ることが出来ます。
引数
cmdコマンド種。指定できるのは以下の4つです。 EC_Delete 削除
EC_Extract 抽出
EC_ExtractDir 抽出(Directory付き)
EC_Attract 格納
lpszArcFile対象アーカイブ名。
lpszPath対象パス。
lpszFilter対象ファイル(ワイルドカード可能)。
lpszOption追加オプション(省略可能)。
戻り値
0正常終了
0以外エラー発生

TnbArchiverDllHandler.h460 行目に定義があります。

◆ ExtractMem()

int ExtractMem ( LPCSTR  lpszArcFile,
LPCSTR  lpszName,
BYTE *  _lpBuf,
size_t &  dwSize,
LPCSTR  lpszOption = NULL 
)

[実行] メモリに抽出

覚え書き
結果は、 GetResultString() で得ることが出来ます。
引数
[in]lpszArcFile対象アーカイブファイル名。
[in]lpszName対象ファイル。
[out]_lpBuf抽出メモリ。
[in,out]dwSizelpBuf のサイズ。 実行後は抽出したサイズが格納されます。
[in]lpszOption追加オプション(省略可能)。
戻り値
0正常終了
0以外エラー発生

TnbArchiverDllHandler.h497 行目に定義があります。

◆ Func() [1/5]

R Func ( R &  _r,
LPCSTR  lpszFuncName 
)

[実行] DLL関数実行

引数
[out]_r戻り値
[in]lpszFuncName関数名
戻り値
r の参照
例外
CTnbException指定の関数が使用できない時、スローされます。

TnbArchiverDllHandler.h151 行目に定義があります。

◆ Func() [2/5]

R Func ( R &  _r,
LPCSTR  lpszFuncName,
T1  t1 
)

[実行] DLL関数実行

引数
[out]_r戻り値
[in]lpszFuncName関数名
[in]t1第一引数
戻り値
r の参照
例外
CTnbException指定の関数が使用できない時、スローされます。

TnbArchiverDllHandler.h167 行目に定義があります。

◆ Func() [3/5]

R Func ( R &  _r,
LPCSTR  lpszFuncName,
T1  t1,
T2  t2 
)

[実行] DLL関数実行

引数
[out]_r戻り値
[in]lpszFuncName関数名
[in]t1第一引数
[in]t2第二引数
戻り値
r の参照
例外
CTnbException指定の関数が使用できない時、スローされます。

TnbArchiverDllHandler.h184 行目に定義があります。

◆ Func() [4/5]

R Func ( R &  _r,
LPCSTR  lpszFuncName,
T1  t1,
T2  t2,
T3  t3 
)

[実行] DLL関数実行

引数
[out]_r戻り値
[in]lpszFuncName関数名
[in]t1第一引数
[in]t2第二引数
[in]t3第三引数
戻り値
r の参照
例外
CTnbException指定の関数が使用できない時、スローされます。

TnbArchiverDllHandler.h202 行目に定義があります。

◆ Func() [5/5]

R Func ( R &  _r,
LPCSTR  lpszFuncName,
T1  t1,
T2  t2,
T3  t3,
T4  t4 
)

[実行] DLL関数実行

引数
[out]_r戻り値
[in]lpszFuncName関数名
[in]t1第一引数
[in]t2第二引数
[in]t3第三引数
[in]t4第四引数
戻り値
r の参照
例外
CTnbException指定の関数が使用できない時、スローされます。

TnbArchiverDllHandler.h221 行目に定義があります。

◆ GetFileCount()

int GetFileCount ( LPCSTR  lpszArcFile)

[確認] アーカイブ数確認

覚え書き
指定された書庫ファイルに格納されているファイル数を得ます。
APIを示す一様な数値 = ISARC_GET_FILE_COUNT(18)
引数
lpszArcFile格納ファイル数を得たい書庫ファイル名。
戻り値
-1エラー。
0以上格納ファイル数。

TnbArchiverDllHandler.h360 行目に定義があります。

◆ GetResultString()

CAscii GetResultString ( void  )

[取得] 結果

戻り値
結果の文字列。

TnbArchiverDllHandler.h247 行目に定義があります。

◆ GetSubVersion()

WORD GetSubVersion ( void  )

[取得] DLLのサブバージョン取得.

現在のバージョンの下位 2 ワードに 100 を掛けたものが返ってきます。
例) 4.01 -> 401

覚え書き
アーカイバDLLによってサポートしていない可能性があります。
APIを示す一様な数値 = 94
戻り値
サブバージョン。

TnbArchiverDllHandler.h291 行目に定義があります。

◆ GetVersion()

WORD GetVersion ( void  )

[取得] DLLのバージョン取得.

現在のバージョンの上位 2 ワードに 100 を掛けたものが返ってきます。
例) 2.30 -> 230

覚え書き
APIを示す一様な数値 = ISARC_GET_VERSION(1)
戻り値
バージョン。

TnbArchiverDllHandler.h277 行目に定義があります。

◆ GetVersionString()

CStr GetVersionString ( void  )

[取得] DLLのバージョン取得.


文字列で得ることが出来ます。
例) "4.01.00.01"

戻り値
バージョン文字列。

TnbArchiverDllHandler.h303 行目に定義があります。

◆ IsReady()

bool IsReady ( void  ) const

[確認] DLL準備確認

戻り値
true準備OK。
falseDLLが見つからなかった。他のメソッドを使用すると throw される可能性があります。

TnbArchiverDllHandler.h138 行目に定義があります。

◆ IsRunning()

bool IsRunning ( void  )

[確認] 動作中確認

覚え書き
現在 アーカイバDLL が動作中か否かを得ます。 アプリケーション側は必ず圧縮/解凍等のファイルアクセスを伴うAPIを 実行する前には、これにより実行可能かをチェックする必要があります。
APIを示す一様な数値 = ISARC_GET_RUNNING(8)
戻り値
true実行中です。
false実行中ではない(実行可能)。

TnbArchiverDllHandler.h237 行目に定義があります。

◆ MakeCommand()

virtual CAscii MakeCommand ( ECommand  cmd,
LPCSTR  lpszOption = NULL 
)
virtual

[作成] コマンド文字列作成

引数
cmdコマンド種。
lpszOption追加オプション(省略可能)。
戻り値
コマンドと %s を3つ含んだ文字列。Emptyならエラー。

TnbArchiverDllHandler.h421 行目に定義があります。

◆ MakeCommandOption()

virtual CAscii MakeCommandOption ( ECommand  cmd)
pure virtual

[作成] コマンドオプション文字列作成.

引数
cmdコマンド種。
戻り値
コマンド種に対応したオプション文字列。Emptyならエラー。

CUnZipDllHandler, C7zDllHandler, CUnLhaDllHandler, CCabDllHandler, CTarDllHandlerで実装されています。

◆ OpenArchive()

HARC OpenArchive ( LPCSTR  lpszArcFile,
const DWORD  dwMode = 0 
)

[処理] アーカイブOpen.

指定ファイルが アーカイバdll に有効な書庫ファイルかどうか調べ、 有効であればオープンし、一意の数値(ハンドル)を返します。 以後の書庫ファイルへのアクセスはこのハンドルでおこないます。 終了の際は、 CloseArchive() で閉じてください。

覚え書き
APIを示す一様な数値 = ISARC_OPEN_ARCHIVE(23)
引数
lpszArcFileアーカイブファイル名。
dwModeアーカイバ種による。省略すると0。
戻り値
NULLエラー。
NULL以外成功。

TnbArchiverDllHandler.h395 行目に定義があります。

◆ QueryFunctionList()

bool QueryFunctionList ( const int  iFunction)

[確認] ファンクションチェック.

指定された API が 7-zip32.dll で使用可能かどうかを得ます。 アプリケーション側は目的の機能(API)が有効であるかどうか、 事前にチェックするようにしてください。

覚え書き
APIを示す一様な数値 = ISARC_QUERY_FUNCTION_LIST(18)
引数
iFunctionAPI を示す一意な数値。 具体的な数値については 7-zip32.h などアーカイバのヘッダを参照して下さい。
戻り値
true使用可能。
false使用出来ない、または iFunction は無効な値。

TnbArchiverDllHandler.h377 行目に定義があります。

◆ SetParent()

void SetParent ( HWND  hWnd)

[設定] 関連 Windowハンドル

引数
hWndアーカイバdll を呼び出すアプリのウィンドウハンドル。 ウィンドウが存在しないコンソールアプリの場合や、 指定する必要のない場合は NULL を渡します。

TnbArchiverDllHandler.h128 行目に定義があります。