=======================================================================
      UNLHA32.DLL Ver 3.00  EBhEYEbZ[Wt@C
=======================================================================

					       l (May. 7,2017)


͂߂

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

    API.TXT	 : 𐬂 Unlha() ny OpenArchive() n API ̐
    NOTE2.TXT	 : API.TXT ̕⑫
    COMMAND.TXT  : Unlha() ɓnR}hɂĂ̐
    NOTE.TXT	 : COMMAND.TXT ̕⑫
    WINMES.TXT	 : SetOwnerWindow() n API ̐
    ENUMAPI.TXT  : SetEnumMembersProc() n API ̐
    STRTABLE.TXT : XgOe[uƌݒp API ɂĂ̐
    HEADER.TXT	 : LZH Ƀwb_dl̐
    INFCOM.TXT	 : Win32SFXM Ŏgp $ t@CR}h̐
    QandA.TXT	 : ߋɂȎW
    HISTORY.TXT  : C

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

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

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

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

-----------------------------------------------------------------------
BOOL WINAPI UnlhaSetOwnerWindow(
		const HWND  _hwnd
	    )
-----------------------------------------------------------------------
	 90 : UnlhaSetOwnerWindow
	390 : UnlhaSetOwnerWindowA
	690 : UnlhaSetOwnerWindowW
v	UnlhaSetOwnerWindow  : 0.01
	UnlhaSetOwnerWindowA : 2.39a
	UnlhaSetOwnerWindowW : 2.40
@\
	UNLHA32.DLL ̃bZ[W̑MEBhEݒ肵܂BUNLHA32.
	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𓾂ɂ UnlhaGet-
			LastError() API gpĂB

Unicode
	Ver 2.40 ȍ~ł Unicode ł ANSI łĂ܂C Win
	9x nɂẮC VXe Unicode  ɑΉĂȂƂC
	ŏIIɂ ANSI ֕ϊďs܂B


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

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

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

-----------------------------------------------------------------------
BOOL WINAPI UnlhaSetOwnerWindowEx(
		const HWND	_hwnd,
		LPARCHIVERPROC	_lpArcProc
	    )
-----------------------------------------------------------------------
	 51 : UnlhaSetOwnerWindowEx
	351 : UnlhaSetOwnerWindowExA
	651 : UnlhaSetOwnerWindowExW
v	UnlhaSetOwnerWindowEx  : 0.70
	UnlhaSetOwnerWindowExA : 2.39a
	UnlhaSetOwnerWindowExW : 2.40
@\
	UNLHA32.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𓾂ɂ UnlhaGet-
			LastError() API gpĂB

Unicode
	Ver 2.40 ȍ~ł Unicode ł ANSI łĂ܂C Win
	9x nɂẮC VXe Unicode  ɑΉĂȂƂC
	ŏIIɂ ANSI ֕ϊďs܂B


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

-----------------------------------------------------------------------
BOOL WINAPI UnlhaKillOwnerWindowEx(
		const HWND  _hwnd
	    )
-----------------------------------------------------------------------
	52
v	0.70
@\
	UnlhaSetOwnerWindowEx() Őݒ肵EBhE̐ݒ܂B


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

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

-----------------------------------------------------------------------
BOOL WINAPI UnlhaSetOwnerWindowEx64(
		const HWND	_hwnd,
		LPARCHIVERPROC	_lpArcProc,
		const DWORD	_dwStructSize
	    )
-----------------------------------------------------------------------
	108
v	1.60
@\
	UNLHA32.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𓾂ɂ UnlhaGet-
			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 UnlhaKillOwnerWindowEx64(
		const HWND  _hwnd
	    )
-----------------------------------------------------------------------
	109
v	1.60
@\
	UnlhaSetOwnerWindowEx64() Őݒ肵EBhE̐ݒ܂B


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

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


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

wm_arcextract

@wm_arcextract bZ[ẂCUnlhaSetOwnerWindow() Őݒ肵EBhE
 UNLHA32.DLL 瑗܂B̃bZ[W󂯎邱ƂɂC
UNLHA32 ꂩ珈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[hBUNLHA32.DLL ̏̏Ԃȉ̐l
			ŕ\܂B

			0 : UNLHA32.DLL Yt@C̏Jn邱
			    Ƃ\܂B
			1 : UNLHA32.DLL Yt@C̏ł邱
			    \܂B
			2 : UNLHA32.DLL IClpEis ̃[
			    J悤ƂĂ邱Ƃ\܂B
			3 : UNLHA32.DLL Yɂ̏Jn邱Ƃ
			    \܂B szSourceFileName ɏɖi[
			    ܂B
			4 : UNLHA32.DLL ƃt@C̏߂Jn
			    邱Ƃ\܂BszSourceFileName ɍƃt@
			    Ci[܂B
			5 : UNLHA32.DLL t@CT[`ł邱Ƃ
			    \܂BɃ}b`t@C̃t@C
			    ܂B
			6 : UNLHA32.DLL Yt@C̊i[I
			    \܂BkTCY͂̃bZ[W
			    _ŗLƂȂ܂B
			7 : UNLHA32.DLL ɂ̃`FbNJn邱Ƃ
			    \܂B szSourceFileName ɍƃt@C
			    i[܂B

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

߂l
	0		UNLHA32.DLL ɏ̌pw܂B
	0 ȊO		UNLHA32.DLL ɏ𒆎~܂B CnMode
			 4  ̏ꍇ (Əɂ̏߂) ͒~
			Ƃł܂B


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

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


	_hwnd		UnlhaSetOwnerWindowEx Ŏ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
		    UnlhaSetOwnerWindowEx() 	sizeof(EXTRACTINGINFOEX)
		    w肵 UnlhaSetOwnerWindowEx64() gpꍇB
	    LPEXTRACTINGINFOEX32 _lpEis
		    sizeof(EXTRACTINGINFOEX32) w肵 UnlhaSetOwner-
		    WindowEx64() gpꍇB
	    LPEXTRACTINGINFOEX64 _lpEis
		    sizeof(EXTRACTINGINFOEX64) w肵 UnlhaSetOwner-
		    WindowEx64() gpꍇB

߂l
	TRUE		UNLHA32.DLL ɏ̌pw܂B
	FALSE		UNLHA32.DLL ɏ𒆎~܂B C
			_nState  4  ̏ꍇ (Əɂ̏߂) ͒
			~邱Ƃł܂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
					 2	UNIX
					 4	MAC-OS
					 5	OS/2
					10	̑
					11	OS9
					12	OS/68K
					12	OS/386
					14	HUMAN
					15	CP/M
					16	FLEX
					17	Runser
					18	Windows NT n OS
					19	Windows 95 n OS
	wRatio			p[~ (番) ɂi[t@C̈
				kB
	wDate			ftime ̏ʃ[hƓ̍\Ōꂽ
				i[t@C̓t ([J^C)B
				    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̎ ([J^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 Ñt@C
				̏ꍇC 00:00:01 błꍇ
				R܂Ĉ悤ȃf[^̈v
				bgtH[ɂقȂĂ邱Ƃɒ
				ĂB Win32sCWindows 95 ł͊ۂ
				̍ۂɐ؂̂Ăs܂C̑ł͐
				グs܂B  ɒӂKvȂ̂
				Windows 98 łCAPI ̃oOCSetFile-
				Time()	ł͐؂グsɂ
				炸 FileTimeToDosDateTime()  ł͐؂̂
				Ă܂܂B
				UNLHA32.DLL ł́CWin32 API gpȂ
				ƂɂC Windows 98 ɂĂ؂グ
				lԂ悤ɂȂĂ܂B
				(Ver 1.32 ȍ~)
	szAttribute		i[t@C̑B
	szMode			UNLHA32.DLL ł͈k\bh̕񂪊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
					 2	UNIX
					 4	MAC-OS
					 5	OS/2
					10	̑
					11	OS9
					12	OS/68K
					12	OS/386
					14	HUMAN
					15	CP/M
					16	FLEX
					17	Runser
					18	Windows NT n OS
					19	Windows 95 n OS
	wRatio			p[~ (番) ɂi[t@C̈
				kB
	ftCreateFile		FILETIME `ɂt@C̍쐬B
				UTC ŋL^܂B
				FILETIME `Ƃ Jan.1,1601 00:00:00 
				 100ns Pʂ̌oߎԂ 64bit ̐l
				ŕ\̂łB ڂ Win32 API 
				wvQƂĂB
	ftAccessTime		FILETIME `ɂt@C̎QƓB
				UTC ŋL^܂B
	ftWriteTime		FILETIME `ɂt@C̍XVB
				UTC ŋL^܂B
	szMode			UNLHA32.DLL ł͈k\bh̕񂪊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
					 2	UNIX
					 4	MAC-OS
					 5	OS/2
					10	̑
					11	OS9
					12	OS/68K
					12	OS/386
					14	HUMAN
					15	CP/M
					16	FLEX
					17	Runser
					18	Windows NT n OS
					19	Windows 95 n OS
	wRatio			p[~ (番) ɂi[t@C̈
				kB
	ftCreateFile		FILETIME `ɂt@C̍쐬B
				UTC ŋL^܂B
				FILETIME `Ƃ Jan.1,1601 00:00:00 
				 100ns Pʂ̌oߎԂ 64bit ̐l
				ŕ\̂łB ڂ Win32 API 
				wvQƂĂB
	ftAccessTime		FILETIME `ɂt@C̎QƓB
				UTC ŋL^܂B
	ftWriteTime		FILETIME `ɂt@C̍XVB
				UTC ŋL^܂B
	szMode			UNLHA32.DLL ł͈k\bh̕񂪊i
				[Ă܂B
	szSourceFileName	si[t@CB
	szDestFileName		ۂɏ܂pXB


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

@Osꍇii[̈kt@C̃T[`CWJ̍v`Fb
  Njɂ͈ȉ̃bZ[W𑗏oB

QDnMode 5 ŃbZ[W𑗏oBi[t@CƊi[ɂ̓T[`ꂽt@
    C܂BI܂ŁCɃ}b`t@C
    ɃbZ[W𑗏oB

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

@i[EWJȂǂ̏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[̏ꍇ͈kʂ񍐂邽߈ȉ̃bZ[W𑗏o

UDnMode 6 ŃbZ[W𑗏oBi[̏ꍇ́C̃bZ[WŎn߂đS
    ̃o[LƂȂ܂B

  ɑ̏ꍇ́Cȉ 7`10 ̃bZ[W𑗏oB

VD"-jsv" XCb`w肳ꂽꍇɂ́C nMode 7 ŃbZ[W𑗏o
    ƂɂC[Nt@C̃`FbN̊Jn\܂B
WDnMode 1 ŃbZ[W𑗏oB[Nt@C̃`FbNI܂ł
    ̃bZ[W𑗏o܂B
XDnMode 4 ŃbZ[W𑗏o邱ƂŁC[Nt@C߂̊Jn
    \܂B[Nt@C𓾂܂B
10DnMode 1 ŃbZ[W𑗏oB[Nt@C̏߂I܂ł
    ̃bZ[W𑗏o܂B

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

11DnMode 2 ŃbZ[W𑗏oB

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