=======================================================================
      UNARJ32.DLL Ver 2.00  EBhEYEbZ[Wt@C
=======================================================================

					       l (May. 5,2018)

͂߂

@UNARJ32.DLL ̃hLg\͈ȉ̂悤ɂȂĂ܂B

    API.TXT	 : 𐬂 Unarj() ny OpenArchive() n API ̐
    COMMAND.TXT  : Unarj() ɓnR}hɂĂ̐
    WINMES.TXT	 : SetOwnerWindow() n API ̐
    ENUMAPI.TXT  : SetEnumMembersProc() n API ̐
    STRTABLE.TXT : ݒp API ɂĂ̐
    HEADER.TXT	 : ARJ ̏Ɏdl (CUNARJ32.DLL )
    HISTORY.TXT  : C

@̃hLgł́CSetOwnerWindow() n API ɂĐĂ܂B
API.TXT ɂ API ŜɊւLq݂܂̂ŁC QƂق
ǂł傤B

-----------------------------------------------------------------------
%1. e API ̐B
%2. UNARJ32.DLL oEBhEYbZ[W
%3. ARCHIVERPROC ̒`
%4. EXTRACTINGINFO ̍\
%5. EXTRACTINGINFOEX ̍\
%6. EXTRACTINGINFOEX32 ̍\
%7. EXTRACTINGINFOEX64 ̍\
%8. ̗
-----------------------------------------------------------------------

@UNARJ32.DLL ́C "-i" IvVœWJ󋵕\}ꂽꍇɂ
́CĂяõEBhEɑ΂ēWJ󋵂m点郁bZ[W𑗂܂B
C ̌Ő API ɂʒm̃EBhEݒ肷Kv
܂B

-----------------------------------------------------------------------
%1. e API ̐B
-----------------------------------------------------------------------

-----------------------------------------------------------------------
BOOL WINAPI UnarjSetOwnerWindow(
		HWND  _hwnd
	    )
-----------------------------------------------------------------------
	 90 : UnarjSetOwnerWindow
	390 : UnarjSetOwnerWindowA
	690 : UnarjSetOwnerWindowW
v	UnarjSetOwnerWindow  : 0.01
	UnarjSetOwnerWindowA : 0.99
	UnarjSetOwnerWindowW : 0.99
@\
	UNARJ32.DLL ̃bZ[W̑MEBhEݒ肵܂BUNARJ32.
	DLL ͂Ŏw肳ꂽEBhEɃbZ[W𑗐M܂B


	_hwnd		bZ[W󂯎EBhEB

߂l
	I	TRUE Ԃ܂B
	G[	쒆ŕύXłȂꍇC ɂ API 
			ʂ̃EBhEݒ肳Ăꍇɂ	FALSE 
			Ԃ܂Bۂ̃G[R[h𓾂ɂ UnarjGet-
			LastError() API gpĂB

Unicode
	Ver 0.99 ȍ~ł Unicode ł ANSI łĂ܂CUNARJ-
	32.DLL ͓삪 Unicode ɑΉĂȂ߁C ANSI ֕ϊ
	ďs_ɒӂKvƂȂ܂B


	 API  16	rbgłƂ̌݊̂߂ɗpӂĂ̂ŁC
	̊g߂܂B]āCɕKvłȂCq Un-
	arjSetOwnerWindowEx64() gp悤ɂĂB

-----------------------------------------------------------------------
BOOL WINAPI UnarjClearOwnerWindow(
		VOID
	    )
-----------------------------------------------------------------------
	91
v	0.01
@\
	UnarjSetOwnerWindow() Őݒ肵EBhE̐ݒ܂B

߂l
	I	TRUE Ԃ܂B
	G[	쒆ŉłȂꍇɂ FALSE Ԃ܂B
			ۂ̃G[R[h𓾂ɂ UnarjGetLastError()
			API gpĂB

-----------------------------------------------------------------------
BOOL WINAPI UnarjSetOwnerWindowEx(
		HWND		_hwnd,
		LPARCHIVERPROC	_lpArcProc
	    )
-----------------------------------------------------------------------
	 51 : UnarjSetOwnerWindowEx
	351 : UnarjSetOwnerWindowExA
	651 : UnarjSetOwnerWindowExW
v	UnarjSetOwnerWindowEx  : 0.01
	UnarjSetOwnerWindowExA : 0.99
	UnarjSetOwnerWindowExW : 0.99
@\
	UNARJ32.DLL ̓WJ󋵂󂯎邽߂̃R[obN֐̎ws
	܂B_lpArcProc  NULL w肷 _hwnd Ŏw肵EBh
	E bZ[W𑗏o܂B


	_hwnd		bZ[W󂯎EBhEB
	_lpArcProc	󂯎邽߂̃R[obN֐ւ̃|C^B

߂l
	I	TRUE Ԃ܂B
	G[	쒆ŕύXłȂꍇC ɂ API 
			ʂ̃EBhEݒ肳Ăꍇɂ	FALSE 
			Ԃ܂Bۂ̃G[R[h𓾂ɂ UnarjGet-
			LastError() API gpĂB

Unicode
	Ver 0.99 ȍ~ł Unicode ł ANSI łĂ܂CUNARJ-
	32.DLL ͓삪 Unicode ɑΉĂȂ߁C ANSI ֕ϊ
	ďs_ɒӂKvƂȂ܂B


	 API ɂR[obN֐gp\̂ɂẮC dl
	Œ肳Ă邽߂ɁC̊g߂܂BȂׂq
	UnarjSetOwnerWindowEx64() gp悤ɂĂB

-----------------------------------------------------------------------
BOOL WINAPI UnarjKillOwnerWindowEx(
		HWND  _hwnd
	    )
-----------------------------------------------------------------------
	52
v	0.01
@\
	UnarjSetOwnerWindowEx() Őݒ肵EBhE̐ݒ܂B


	_hwnd		w肵ĂƁCUnarjSetOwnerWindowEx() Ɏw
			̂Ƃ̐`FbNs܂B

߂l
	I	TRUE Ԃ܂B
	G[	쒆ŉłȂꍇɂ FALSE Ԃ܂B
			ۂ̃G[R[h𓾂ɂ UnarjGetLastError()
			API gpĂB

-----------------------------------------------------------------------
BOOL WINAPI UnarjSetOwnerWindowEx64(
		HWND		_hwnd,
		LPARCHIVERPROC	_lpArcProc,
		DWORD		_dwStructSize
	    )
-----------------------------------------------------------------------
	108
v	0.50
@\
	UNARJ32.DLL ̓WJ󋵂󂯎邽߂̃R[obN֐̎ws
	܂B_lpArcProc  NULL w肷 _hwnd Ŏw肵EBh
	E bZ[W𑗏o܂B


	_hwnd		bZ[W󂯎EBhEB
	_lpArcProc	󂯎邽߂̃R[obN֐ւ̃|C^B
	_dwStructSize	gp\̂̃[hBۂɂ EXTRACTINGINFO-
			EXCEXTRACTINGINFOEX32C EXTRACTINGINFOEX64 ̒
			Ŏgp̂肵C̃TCYw肷Kv
			܂B

߂l
	I	TRUE Ԃ܂B
	G[	쒆ŕύXłȂꍇC ɂ API 
			ʂ̃EBhEݒ肳Ăꍇɂ	FALSE 
			Ԃ܂Bۂ̃G[R[h𓾂ɂ UnarjGet-
			LastError() API gpĂB


	ʏCAPI Ŏgp\̂ɂẮCdlύXꍇ
	́C\̂̃TCY񓙂𗘗păAvőΉ邱ƂɂȂ
	C gp DLL ̉łƂrIyȕύX̂߂Ɋ̃Av
	ꎞIɂ뗘płȂȂ͕̂sւłB
	̂悤ȏ󋵂CAvőΉł悤ɂ
	߁C  API ɂẮCAPI ƂĂ̌ʂȂfb
	g𖳎āC[hws悤ɂȂĂ܂B

-----------------------------------------------------------------------
BOOL WINAPI UnarjKillOwnerWindowEx64(
		HWND  _hwnd
	    )
-----------------------------------------------------------------------
	109
v	0.50
@\
	UnarjSetOwnerWindowEx64() Őݒ肵EBhE̐ݒ܂B


	_hwnd		w肵ĂƁCUnarjSetOwnerWindowEx64() Ɏw
			肵̂Ƃ̐`FbNs܂B

߂l
	I	TRUE Ԃ܂B
	G[	쒆ŉłȂꍇɂ FALSE Ԃ܂B
			ۂ̃G[R[h𓾂ɂ UnlhaGetLastError()
			API gpĂB


-----------------------------------------------------------------------
%2. UNARJ32.DLL oEBhEYbZ[W
-----------------------------------------------------------------------

wm_arcextract

@wm_arcextract bZ[ẂCUnarjSetOwnerWindow() Őݒ肵EBhE
 UNARJ32.DLL 瑗܂B̃bZ[W󂯎邱ƂɂC
UNARJ32 ꂩ珈i[t@Ct@CTCY𓾂邱Ƃ
܂B

@wm_arcextract bZ[ẂCRegisterWindowMessage() API ɂVXe
ւ̓o^sŎgp悤ɂĂB

-----------------------------------------------------------------------
LRESULT CALLBACK WindowProc(
		HWND	_hwnd,
		UINT	_uMsg,	    // wm_arcextract
		WPARAM	_wParam,
		LPARAM	_lParam
	    )
-----------------------------------------------------------------------


	wParam		(int)nMode
			ʒm[hBUNARJ32.DLL ̏̏Ԃȉ̐l
			ŕ\܂B

			0 : UNARJ32.DLL Yt@C̏Jn邱
			    Ƃ\܂B
			1 : UNARJ32.DLL Yt@C̏ł邱
			    \܂B
			2 : UNARJ32.DLL IClpEis ̃J
			    悤ƂĂ邱Ƃ\܂B
			3 : UNARJ32.DLL Yɂ̏Jn邱Ƃ
			    \܂B szSourceFileName ɏɖi[
			    ܂B
			4 : UNARJ32.DLL ł͖gpłB
			5 : UNARJ32.DLL t@CT[`ł邱Ƃ
			    \܂BɃ}b`t@C̃t@C
			    ܂B
			6 : UNARJ32.DLL ł͖gpłB
			7 : UNARJ32.DLL ł͖gpłB

	lParam		(EXTRACTINGINFO *)lpEis
			t@Ci[Ă EXTRACTINGINFO \
			̂ւ̃|C^łB

߂l
	0		UNARJ32.DLL ɏ̌pw܂B
	0 ȊO		UNARJ32.DLL ɏ𒆎~܂B


-----------------------------------------------------------------------
%3. ARCHIVERPROC ̒`
-----------------------------------------------------------------------

-----------------------------------------------------------------------
BOOL CALLBACK ARCHIVERPROC(
			  HWND	  _hwnd,
			  UINT	  _uMsg,
			  UINT	  _nState,
			  LPVOID  _lpEis
		      );
-----------------------------------------------------------------------


	_hwnd		UnarjSetOwnerWindowEx Ŏw肵EBhEnh
			n܂B
	_uMsg		݂̂Ƃ wm_arcextract ƂȂ܂B
	_nState 	wm_arcextract  wParamC܂ nMode i[
			܂B
	_lpEis		\̂ւ̃|C^łBi[t@CɊւ
			܂Bۂɂ́ĈǂꂩƂȂ܂B

	    LPEXTRACTINGINFOEX _lpEis
		    UnarjSetOwnerWindowEx() 	sizeof(EXTRACTINGINFOEX)
		    w肵 UnarjSetOwnerWindowEx64() gpꍇB
	    LPEXTRACTINGINFOEX32 _lpEis
		    sizeof(EXTRACTINGINFOEX32) w肵 UnarjSetOwner-
		    WindowEx64() gpꍇB
	    LPEXTRACTINGINFOEX64 _lpEis
		    sizeof(EXTRACTINGINFOEX64) w肵 UnarjSetOwner-
		    WindowEx64() gpꍇB

߂l
	TRUE		UNARJ32.DLL ɏ̌pw܂B
	FALSE		UNARJ32.DLL ɏ𒆎~܂B


-----------------------------------------------------------------------
%4. EXTRACTINGINFO ̍\
-----------------------------------------------------------------------
\̒`
		typedef struct {
			DWORD	dwFileSize;
			DWORD	dwWriteSize;
			TCHAR	szSourceFileName[FNAME32_MAX + 1];
			TCHAR	dummy1[3];
			TCHAR	szDestFileName[FNAME32_MAX + 1];
			TCHAR	dummy[3];
		}  EXTRACTINGINFO

o̐
	dwFileSize		i[t@C̃TCYB
	dwWriteSize		WJŏ񂾃TCYB
	szSourceFileName	si[t@CB
	szDestFileName		ۂɏ܂pXB


-----------------------------------------------------------------------
%5. EXTRACTINGINFOEX ̍\
-----------------------------------------------------------------------
\̒`
		typedef struct {
			EXTRACTINGINFO	exinfo;
			DWORD		dwCompressedSize;
			DWORD		dwCRC;
			UINT		uOSType;
			WORD		wRatio;
			WORD		wDate;
			WORD		wTime;
			TCHAR		szAttribute[8];
			TCHAR		szMode[8];
		} EXTRACTINGINFOEX;

	exinfo			EXTRACTINGINFO \̂i[܂B
	dwCompressedSize	i[t@C̈kTCYB
	dwCRC			i[t@C̃`FbNTB
	uOSType 		t@Ci[ۂɎgꂽ OSB
					 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	̑ (Windows95)
	wRatio			p[~ (番) ɂi[t@C̈
				kB
	wDate			ftime ̏ʃ[hƓ̍\Ōꂽ
				i[t@C̓tB
				    struct {
					unsigned ft_day   : 5;
					unsigned ft_month : 4;
					unsigned ft_year  : 7;
				    } _DosDate;
				ft_year Ɋi[l 1980 Ňo
				NłBāC_Iɂ 2107 N
				ŕ\ł邱ƂɂȂ܂B
	wTime			ftime ̉ʃ[hƓ̍\Ōꂽ
				i[t@C̎B
				    struct {
					unsigned ft_tsec : 5;
					unsigned ft_min  : 6;
					unsigned ft_hour : 5;
				    } _DosTime;
				ft_tsec  Ɋi[lb 2 Ŋ
				̂ł_ɒӂĂB

				<<dv>>
				NTFS ̃t@C  UNIX ̃t@C
				̏ꍇC 00:00:01 błꍇ
				R܂Ĉ悤ȃf[^̈v
				bgtH[ɂقȂĂ邱Ƃɒ
				ĂBWin32sCWin95 ł͊ۂ߂̍ۂ
				؂̂Ăs܂C̑ł͐؂グ
				s܂B ɒӂKvȂ̂́CWin98
				łCAPI ̃oOCSetFileTime() 
				͐؂グsɂ炸   File-
				TimeToDosDateTime() ł͐؂̂ĂĂ
				܂B
				UNARJ32.DLL ɂẮCWin32 API gp
				ȂƂɂCWin98 ɂĂ؂グ
				lԂ悤ɂȂĂ܂B
				(Ver 0.29 ȍ~)
	szAttribute		i[t@C̑B
	szMode			UNARJ32.DLL ł͊i[t@C̊e푮
				񂪊i[Ă܂B


-----------------------------------------------------------------------
%6. 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;
			TCHAR		szMode[8];
			TCHAR		szSourceFileName[FNAME_MAX32 + 1];
			TCHAR		dummy1[3];
			TCHAR		szDestFileName[FNAME_MAX32 + 1];
			TCHAR		dummy2[3];
		} EXTRACTINGINFOEX;

	dwStructSize		\̂̃TCYB
	exinfo			EXTRACTINGINFO \̂i[܂B
				݊̂߂ɎcĂ邾łB
	dwFileSize		i[t@C̃TCYB
	dwCompressedSize	i[t@C̈kTCYB
	dwWriteSize		WJŏ񂾃TCYB
	dwAttributes		i[t@C̑B
	dwCRC			i[t@C̃`FbNTB
	uOSType 		t@Ci[ۂɎgꂽ OSB
					 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	̑ (Windows95)
	wRatio			p[~ (番) ɂi[t@C̈
				kB
	ftCreateFile		FILETIME `ɂt@C̍쐬B
				FILETIME `Ƃ Jan.1,1601 00:00:00 
				 100ns Pʂ̌oߎԂ 64bit ̐l
				ŕ\̂łB ڂ Win32 API 
				wvQƂĂB
	ftAccessTime		FILETIME `ɂt@C̎QƓB
	ftWriteTime		FILETIME `ɂt@C̍XVB
	szMode			UNARJ32.DLL ł͊i[t@C̊e푮
				񂪊i[Ă܂B
	szSourceFileName	si[t@CB
	szDestFileName		ۂɏ܂pXB


-----------------------------------------------------------------------
%7. 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;
			TCHAR		szMode[8];
			TCHAR		szSourceFileName[FNAME_MAX32 + 1];
			TCHAR		dummy1[3];
			TCHAR		szDestFileName[FNAME_MAX32 + 1];
			TCHAR		dummy2[3];
		} EXTRACTINGINFOEX;

	dwStructSize		\̂̃TCYB
	exinfo			EXTRACTINGINFO \̂i[܂B
				݊̂߂ɎcĂ邾łB
	llFileSize		i[t@C̃TCYB
	llCompressedSize	i[t@C̈kTCYB
	llWriteSize		WJŏ񂾃TCYB
	dwAttributes		i[t@C̑B
	dwCRC			i[t@C̃`FbNTB
	uOSType 		t@Ci[ۂɎgꂽ OSB
					 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	̑ (Windows95)
	wRatio			p[~ (番) ɂi[t@C̈
				kB
	ftCreateFile		FILETIME `ɂt@C̍쐬B
				FILETIME `Ƃ Jan.1,1601 00:00:00 
				 100ns Pʂ̌oߎԂ 64bit ̐l
				ŕ\̂łB ڂ Win32 API 
				wvQƂĂB
	ftAccessTime		FILETIME `ɂt@C̎QƓB
	ftWriteTime		FILETIME `ɂt@C̍XVB
	szMode			UNARJ32.DLL ł͊i[t@C̊e푮
				񂪊i[Ă܂B
	szSourceFileName	si[t@CB
	szDestFileName		ۂɏ܂pXB


------------------------------------------------------------------------
%6. ̗
------------------------------------------------------------------------
PDnMode 3 ŃbZ[W𑗏oBɖ𓾂܂B

@OsꍇiWJ̍v`FbNjɂ͈ȉ̃bZ[W
oB

QDnMode 5 ŃbZ[W𑗏oBi[t@C܂BI
    ܂ŁCɃ}b`t@CƂɃbZ[W𑗏oB

RDi[t@C nMode 0 ŃbZ[W𑗏oB i[t@C𓾂
    ܂B

@WJȂǂ̏sꂽꍇCȉ̃bZ[WɑoB

SDnMode 0 ŃbZ[W𑗏oBi[t@C𓾂܂B
TDnMode 1 ŃbZ[W𑗏oB݃TCY܂B̃t@C
    ɂĂ̓WJI܂ŁC̃bZ[W𑗏o܂B

@ׂĂ̏I_ŁiWJ󋵕\^C~OjC

UDnMode 2 ŃbZ[W𑗏oB

=======================================================================
