25 #include "other/7-zip32.h"
59 "ローカルで宣言している型(TNB::TIndividualInfo)と\n"
60 "インクルードしている型(INDIVIDUALINFO)で差異があります。\n");
107 : m_hModule(NULL), m_strPrifix(lpszPrifix), m_hWnd(NULL)
115 if ( m_hModule != NULL )
117 ::FreeLibrary(m_hModule);
140 return m_hModule != NULL;
151 R
Func(R& _r, LPCSTR lpszFuncName)
153 R (WINAPI *pFunc0)(void);
154 _r = m_GetFuncAdd(pFunc0, lpszFuncName)();
166 template<
typename R,
typename T1>
167 R
Func(R& _r, LPCSTR lpszFuncName, T1 t1)
169 R (WINAPI *pFunc1)(T1 t1);
170 _r = m_GetFuncAdd(pFunc1, lpszFuncName)(t1);
183 template<
typename R,
typename T1,
typename T2>
184 R
Func(R& _r, LPCSTR lpszFuncName, T1 t1, T2 t2)
186 R (WINAPI *pFunc2)(T1, T2);
187 _r = m_GetFuncAdd(pFunc2, lpszFuncName)(t1, t2);
201 template<
typename R,
typename T1,
typename T2,
typename T3>
202 R
Func(R& _r, LPCSTR lpszFuncName, T1 t1, T2 t2, T3 t3)
204 R (WINAPI *pFunc3)(T1, T2, T3);
205 _r = m_GetFuncAdd(pFunc3, lpszFuncName)(t1, t2, t3);
220 template<
typename R,
typename T1,
typename T2,
typename T3,
typename T4>
221 R
Func(R& _r, LPCSTR lpszFuncName, T1 t1, T2 t2, T3 t3, T4 t4)
223 R (WINAPI *pFunc4)(T1, T2, T3, T4);
224 _r = m_GetFuncAdd(pFunc4, lpszFuncName)(t1, t2, t3, t4);
240 return !!
Func(r,
"GetRunning");
264 int Command(LPCSTR lpszCmdLine,
const DWORD dwOutputSize)
267 return Func(r,
"", m_hWnd, lpszCmdLine, m_strResult.
GetBuffer(dwOutputSize), dwOutputSize);
280 return Func(r,
"GetVersion");
294 return Func(r,
"GetSubVersion");
310 s.
Format(_T(
"%d.%02d.%02d.%02d"), w / 100, w % 100, v / 100, v % 100);
315 s.
Format(_T(
"%d.%02d"), w / 100, w % 100);
330 DWORD
ConfigDialog(LPSTR _lpszOptionBuffer = NULL,
const int iMode = 0)
333 return Func(r,
"ConfigDialog", m_hWnd, _lpszOptionBuffer, iMode);
349 return !!
Func(r,
"CheckArchive", lpszArcFile, iMode);
363 return Func(r,
"GetFileCount", lpszArcFile);
380 return !!
Func(r,
"QueryFunctionList", iFunction);
398 return Func(r,
"OpenArchive", m_hWnd, lpszArcFile, dwMode);
412 return Func(r,
"CloseArchive", hArc);
423 CAscii strOpt = lpszOption;
434 strResult.
Format(
"%s%s\042%%s\042 \042%%s\\\042 \042%%s\042", strCmd, strOpt);
460 int Execute(
ECommand cmd, LPCSTR lpszArcFile, LPCSTR lpszPath, LPCSTR lpszFilter, LPCSTR lpszOption = NULL)
497 int ExtractMem(LPCSTR lpszArcFile, LPCSTR lpszName, BYTE* _lpBuf,
size_t& dwSize, LPCSTR lpszOption = NULL)
499 ASSERT( ! ::IsBadWritePtr(_lpBuf, dwSize) );
502 DWORD dwOriginalSize = 0;
503 int (WINAPI* pFunc)(
const HWND, LPCSTR, BYTE*,
const DWORD, time_t*, WORD*, DWORD*);
504 int r = m_GetFuncAdd(pFunc,
"ExtractMem")
505 (m_hWnd, strCmd, _lpBuf,
static_cast<DWORD
>(dwSize), NULL, NULL, &dwOriginalSize);
506 dwSize = dwOriginalSize;
523 int CompressMem(LPCSTR lpszArcFile, LPCSTR lpszName, time_t time, WORD wAttr,
524 const BYTE* lpBuf, DWORD& _dwSize, LPCSTR lpszOption = NULL)
526 ASSERT( ! ::IsBadReadPtr(lpBuf, _dwSize) );
529 DWORD dwCompreSize = 0;
531 (
const HWND, LPCSTR,
const BYTE*,
const DWORD,
const time_t*,
const WORD*, DWORD*);
532 int r = m_GetFuncAdd(pFunc,
"CompressMem")
533 (m_hWnd, strCmd, lpBuf, _dwSize, &time, &wAttr, &dwCompreSize);
534 _dwSize = dwCompreSize;
544 bool m_Init(LPCSTR lpszDllName)
546 if ( m_hModule != NULL )
550 HINSTANCE h = ::LoadLibraryA(lpszDllName);
557 WORD (WINAPI *pGetVersion)(void);
576 T& m_GetFuncAdd(T& _t, LPCSTR lpszFuncName)
578 if ( m_hModule == NULL )
582 if ( !
GetFuncAddress(_t, m_hModule, m_strPrifix + lpszFuncName) )
690 return Func(r,
"GetArchiveType", lpszArcFile);
703 return !!
Func(r,
"SetUnicodeMode", boIsUtf8);
784 strCmd =
"a -r1 -x1 ";
914アーカイバDLL 圧縮 N圧縮 解凍 F解凍 更新 検査 一覧 SFX 詳細 削除 注釈 ヘ変
915------------------------------------------------------------------------------------------------------------
9167-Zip32.DLL a **** e x u t l **** **** d **** ****
917UNLHA32.DLL a u e x f t l s v d c y
918CAB32.DLL a **** x x **** c,t l f **** **** **** ****
919TAR32.DLL -cvf **** -xvf -xvf **** **** -tvf **** **** **** **** ****
920------------------------------------------------------------------------------------------------------------
921UNZIP32.DLL **** **** -x,-xv -x,-xv **** -t -l,-lv **** -v -d -z,-Z ****
922ZIP32J.DLL -r -r **** **** -f,-u **** **** -sfx **** -d -z ****
923UNARJ32J.DLL **** **** e,ev x,xv **** t l,lv **** v **** **** ****
924UNRAR32.DLL **** **** -e -x **** **** -l **** -v **** **** ****
925BGA32.DLL a **** x x **** t l,lv s **** d **** ****
926YZ1.DLL c **** x x **** **** **** **** **** **** **** ****
927UNGCA32.DLL **** **** e,ex e,ex **** t l **** **** **** **** ****
928UNIMP32.DLL **** **** **** -o **** **** **** **** **** **** **** ****
929UNBEL32.DLL <<コマンドは不要>>
930 備考:N圧縮:新規追加圧縮, F解凍:フォルダ解凍, SFX:自己解凍書庫を作成, へ変:ヘッダ変更, **** は未対応
virtual CAscii MakeCommandOption(ECommand cmd)
[作成] コマンドオプション文字列作成
int GetArchiveType(LPCSTR lpszArcFile)
[確認] ファイル形式確認
bool SetUnicodeMode(bool boIsUtf8)
[設定] 使用文字設定
C7zDllHandler(void)
コンストラクタ
WORD GetSubVersion(void)
[取得] DLLのサブバージョン取得.
@ EC_ExtractDir
抽出(Directory付き)
int GetFileCount(LPCSTR lpszArcFile)
[確認] アーカイブ数確認
CArchiverDllHandler(LPCSTR lpszDllName, LPCSTR lpszPrifix)
コンストラクタ
virtual CAscii MakeCommand(ECommand cmd, LPCSTR lpszOption=NULL)
[作成] コマンド文字列作成
virtual ~CArchiverDllHandler(void)
デストラクタ
bool IsRunning(void)
[確認] 動作中確認
int CloseArchive(HARC hArc)
[処理] アーカイブClose.
DWORD ConfigDialog(LPSTR _lpszOptionBuffer=NULL, const int iMode=0)
[設定] オプション画面
CStr GetVersionString(void)
[取得] DLLのバージョン取得.
bool IsReady(void) const
[確認] DLL準備確認
bool QueryFunctionList(const int iFunction)
[確認] ファンクションチェック.
bool CheckArchive(LPCSTR lpszArcFile, const int iMode)
[確認] ファイル形式確認
R Func(R &_r, LPCSTR lpszFuncName, T1 t1)
[実行] DLL関数実行
WORD GetVersion(void)
[取得] DLLのバージョン取得.
int Execute(ECommand cmd, LPCSTR lpszArcFile, LPCSTR lpszPath, LPCSTR lpszFilter, LPCSTR lpszOption=NULL)
[実行] コマンド実行
void SetParent(HWND hWnd)
[設定] 関連 Windowハンドル
int CompressMem(LPCSTR lpszArcFile, LPCSTR lpszName, time_t time, WORD wAttr, const BYTE *lpBuf, DWORD &_dwSize, LPCSTR lpszOption=NULL)
[実行] メモリから格納
R Func(R &_r, LPCSTR lpszFuncName, T1 t1, T2 t2, T3 t3, T4 t4)
[実行] DLL関数実行
int Command(LPCSTR lpszCmdLine, const DWORD dwOutputSize)
[処理] コマンド処理.
R Func(R &_r, LPCSTR lpszFuncName)
[実行] DLL関数実行
HARC OpenArchive(LPCSTR lpszArcFile, const DWORD dwMode=0)
[処理] アーカイブOpen.
int ExtractMem(LPCSTR lpszArcFile, LPCSTR lpszName, BYTE *_lpBuf, size_t &dwSize, LPCSTR lpszOption=NULL)
[実行] メモリに抽出
virtual CAscii MakeCommandOption(ECommand cmd)=0
[作成] コマンドオプション文字列作成.
R Func(R &_r, LPCSTR lpszFuncName, T1 t1, T2 t2, T3 t3)
[実行] DLL関数実行
R Func(R &_r, LPCSTR lpszFuncName, T1 t1, T2 t2)
[実行] DLL関数実行
CAscii GetResultString(void)
[取得] 結果
virtual CAscii MakeCommandOption(ECommand cmd)
[作成] コマンドオプション文字列作成
CCabDllHandler(void)
コンストラクタ
CStrT & TrimLeft(TYP t=' ')
[処理] 先頭から文字をトリム.
bool IsEmpty(void) const
[確認] 空チェック
void ReleaseBuffer(void)
[操作] 割り当てたバッファを開放.
static CStrT Fmt(const char *lpszFormat,...)
[作成] 書式付き文字列作成
int Replace(TYP tOld, TYP tNew)
[処理] 文字置換.
void Format(const TYP *lpszFormat,...)
[代入] 書式付き文字列代入.
TYP * GetBuffer(size_t iLength=0)
[操作] 書き込みバッファ要求.
CTarDllHandler(void)
コンストラクタ
virtual CAscii MakeCommandOption(ECommand cmd)
[作成] コマンドオプション文字列作成
void OnCatch(void) const
[表示] 内容表示
virtual CAscii MakeCommandOption(ECommand cmd)
[作成] コマンドオプション文字列作成
CUnLhaDllHandler(void)
コンストラクタ
virtual CAscii MakeCommandOption(ECommand cmd)
[作成] コマンドオプション文字列作成.
CUnZipDllHandler(void)
コンストラクタ
bool GetFuncAddress(FUNC &_pFnc, HINSTANCE hInstance, LPCSTR lpszName)
動的関数アドレス取得関数
TNB::CStrT< char > CAscii
ASCII文字列クラス
char szFileName[FNAME_MAX32+1]
格納ファイル名
DWORD dwOriginalSize
ファイルのサイズ
TIndividualInfo(void)
コンストラクタ
DWORD dwCompressedSize
圧縮後のサイズ
char szMode[8]
格納ファイルの格納モード(〃)
char szAttribute[8]
格納ファイルの属性(書庫固有)
WORD wDate
格納ファイルの日付(DOS 形式)