SHA1 Hash: | 13b720362245d14896c56eceaa328ad095439687 |
---|---|
Date: | 2011-02-23 12:48:03 |
User: | kinaba |
Comment: | Initial import. |
Timelines: | family | ancestors | trunk |
Downloads: | Tarball | ZIP archive |
Other Links: | files | file ages | manifest |
- branch=trunk inherited from [db64082547]
- sym-trunk inherited from [db64082547]
Added ArcACE.cpp version [eeea8ebd808979ec]
1 + 2 +#include "stdafx.h" 3 +#include "ArcAce.h" 4 +#include "NoahApp.h" 5 + 6 + 7 +int CArcAce::v_load() 8 +{ 9 + if( hDLL = kiSUtil::loadLibrary("UnAceV2") ) 10 + { 11 + if( (aceInit = (FI)::GetProcAddress( hDLL,"ACEInitDll" )) 12 + && (aceHead = (FR)::GetProcAddress( hDLL,"ACEReadArchiveData" )) 13 + && (aceList = (FL)::GetProcAddress( hDLL,"ACEList" )) 14 + && (aceTest = (FT)::GetProcAddress( hDLL,"ACETest" )) 15 + && (aceExtr = (FE)::GetProcAddress( hDLL,"ACEExtract" )) ) 16 + { 17 + tACEInitDllStruc ini; 18 + ki_memzero( &ini, sizeof(ini) ); 19 + 20 + ini.GlobalData.Obj = this; 21 + ini.GlobalData.MaxArchiveTestBytes = 0x2ffFF; 22 + ini.GlobalData.MaxFileBufSize = 0x2ffFF; 23 + ini.GlobalData.InfoCallbackProc = callback_info; 24 + ini.GlobalData.ErrorCallbackProc = callback_error; 25 + ini.GlobalData.RequestCallbackProc = callback_request; 26 + ini.GlobalData.StateCallbackProc = callback_state; 27 + ini.GlobalData.DecryptPassword = pwdBuf; 28 + 29 + if( 0 == aceInit( &ini ) ) 30 + return aCheck|aMelt|aList|aMeltEach; 31 + } 32 + 33 + ::FreeLibrary( hDLL ); 34 + hDLL = NULL; 35 + } 36 + return 0; 37 +} 38 + 39 +bool CArcAce::v_ver( kiStr& str ) 40 +{ 41 + str = "UnAceV2.dll "; 42 + 43 + //-- ���݊m�F 44 + char buf[40]; 45 + if( hDLL ) 46 + if( GetVersionInfoStr( "UnAceV2", buf, sizeof(buf) ) ) 47 + str += buf; 48 + else 49 + str += "OK!"; 50 + else 51 + str += "----"; 52 + 53 + return true; 54 +} 55 + 56 +bool CArcAce::v_check( const kiPath& aname ) 57 +{ 58 + //-- ���ɏ���ǂݍ���ł݂� 59 + tACEReadArchiveDataStruc dt; 60 + ki_memzero( &dt, sizeof(dt) ); 61 + return ( 0==aceHead( const_cast<char*>((const char*)aname), &dt ) 62 + && NULL!=dt.ArchiveData ); 63 +} 64 + 65 +bool CArcAce::v_list( const arcname& aname, aflArray& files ) 66 +{ 67 + list = &files; 68 + 69 + //-- ���X�e�B���O�J�n�I 70 + tACEListStruc lst; 71 + ki_memzero( &lst, sizeof(lst) ); 72 + lst.Files.SourceDir = ""; 73 + lst.Files.FileList = "*"; 74 + lst.Files.ExcludeList = ""; 75 + lst.Files.FullMatch = FALSE; 76 + 77 + char anm[MAX_PATH]; 78 + ki_strcpy( anm, aname.basedir ); 79 + ki_strcat( anm, aname.lname ); 80 + 81 + return ( 0==aceList( anm, &lst ) ); 82 +} 83 + 84 +int CArcAce::v_contents( const kiPath& aname, kiPath& dname ) 85 +{ 86 + list = NULL; 87 + aCnt = aUnknown; 88 + dName = &dname; 89 + 90 + //-- ���X�e�B���O�J�n�I 91 + tACEListStruc lst; 92 + ki_memzero( &lst, sizeof(lst) ); 93 + lst.Files.SourceDir = ""; 94 + lst.Files.FileList = "*"; 95 + lst.Files.ExcludeList = ""; 96 + lst.Files.FullMatch = TRUE; 97 + if( 0!=aceList( const_cast<char*>((const char*)aname), &lst ) ) 98 + return aMulti; 99 + return aCnt; 100 +} 101 + 102 +int CArcAce::v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ) 103 +{ 104 + pathCheck = new CArcPathCheckDlg; 105 + 106 + //-- �n���t�@�C�����X�g�쐬 107 + kiStr lst; 108 + if( files ) 109 + { 110 + dlg = NULL; 111 + for( unsigned int i=0; i!=list->len(); i++ ) 112 + if( (*files)[i].selected ) 113 + lst += (*files)[i].inf.szFileName, lst += '\xd'; 114 + } 115 + else 116 + lst = "*", dlg = new CArcProgressDlg( 32768 ); 117 + 118 + //-- �W�J�J�n�I 119 + ::SetCurrentDirectory( ddir ); 120 + 121 + m_aname = aname.lname; 122 + pwdBuf[0] = -1; 123 + 124 + tACEExtractStruc ex; 125 + ki_memzero( &ex, sizeof(ex) ); 126 + ex.Files.SourceDir = ""; 127 + ex.Files.FileList = const_cast<char*>((const char*)lst); 128 + ex.Files.ExcludeList = ""; 129 + ex.Files.FullMatch = files==NULL; 130 + ex.DestinationDir = const_cast<char*>((const char*)ddir); 131 + ex.ExcludePath = FALSE; 132 + ex.DecryptPassword = ""; 133 + 134 + char anm[MAX_PATH]; 135 + ki_strcpy( anm, aname.basedir ); 136 + ki_strcat( anm, aname.lname ); 137 + 138 + m_bCanceled = false; 139 + bool ans = ( 0==aceExtr( anm, &ex ) ); 140 + if( dlg && ans ) 141 + { 142 + dlg->change(NULL,32768); 143 + ::Sleep(100); 144 + } 145 + delete dlg; 146 + delete pathCheck; 147 + return ans ? 0 : (m_bCanceled?0x8020:0xffff); 148 +} 149 + 150 +int __stdcall CArcAce::callback_error( pACEErrorCallbackProcStruc Error ) 151 +{ 152 + return ACE_CALLBACK_RETURN_OK; 153 +} 154 + 155 +int __stdcall CArcAce::callback_info( pACEInfoCallbackProcStruc Info ) 156 +{ 157 + return ACE_CALLBACK_RETURN_OK; 158 +} 159 + 160 +int __stdcall CArcAce::callback_request( pACERequestCallbackProcStruc Request ) 161 +{ 162 + // �p�X���[�h�v������ ... ArchivedFile 163 + if( Request->Global.Code == ACE_CALLBACK_REQUEST_PASSWORD 164 + && Request->Global.Operation == ACE_CALLBACK_OPERATION_EXTRACT ) 165 + { 166 + CArcAce* ace = (CArcAce*)(Request->Global.GlobalData->Obj); 167 + if( ace->pwdBuf[0] == -1 ) 168 + { 169 + ace->pwdBuf[0]=0; 170 + 171 + CArcPwdDlg pwd( ace->dlg ? ace->dlg->hwnd() : NULL, ace->pwdBuf, 60, ace->m_aname ); 172 + if( IDCANCEL == pwd.getEndCode() ) 173 + { 174 + ace->m_bCanceled = true; 175 + return ACE_CALLBACK_RETURN_CANCEL; 176 + } 177 + 178 + Request->Global.GlobalData->DecryptPassword = ace->pwdBuf; 179 + } 180 + } 181 + 182 + if( Request->Global.Code == ACE_CALLBACK_REQUEST_CHANGEVOLUME ) 183 + if( !kiSUtil::exist(Request->Archive.ArchiveData->ArchiveName) ) 184 + return ACE_CALLBACK_RETURN_CANCEL; 185 + 186 + return ACE_CALLBACK_RETURN_OK; 187 +} 188 + 189 +int __stdcall CArcAce::callback_state( pACEStateCallbackProcStruc State ) 190 +{ 191 + // �t�@�C�������J�n����or���X�g 192 + if( State->Progress.Code == ACE_CALLBACK_STATE_STARTFILE ) 193 + { 194 + CArcAce* ptr = (CArcAce*)(State->ArchivedFile.GlobalData->Obj); 195 + 196 + if( State->Progress.Operation == ACE_CALLBACK_OPERATION_LIST ) 197 + { 198 + if( !ptr->listup( *(State->ArchivedFile.FileData) ) ) 199 + return ACE_CALLBACK_RETURN_CANCEL; 200 + } 201 + else if( State->Progress.Operation == ACE_CALLBACK_OPERATION_EXTRACT ) 202 + { 203 + if( ptr->dlg ) 204 + ptr->dlg->change( State->ArchivedFile.FileData->SourceFileName ); 205 + if( ptr->pathCheck ) 206 + if( containsDangerPath( State->ArchivedFile.FileData->SourceFileName ) ) 207 + if( ! ptr->pathCheck->is_ok_to_extract( State->ArchivedFile.FileData->SourceFileName, ptr->dlg ) ) 208 + return ACE_CALLBACK_RETURN_CANCEL; 209 + } 210 + } 211 + // �i�W�O���t���� 212 + else if( State->Progress.Code == ACE_CALLBACK_STATE_PROGRESS ) 213 + { 214 + CArcAce* ptr = (CArcAce*)(State->ArchivedFile.GlobalData->Obj); 215 + 216 + if( State->Progress.Operation == ACE_CALLBACK_OPERATION_EXTRACT && ptr->dlg ) 217 + { 218 + unsigned long prs = (unsigned long)State->Progress.ProgressData->TotalProcessedSize; 219 + unsigned long ttl = (unsigned long)State->Progress.ProgressData->TotalSize; 220 + ptr->dlg->change( NULL, ttl ? (int)((((__int64)prs)<<15)/ttl) : 10000 ); 221 + if( !ptr->dlg->msgloop() ) 222 + { 223 + ptr->m_bCanceled = true; 224 + return ACE_CALLBACK_RETURN_CANCEL; 225 + } 226 + } 227 + } 228 + // CRC�`�F�b�N���� 229 + else if( State->Progress.Code == ACE_CALLBACK_STATE_ENDCRCCHECK ) 230 + { 231 + if( !State->CRCCheck.CRCOk ) 232 + ::DeleteFile( State->CRCCheck.FileData->SourceFileName ); 233 + } 234 + 235 + return ACE_CALLBACK_RETURN_OK; 236 +} 237 + 238 +bool CArcAce::listup( tACEFileDataStruc& f ) 239 +{ 240 + if( list ) // �S�t�@�C�����X�e�B���O���[�h 241 + { 242 + arcfile x; 243 + 244 + ki_strcpy( x.inf.szFileName, f.SourceFileName ); 245 + x.isfile = ( 0== (f.Attributes & 0x10) ); //_A_SUBDIR 246 + x.inf.dwCompressedSize = (unsigned long)f.CompressedSize; 247 + x.inf.dwOriginalSize = (unsigned long)f.Size; 248 + x.inf.wDate = (unsigned short)(f.Time>>16); 249 + x.inf.wTime = (unsigned short)(f.Time); 250 + 251 + if( f.Method==0 ) ki_strcpy( x.inf.szMode, "store" ); 252 + else if( f.Method&2 ) ki_strcpy( x.inf.szMode, "ace2" ); 253 + else if( f.Method&1 ) ki_strcpy( x.inf.szMode, "ace1" ); 254 + else ki_strcpy( x.inf.szMode, "-ace-" ); 255 + 256 + list->add( x ); 257 + return true; 258 + } 259 + 260 + // ���ɓ��t�@�C���\���������[�h 261 + for( const char* p=f.SourceFileName; *p; p=kiStr::next(p) ) 262 + if( *p=='\\' || *p=='/' ) 263 + return true; // ���[�g�̃t�@�C���̂ݏ����Ώہc 264 + 265 + if( aCnt != aUnknown ) 266 + return false; 267 + 268 + aCnt = (f.Attributes & 0x10) ? aSingleDir : aSingleFile; 269 + if( aCnt == aSingleDir ) 270 + *dName = f.SourceFileName; 271 + 272 + return true; 273 +}
Added ArcACE.h version [c407465455d14dd7]
1 +#ifndef AFX_ARCACE_H__84B9CB87_29F7_428D_A3E7_F239213B127C__INCLUDED_ 2 +#define AFX_ARCACE_H__84B9CB87_29F7_428D_A3E7_F239213B127C__INCLUDED_ 3 + 4 +#include "Archiver.h" 5 +#include "SubDlg.h" 6 + 7 +#include "unacedef.h" 8 + 9 +class CArcAce : public CArchiver 10 +{ 11 +public: //-- CArchiver ���� -------------------------------- 12 + 13 + CArcAce() : CArchiver("ace."), hDLL( NULL ) {} 14 + virtual ~CArcAce() 15 + { 16 + if(hDLL) 17 + ::FreeLibrary(hDLL); 18 + } 19 +private: 20 + int v_load(); 21 + bool v_ver( kiStr& str ); 22 + bool v_check( const kiPath& aname ); 23 + int v_contents( const kiPath& aname, kiPath& dname ); 24 + int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 25 + bool v_list( const arcname& aname, aflArray& files ); 26 + kiStr v_name(const char*) const { return "Unace32"; } 27 + 28 +private: //-- UnAceV2.DLL ���� ------------------------------ 29 + 30 + HINSTANCE hDLL; 31 + static int __stdcall callback_error( pACEErrorCallbackProcStruc Error ); 32 + static int __stdcall callback_request( pACERequestCallbackProcStruc Request ); 33 + static int __stdcall callback_state( pACEStateCallbackProcStruc State ); 34 + static int __stdcall callback_info( pACEInfoCallbackProcStruc Info ); 35 + bool listup( tACEFileDataStruc& f ); 36 + aflArray* list; 37 + CArcProgressDlg* dlg; 38 + CArcPathCheckDlg* pathCheck; 39 + char pwdBuf[100]; 40 + const char* m_aname; 41 + int aCnt; 42 + kiPath* dName; 43 + bool m_bCanceled; 44 + 45 +private: //-- UnAce.h --------------------------------------- 46 + 47 + // API 48 + typedef int (__stdcall *FI)( pACEInitDllStruc ); 49 + typedef int (__stdcall *FR)( LPSTR, pACEReadArchiveDataStruc ); 50 + typedef int (__stdcall *FL)( LPSTR, pACEListStruc ); 51 + typedef int (__stdcall *FT)( LPSTR, pACETestStruc ); 52 + typedef int (__stdcall *FE)( LPSTR, pACEExtractStruc ); 53 + FI aceInit; FR aceHead; FL aceList; FT aceTest; FE aceExtr; 54 +}; 55 + 56 +#endif
Added ArcB2e.cpp version [6032eb8a0710b17d]
1 + 2 +#include "stdafx.h" 3 +#include "ArcB2e.h" 4 +#include "resource.h" 5 +#include "NoahApp.h" 6 + 7 +//----------------- ArcB2e�N���X�S�̓I�ȏ��� ------------------------------ 8 + 9 +char CArcB2e::st_base[MAX_PATH]; 10 +int CArcB2e::st_life=0; 11 +CArcB2e::CB2eCore* CArcB2e::rvm=NULL; 12 + 13 +const char* CArcB2e::init_b2e_path() 14 +{ 15 + kiPath dir( kiPath::Exe ); 16 + ki_strcpy( st_base, dir+="b2e\\" ); 17 + return st_base; 18 +} 19 + 20 +CArcB2e::CArcB2e( const char* scriptname ) : CArchiver( scriptname ) 21 +{ 22 + st_life++; 23 + exe = NULL; 24 + m_LstScr = m_DcEScr = m_EncScr = 25 + m_DecScr = m_SfxScr = m_LoadScr= m_ScriptBuf = NULL; 26 +} 27 + 28 +CArcB2e::~CArcB2e() 29 +{ 30 + if( !(--st_life) ) 31 + delete rvm; 32 + delete [] m_ScriptBuf; 33 +} 34 + 35 +//------------------- �X�N���v�g���ɂ��܂�W���Ȃ����� ------------------------- 36 + 37 +bool CArcB2e::v_ver( kiStr& str ) 38 +{ 39 + if( !exe ) 40 + return false; 41 + exe->ver( str ); 42 + 43 + kiStr tmp; 44 + for( int i=0,e=m_subFile.len(); i<e; ++i ) 45 + { 46 + str += "\r\n"; 47 + CArcModule(m_subFile[i]).ver( tmp ); 48 + str += tmp; 49 + } 50 + return true; 51 +} 52 + 53 +bool CArcB2e::v_check( const kiPath& aname ) 54 +{ 55 + return exe ? exe->chk( aname ) : false; 56 +} 57 + 58 +int CArcB2e::v_contents( const kiPath& aname, kiPath& dname ) 59 +{ 60 + return exe ? exe->cnt( aname, dname ) : aUnknown; 61 +} 62 + 63 +//------------------- �X�N���v�g��ǂݍ��݁�eval( load: ) ------------------- 64 + 65 +bool CArcB2e::load_module( const char* name ) 66 +{ 67 + exe = new CArcModule( name, m_usMode ); 68 + return exe->exist(); 69 +} 70 + 71 +int CArcB2e::v_load() 72 +{ 73 + //-- �g���X�N���v�g�t�@�C�����J�� 74 + kiStr fname( st_base ); fname += mlt_ext(); 75 + kiFile fp; 76 + if( fp.open( fname ) ) 77 + { 78 + //-- �t�@�C���S�̂�ǂݍ��� 79 + unsigned int ln=fp.getSize(); 80 + m_ScriptBuf = new char[ ln+1 ]; 81 + ln = fp.read( (unsigned char*)m_ScriptBuf, ln ); 82 + m_ScriptBuf[ ln ] = '\0'; 83 + 84 + //-- section���ɐ蕪���� 85 + bool pack1,chk=false; 86 + for( char* p=m_ScriptBuf; *p; p++ ) 87 + { 88 + switch( *p ) 89 + { 90 + case 'c': case 'd': case 'e': case 'l': case 's': 91 + if( ki_memcmp(p,"load:",5) ) 92 + *p='\0', m_LoadScr = (p+=4)+1; 93 + else if( ki_memcmp(p,"encode:",7) ) 94 + *p='\0', m_EncScr = (p+=6)+1, pack1=false; 95 + else if( ki_memcmp(p,"encode1:",8) ) 96 + *p='\0', m_EncScr = (p+=7)+1, pack1=true; 97 + else if( ki_memcmp(p,"decode:",7) ) 98 + *p='\0', m_DecScr = (p+=6)+1; 99 + else if( ki_memcmp(p,"sfx:",4) ) 100 + *p='\0', m_SfxScr = (p+=3)+1, m_SfxDirect=false; 101 + else if( ki_memcmp(p,"sfxd:",5) ) 102 + *p='\0', m_SfxScr = (p+=4)+1, m_SfxDirect=true; 103 + else if( ki_memcmp(p,"check:",6) ) 104 + *p='\0', (p+=5), chk=true; 105 + else if( ki_memcmp(p,"decode1:",8) ) 106 + *p='\0', m_DcEScr = (p+=7); 107 + else if( ki_memcmp(p,"list:",5) ) 108 + *p='\0', m_LstScr = (p+=4); 109 + } 110 + while( *p && *p!='\n' && *p!='\r' ) 111 + p++; 112 + if( *p=='\0' ) 113 + break; 114 + } 115 + 116 + //-- [load:]�����s�I 117 + if( m_LoadScr ) 118 + { 119 + //-- RythpVM �N�� 120 + if( !rvm ) 121 + rvm = new CB2eCore; 122 + 123 + //-- ������ 124 + m_Result=0; 125 + rvm->setPtr( this,mLod ); 126 + 127 + //-- ���s 128 + rvm->eval( m_LoadScr ); 129 + 130 + //-- ���� 131 + if( m_Result==0 ) 132 + return (m_DecScr?aMelt|(m_DcEScr?aList|aMeltEach:0)|(chk?aCheck:0):0) 133 + | (m_EncScr?aCompress|(pack1?0:aArchive)|(m_SfxScr?aSfx:0):0); 134 + } 135 + } 136 + return 0; 137 +} 138 + 139 +int CArcB2e::exec_script( const char* scr, scr_mode mode ) 140 +{ 141 + //-- ������ 142 + m_Result = 0; 143 + rvm->setPtr( this, mode ); 144 + 145 + //-- ���s 146 + char* script = new char[ki_strlen(scr)+8]; 147 + ki_strcpy( script, "(exec " ); 148 + ki_strcat( script, scr ); 149 + ki_strcat( script, ")" ); 150 + rvm->eval( script ); 151 + delete [] script; 152 + 153 + //-- ���� 154 + return m_Result; 155 +} 156 + 157 +//-------------------- ���X�g�A�b�v eval( list: ) ----------------------- 158 + 159 +bool CArcB2e::v_list( const arcname& aname, aflArray& files ) 160 +{ 161 + //-- �X�N���v�g�����ʼn��Ƃ��ł���Ȃ炷��B 162 + if( !exe ) 163 + return false; 164 + else if( exe->isdll() ) 165 + return exe->lst_dll( aname, files ); 166 + else if( !m_LstScr ) 167 + return false; 168 + 169 +//-- ���X�e�B���O�X�N���v�g�ɕK�v�ȃf�[�^ 170 + 171 + // ���ɖ� 172 + m_psArc = &aname; 173 + // �t�@�C�����X�g 174 + m_psAInfo = &files; 175 + 176 +//-- ���s�I --------------------- 177 + 178 + return 0==exec_script( m_LstScr, mLst ); 179 +} 180 + 181 +//-------------------- �W�J���� eval( decode: ) ----------------------- 182 + 183 +int CArcB2e::v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ) 184 +{ 185 +//-- �𓀃X�N���v�g�ɕK�v�ȃf�[�^ 186 + 187 + // �J�����g 188 + ::SetCurrentDirectory( ddir ); 189 + // ���ɖ� 190 + m_psArc = &aname; 191 + // �o�͐�f�B���N�g�� 192 + m_psDir = &ddir; 193 + // �t�@�C�����X�g 194 + m_psAInfo = files; 195 + 196 +//-- ���s�I --------------------- 197 + 198 + return exec_script( files ? m_DcEScr : m_DecScr, 199 + files ? mDc1 : mDec ); 200 +} 201 + 202 +//-------------------- ���k���� eval( encode: sfx: ) ----------------------- 203 + 204 +int CArcB2e::cmpr( const char* scr, const kiPath& base, const wfdArray& files, const kiPath& ddir, const int method ) 205 +{ 206 +//-- ���k�X�N���v�g�ɕK�v�ȃf�[�^ 207 + 208 + arcname aname( 209 + ddir, 210 + files[0].cAlternateFileName, 211 + files[0].cFileName ); 212 + int mhd=method+1; 213 + 214 + // �J�����g 215 + ::SetCurrentDirectory( base ); 216 + // ���ɖ� 217 + m_psArc = &aname; 218 + // �x�[�X�f�B���N�g�� 219 + m_psDir = &base; 220 + // ���\�b�h 221 + m_psMhd = &mhd; 222 + // ���X�g 223 + m_psList = &files; 224 + 225 +//-- ���s�I -------------------- 226 + 227 + return exec_script( scr, mEnc ); 228 +} 229 + 230 +bool CArcB2e::arc2sfx( const kiPath& temp, const kiPath& dest ) 231 +{ 232 +//-- SFX�ϊ��X�N���v�g�ɕK�v�ȃf�[�^ 233 + 234 + kiFindFile f; 235 + WIN32_FIND_DATA fd; 236 + kiPath wild( temp ); 237 + f.begin( wild += "*" ); 238 + if( !f.next( &fd ) ) 239 + return false; 240 + kiPath from, to, oldname( fd.cFileName ); 241 + arcname aname( temp, fd.cAlternateFileName[0] ? fd.cAlternateFileName : fd.cFileName, fd.cFileName ); 242 + 243 + // �J�����g 244 + ::SetCurrentDirectory( temp ); 245 + // ���ɖ� 246 + m_psArc = &aname; 247 + // �f�B���N�g�� 248 + m_psDir = &temp; 249 + 250 +//-- ���s�I ---------------------- 251 + 252 + if( 0x8000<=exec_script( m_SfxScr, mSfx ) ) 253 + return false; 254 + 255 +//-- �R�s�[ ---------------------- 256 + 257 + bool skipped=false, ans=false; 258 + f.begin( wild ); 259 + while( f.next( &fd ) ) 260 + { 261 + if( !skipped && oldname == fd.cFileName ) // �e���|�������ɂ̓R�s�[���Ȃ��B 262 + { 263 + skipped=true; 264 + continue; 265 + } 266 + from = temp, from += fd.cFileName; 267 + to = dest, to += fd.cFileName; 268 + if( ::CopyFile( from, to, FALSE ) ) 269 + ans = true; 270 + } 271 + return ans; 272 +} 273 + 274 +int CArcB2e::v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ) 275 +{ 276 + const char* theScript = m_EncScr; 277 + 278 + if( sfx ) 279 + { 280 + if( m_SfxDirect ) 281 + theScript = m_SfxScr; 282 + else 283 + { 284 + kiPath tmp; 285 + myapp().get_tempdir( tmp ); 286 + 287 + // �e���|�����ֈ��k 288 + int ans = cmpr( m_EncScr, base, files, tmp, method ); 289 + if( ans < 0x8000 ) 290 + // �e���|�����ɗ����Ă�t�@�C����SFX�ɕϊ����R�s�[�I 291 + ans = (arc2sfx( tmp, ddir ) ? 0 : 0x8020); 292 + 293 + // �J�����g��߂��Ă����Ȃ��ƍ폜�ł��Ȃ��c(;_;) 294 + ::SetCurrentDirectory( base ); 295 + tmp.remove(); 296 + return ans; 297 + } 298 + } 299 + 300 + // �o�͐�֕��ʂɈ��k 301 + return cmpr( theScript, base, files, ddir, method ); 302 +} 303 + 304 +//-----------------------------------------------------------------// 305 +//-------------------- RythpVM�̕��̎��� --------------------------// 306 +//-----------------------------------------------------------------// 307 + 308 +bool CArcB2e::CB2eCore::exec_function( const kiVar& name, const CharArray& a, const BoolArray& b, int c, kiVar* r ) 309 +{ 310 + bool processed = false; 311 + 312 + if( m_mode==mLod ){ //**���[�h����pfunctions**************************** 313 + if( name=="name" ){ 314 + processed=true; 315 + 316 + //---------------------------// 317 + //-- (name module_filename)--// 318 + //---------------------------// 319 + if( c>=2 ) 320 + { 321 + x->m_usMode = false; 322 + if( c>=3 ) 323 + { 324 + getarg( a[2],b[2],&t ); 325 + x->m_usMode = ( t=="us" ); 326 + } 327 + 328 + getarg( a[1],b[1],&t ); 329 + if( x->load_module(t) ) 330 + *r = "exec"; 331 + else 332 + *r = "", x->m_Result=0xffff; 333 + } 334 + 335 + }else if( name=="type" ){ 336 + processed=true; 337 + 338 + //-----------------------------------// 339 + //-- (type ext method1 method2 ...)--// 340 + //-----------------------------------// 341 + for( int i=1; i<c; i++ ) 342 + { 343 + getarg( a[i],b[i],&t ); 344 + if( i==1 ) 345 + x->set_cmp_ext( t ); 346 + else 347 + { 348 + const char* ptr=t; 349 + x->add_cmp_mhd( *ptr=='*' ? ptr+1 : ptr, *ptr=='*' ); 350 + } 351 + } 352 + }else if( name=="use" ){ 353 + processed=true; 354 + 355 + //-------------------------------// 356 + //-- (use module1 module2 ...) --// 357 + //-------------------------------// 358 + for( int i=1; i<c; i++ ) 359 + { 360 + getarg( a[i],b[i],&t ); 361 + x->m_subFile.add( t ); 362 + } 363 + } 364 + }else{//************ ���[�h���ɂ͎g���Ȃ�functions ********************* 365 + if( ki_memcmp( (const char*)name, "arc", 3 ) ){ 366 + processed=true; 367 + 368 + //---------------------------// 369 + //-- (arc[+-].xxx [slfrd]) --// 370 + //---------------------------// 371 + arc( ((const char*)name)+3, a, b, c, r ); 372 + 373 + }else if( ki_memcmp( (const char*)name, "list", 4 ) ){ 374 + processed=true; 375 + 376 + //----------------------------// 377 + //-- (list[\*|\*.*] [slfn]) --// 378 + //----------------------------// 379 + list( ((const char*)name)+4, a, b, c, r ); 380 + 381 + }else if( name=="method" ){ 382 + processed=true; 383 + 384 + //-------------------// 385 + //-- (method [no]) --// 386 + //-------------------// 387 + if( c>=2 ) 388 + { 389 + getarg( a[1],b[1],&t ); 390 + *r = t.getInt()==*x->m_psMhd ? "1" : "0"; 391 + } 392 + else 393 + r->setInt( *x->m_psMhd ); 394 + 395 + }else if( name=="dir" ){ 396 + processed=true; 397 + 398 + //-----------// 399 + //-- (dir) --// 400 + //-----------// 401 + *r = (x->m_psDir ? *x->m_psDir : (const char*)""); 402 + 403 + }else if( name=="del" ){ 404 + processed=true; 405 + 406 + //-------------------// 407 + //-- (del filenam) --// 408 + //-------------------// 409 + if( c>=2 ) 410 + { 411 + getarg( a[1],b[1],&t ); 412 + ::DeleteFile( kiPath( t.unquote() ) ); 413 + } 414 + 415 + }else if( ki_memcmp( (const char*)name, "resp", 4 ) 416 + || ki_memcmp( (const char*)name, "resq", 4 ) ){ 417 + processed=true; 418 + 419 + //----------------------------// 420 + //-- (resp[@|-o] (list a)) ---// 421 + //----------------------------// 422 + resp( name[3]=='p', ((const char*)name)+4, a, b, c, r ); 423 + 424 + }else if( name=="cd" ){ 425 + processed=true; 426 + 427 + //-------------------// 428 + //-- (cd directory)--// 429 + //-------------------// 430 + if( c>=2 ) 431 + { 432 + getarg( a[1],b[1],&t ); 433 + ::SetCurrentDirectory( t.unquote() ); 434 + } 435 + 436 + }else if( name=="cmd" || name=="xcmd" ){ 437 + processed=true; 438 + 439 + //----------------------------// 440 + //-- (cmd command line ...)---// 441 + //-- (xcmd command line ...)--// 442 + //----------------------------// 443 + if( name[0]=='x' && c<2 ) 444 + x->m_Result = 0xffff; 445 + else 446 + { 447 + CArcModule* xxx = x->exe; 448 + kiVar cmd; 449 + int i=1; 450 + 451 + if( name[0] == 'x' ) 452 + { 453 + kiVar mm; 454 + getarg( a[i],b[i],&mm ); 455 + i++; 456 + xxx = new CArcModule( mm, x->m_usMode ); 457 + } 458 + for( ; i<c; i++ ) 459 + getarg( a[i],b[i],&t ), cmd+=t, cmd+=' '; 460 + 461 + bool m = (mycnf().miniboot() || m_mode==mDc1); 462 + x->m_Result = xxx->cmd( cmd, m ); 463 + r->setInt( x->m_Result ); 464 + 465 + if( name[0] == 'x' ) 466 + delete xxx; 467 + } 468 + }else if( name=="scan" || name=="xscan" ){ 469 + processed=true; 470 + 471 + //----------------------------------------// 472 + //-- (scan BL BSL EL SL dx cmd...) -------// 473 + //-- (xscan BL BSL EL SL dx CMD cmd...) --// 474 + //----------------------------------------// 475 + if( c<6 || (name[0]=='x'&&c<7) ) 476 + x->m_Result = 0xffff; 477 + else 478 + { 479 + CArcModule* xxx = x->exe; 480 + 481 + kiVar BL, EL; 482 + getarg( a[1],b[1],&BL ); 483 + getarg( a[2],b[2],&t ); 484 + int BSL = t.getInt(); 485 + getarg( a[3],b[3],&EL ); 486 + getarg( a[4],b[4],&t ); 487 + int SL = t.getInt(); 488 + getarg( a[5],b[5],&t ); 489 + int dx = t.getInt(); 490 + 491 + int i=6; 492 + if( name[0] == 'x' ) 493 + { 494 + kiVar mm; 495 + getarg( a[i],b[i],&mm ); 496 + i++; 497 + xxx = new CArcModule( mm, x->m_usMode ); 498 + } 499 + 500 + kiVar cmd; 501 + for( ; i<c; ++i ) 502 + getarg( a[i],b[i],&t ), cmd+=t, cmd+=' '; 503 + 504 + x->m_Result = xxx->lst_exe( 505 + cmd, *const_cast<aflArray*>(x->m_psAInfo), 506 + BL, BSL, EL, SL, dx ) ? 0 : -1; 507 + 508 + if( name[0] == 'x' ) 509 + delete xxx; 510 + } 511 + }else if( name=="input" ){ 512 + processed=true; 513 + 514 + //-------------------------// 515 + //-- (input MSG DEFUALT) --// 516 + //-------------------------// 517 + kiVar msg, defval; 518 + if( c>=2 ) 519 + getarg( a[1],b[1],&msg ); 520 + if( c>=3 ) 521 + getarg( a[2],b[2],&defval ); 522 + input( msg, defval, r ); 523 + }else if( name=="size" ){ 524 + processed=true; 525 + 526 + //---------------------// 527 + //-- (size FILENAME) --// 528 + //---------------------// 529 + if( c>=2 ) 530 + { 531 + kiVar fnm; 532 + getarg( a[1],b[1],&fnm ); 533 + r->setInt( kiFile::getSize( fnm.unquote() ) ); 534 + } 535 + }else if( name=="is_file" ){ 536 + processed=true; 537 + 538 + //---------------------// 539 + //-- (is_file) --------// 540 + //---------------------// 541 + if( c==1 ) 542 + *r = (x->m_psList->len()==1 543 + && !kiSUtil::isdir( (*x->m_psList)[0].cFileName )) ? "1" : "0"; 544 + }else if( name=="is_folder" ){ 545 + processed=true; 546 + 547 + //---------------------// 548 + //-- (is_folder) ------// 549 + //---------------------// 550 + if( c==1 ) 551 + *r = (x->m_psList->len()==1 552 + && kiSUtil::isdir( (*x->m_psList)[0].cFileName )) ? "1" : "0"; 553 + }else if( name=="is_multiple" ){ 554 + processed=true; 555 + 556 + //---------------------// 557 + //-- (is_multiple) ----// 558 + //---------------------// 559 + if( c==1 ) 560 + *r = x->m_psList->len()>1 ? "1" : "0"; 561 + }else if( name=="find" ){ 562 + processed=true; 563 + 564 + //---------------------// 565 + //-- (find FILENAME) --// 566 + //---------------------// 567 + if( c>=2 ) 568 + { 569 + kiVar fnm; 570 + getarg( a[1],b[1],&fnm ); 571 + char buf[MAX_PATH]; 572 + if( 0==::SearchPath( NULL,fnm.unquote(),NULL,MAX_PATH,buf,NULL ) ) 573 + *r = ""; 574 + else 575 + *r = buf, r->quote(); 576 + } 577 + } 578 + } 579 + 580 + return processed ? true : kiRythpVM::exec_function(name,a,b,c,r); 581 +} 582 + 583 +void CArcB2e::CB2eCore::arc( const char* opt, const CharArray& a, const BoolArray& b,int c, kiVar* r ) 584 +{ 585 + //---------------------------// 586 + //-- (arc[+-].xxx [slfrd]) --// 587 + //---------------------------// 588 + 589 + // �f�t�H���g�I�v�V�����ݒ� 590 + const char* anm=x->m_psArc->lname; 591 + enum{ full, nam, dir } part=full; 592 + if( m_mode==mSfx ) part=nam; // sfx 593 + 594 + // �w�肪����Ώ㏑ 595 + if( c>=2 ) 596 + { 597 + getarg( a[1],b[1],&t ); 598 + for( const char* p=t; *p; p++ ) 599 + switch(*p) 600 + { 601 + case 's': anm=x->m_psArc->sname; break; 602 + case 'l': anm=x->m_psArc->lname; break; 603 + case 'f': part=full; break; 604 + case 'n': part=nam; break; 605 + case 'd': part=dir; break; 606 + } 607 + } 608 + 609 + // �f�B���N�g������ 610 + *r = (part==nam ? (const char*)"" : x->m_psArc->basedir); 611 + 612 + // ���O���� 613 + if( part != dir ) 614 + { 615 + if( *opt=='\0' || *opt=='+' ) 616 + { 617 + // (arc) : anm�����̂܂ܕԂ� 618 + *r += anm; 619 + // (arc+XXX) : anmXXX��Ԃ� 620 + if( *opt=='+' ) 621 + *r += (opt+1); 622 + } 623 + else 624 + { 625 + const char* ext = kiPath::ext(anm); 626 + const char* add = ""; 627 + if( opt[0]=='-' && opt[1]=='.' ) 628 + { 629 + // (arc-.XXX) : ������.XXX��������폜�B 630 + // : �����łȂ���Ό���.decompressed 631 + if( 0!=ki_strcmpi( ext, opt+2 ) ) 632 + ext = anm + ki_strlen(anm), add = ".decompressed"; 633 + } 634 + else if( opt[1]!='\0' ) 635 + { 636 + // (arc.XXX) : �Ō�̊g���q��.XXX�Ɏ��ւ� 637 + add = opt; 638 + switch(mycnf().extnum()) 639 + { 640 + case 0: ext = anm + ::lstrlen(anm);break; 641 + case 1: ext = kiPath::ext(anm); break; 642 + default:ext = kiPath::ext_all(anm);break; 643 + } 644 + } 645 + else 646 + { 647 + // (arc.) : �g���q��S�Ď�菜�� 648 + switch(mycnf().extnum()) 649 + { 650 + case 0: ext = anm + ::lstrlen(anm);break; 651 + case 1: ext = kiPath::ext(anm); break; 652 + default:ext = kiPath::ext_all(anm);break; 653 + } 654 + } 655 + if( *ext ) 656 + ext--; 657 + 658 + char buf[MAX_PATH]; 659 + ki_memcpy( buf, anm, ext-anm ); 660 + buf[ ext-anm ] = '\0'; 661 + *r += buf; 662 + *r += add; 663 + } 664 + 665 + // �K�v�Ȃ炭���� 666 + if( part==full ) 667 + r->quote(); 668 + } 669 +} 670 + 671 +static void selfR( 672 + const char* writedir, const char* fullpath, bool lfn, kiVar* r ) 673 +{ 674 + kiFindFile f; 675 + WIN32_FIND_DATA fd; 676 + f.begin( kiStr(fullpath) += "\\*" ); 677 + 678 + kiVar t, t2, t3; 679 + while( f.next(&fd) ) 680 + { 681 + t = writedir; 682 + t+= '\\'; 683 + t+= (lfn ? fd.cFileName : fd.cAlternateFileName); 684 + if( fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) 685 + { 686 + t2 = t; 687 + t = ""; 688 + t3 = fullpath; 689 + t3+= '\\'; 690 + t3+= (lfn ? fd.cFileName : fd.cAlternateFileName); 691 + selfR( t2, t3, lfn, &t ); 692 + } 693 + else 694 + { 695 + if( lfn ) 696 + t.quote(); 697 + } 698 + *r += t; 699 + *r += ' '; 700 + } 701 +} 702 + 703 +void CArcB2e::CB2eCore::list( const char* opt, const CharArray& a, const BoolArray& b,int c, kiVar* r ) 704 +{ 705 + //---------------------------// 706 + //-- (list[r|\*.*] [slfn]) --// 707 + //---------------------------// 708 + 709 + if( m_mode!=mEnc ) // �𓀂̏ꍇ 710 + { 711 + *r = ""; 712 + 713 + for( unsigned int i=0; i!=x->m_psAInfo->len(); i++ ) 714 + if( (*x->m_psAInfo)[i].selected ) 715 + { 716 + // - �Ŏn�܂郄�c������邩�H 717 + t = (*x->m_psAInfo)[i].inf.szFileName; 718 + t.quote(); 719 + *r += t; 720 + *r += ' '; 721 + } 722 + } 723 + else // ���k�̏ꍇ 724 + { 725 + // �f�t�H���g�I�v�V�����ݒ� 726 + bool lfn=true; 727 + enum{ full, nam } part=nam; 728 + // �w�肪����Ώ㏑ 729 + if( c>=2 ) 730 + { 731 + getarg( a[1],b[1],&t ); 732 + for( const char* p=t; *p; p++ ) 733 + switch(*p) 734 + { 735 + case 's': lfn=false; break; 736 + case 'l': lfn=true; break; 737 + case 'f': part=full; break; 738 + case 'n': part=nam; break; 739 + } 740 + } 741 + // ���O�ōċA���X�g�A�b�v���s�����ۂ� 742 + bool selfrecurse = (*opt=='r'); 743 + 744 + // �f�B���N�g�����̌��ɕt���������́B 745 + if( *opt=='\\' || *opt=='/' ) 746 + opt++; 747 + 748 + // ���X�g�A�b�v 749 + kiVar t2,t3; 750 + *r = ""; 751 + for( unsigned int i=0; i!=x->m_psList->len(); i++ ) 752 + { 753 + // �t�@�C�������� 754 + t = ( part==full ? *x->m_psDir : (const char*)""); 755 + t += lfn ? (*x->m_psList)[i].cFileName : (*x->m_psList)[i].cAlternateFileName; 756 + 757 + if( selfrecurse && ((*x->m_psList)[i].dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) 758 + { 759 + // �Z���t�ċA 760 + t2 = t; 761 + t = ""; 762 + t3 = *x->m_psDir; 763 + t3+= lfn ? (*x->m_psList)[i].cFileName : (*x->m_psList)[i].cAlternateFileName; 764 + selfR( t2, t3, lfn, &t ); 765 + } 766 + else 767 + { 768 + // �m�[�}������ 769 + if( *opt && ((*x->m_psList)[i].dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) 770 + t += '\\', t += opt; 771 + if( lfn ) 772 + t.quote(); 773 + } 774 + *r += t; 775 + *r += ' '; 776 + } 777 + } 778 + 779 + r->removeTrailWS(); 780 +} 781 + 782 +void CArcB2e::CB2eCore::resp( bool needq, const char* opt, const CharArray& a, const BoolArray& b,int c, kiVar* r ) 783 +{ 784 + //-----------------------------// 785 + //-- (resp[@|-o] (list) ...) --// 786 + //-----------------------------// 787 + 788 + // ���X�|���X�t�@�C�����쐬 789 + kiPath rspfile; 790 + myapp().get_tempdir(rspfile); 791 + rspfile += "filelist"; 792 + 793 + // �I�v�V�����ƌ������ĕԂ� 794 + *r = opt; 795 + *r += rspfile; 796 + 797 + // �t�@�C���֏������� 798 + kiFile fp; 799 + if( !fp.open( rspfile,false ) ) 800 + return; 801 + 802 + kiVar tmp; 803 + for( int i=1; i<c; i++ ) 804 + { 805 + // fp�֊e������split���Ȃ��珑������ 806 + getarg( a[i],b[i],&tmp ); 807 + 808 + for( const char *s,*p=tmp; *p; p++ ) 809 + { 810 + // �]���ȋ̓X�L�b�v 811 + while( *p==' ' ) 812 + p++; 813 + if( *p=='\0' ) 814 + break; 815 + 816 + // �����̏I���ցc 817 + s=p; 818 + for( int q=0; *p!='\0' && (*p!=' ' || (q&1)!=0); p++ ) 819 + if( *p=='"' ) 820 + q++; 821 + 822 + // "�̂��܍��킹�ꍆ 823 + if( !needq && *s=='"' ) 824 + { 825 + s++; 826 + if( p!=s && *(p-1)=='"' ) 827 + p--; 828 + } 829 + 830 + fp.write( s, p-s ); 831 + fp.write( "\r\n", 2 ); 832 + 833 + // "�̂��܍��킹�� 834 + if( *p=='"' ) 835 + p++; 836 + if( *p=='\0' ) 837 + break; 838 + } 839 + } 840 +} 841 + 842 +void CArcB2e::CB2eCore::input( const char* msg, const char* defval, kiVar* r ) 843 +{ 844 + struct CB2eInputDlg : public kiDialog 845 + { 846 + const char* msg; 847 + const char* def; 848 + kiVar* res; 849 + 850 + CB2eInputDlg( const char* m, const char* d, kiVar* r ) 851 + : kiDialog( IDD_PASSWORD ), msg(m), def(d), res(r) {} 852 + BOOL onInit() 853 + { 854 + sendMsgToItem( IDC_EDIT, WM_SETTEXT, 0, (LPARAM)def ); 855 + sendMsgToItem( IDC_MESSAGE, WM_SETTEXT, 0, (LPARAM)msg ); 856 + ::ShowWindow( item(IDC_MASK), SW_HIDE ); 857 + ::ShowWindow( item(IDCANCEL), SW_HIDE ); 858 + ::EnableWindow( item(IDC_MASK), FALSE ); 859 + ::EnableWindow( item(IDCANCEL), FALSE ); 860 + ::SetFocus( item(IDC_EDIT) ); 861 + return TRUE; 862 + } 863 + bool onOK() 864 + { 865 + char* buf = new char[32768]; 866 + sendMsgToItem( IDC_EDIT, WM_GETTEXT, 32768, (LPARAM)buf ); 867 + *res = buf; 868 + delete [] buf; 869 + return true; 870 + } 871 + }; 872 + 873 + CB2eInputDlg d( msg, defval, r ); 874 + d.doModal( app()->mainhwnd() ); 875 +} 876 +
Added ArcB2e.h version [f42371bc1f59bea6]
1 +#ifndef AFX_ARCB2e_H__697CC1BD_2C28_434C_8C53_239D624227C3__INCLUDED_ 2 +#define AFX_ARCB2e_H__697CC1BD_2C28_434C_8C53_239D624227C3__INCLUDED_ 3 + 4 +#include "Archiver.h" 5 + 6 +class CArcB2e : public CArchiver 7 +{ 8 +public: //--<action>-- 9 + 10 + CArcB2e( const char* scriptname ); 11 + virtual ~CArcB2e(); 12 + static const char* init_b2e_path(); 13 + 14 +private: //--<CArchiver>-- 15 + 16 + int v_load(); 17 + bool v_ver( kiStr& str ); 18 + bool v_check( const kiPath& aname ); 19 + int v_contents( const kiPath& aname, kiPath& dname ); 20 + int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 21 + bool v_list( const arcname& aname, aflArray& files ); 22 + int v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ); 23 + kiStr v_name(const char*) const { return exe ? exe->name() : kiStr(""); } 24 + 25 + bool arc2sfx( const kiPath& temp, const kiPath& dest ); 26 + int cmpr( const char* scr, const kiPath& base, const wfdArray& files, const kiPath& ddir, const int method ); 27 + 28 +private: //--<RythpScript>-- 29 + 30 + // scripts 31 + char* m_ScriptBuf; 32 + char* m_LoadScr; 33 + const char* m_EncScr; 34 + const char* m_DecScr; 35 + const char* m_SfxScr; 36 + const char* m_DcEScr; 37 + const char* m_LstScr; 38 + bool m_SfxDirect; 39 + 40 + enum scr_mode { mLod, mEnc, mDec, mDc1, mSfx, mLst }; 41 + int exec_script( const char* scr, scr_mode mode ); 42 + 43 + // B2e Core 44 + class CB2eCore : public kiRythpVM 45 + { 46 + friend class CArcB2e; 47 + 48 + bool exec_function( const kiVar& name, const CharArray& a, const BoolArray& b,int c, kiVar* r ); 49 + 50 + void arc( const char* opt, const CharArray& a, const BoolArray& b,int c, kiVar* r ); 51 + void list( const char* opt, const CharArray& a, const BoolArray& b,int c, kiVar* r ); 52 + void resp( bool needq, const char* opt, const CharArray& a, const BoolArray& b,int c, kiVar* r ); 53 + void input( const char* msg, const char* defval, kiVar* r ); 54 + 55 + void setPtr( CArcB2e* p, scr_mode m ){x=p;m_mode=m;} 56 + CArcB2e* x; 57 + scr_mode m_mode; 58 + kiVar t; 59 + }; 60 + friend class CB2eCore; 61 + static char st_base[MAX_PATH]; 62 + static int st_life; 63 + static CB2eCore* rvm; 64 + 65 + // module 66 + CArcModule* exe; 67 + kiArray<kiStr> m_subFile; 68 + 69 + // script�A�g 70 + bool load_module( const char* name ); 71 + int m_Result; 72 + bool m_usMode; 73 + const arcname* m_psArc; 74 + const kiPath* m_psDir; 75 + const int* m_psMhd; 76 + const wfdArray* m_psList; 77 + const aflArray* m_psAInfo; 78 +}; 79 + 80 +#endif
Added ArcCpt.cpp version [de96d041f43cbd6f]
1 + 2 +#include "stdafx.h" 3 +#include "ArcCpt.h" 4 +#include "NoahApp.h" 5 + 6 +//--- CArchiver -------------------------------------------------- 7 + 8 +bool CArcCpt::v_check( const kiPath& aname ) 9 +{ 10 + bool ans = ( cpt.open( aname ) && read_main_hdr() && check_index_crc() ); 11 + cpt.close(); 12 + return ans; 13 +} 14 + 15 +bool CArcCpt::v_list( const arcname& aname, aflArray& files ) 16 +{ 17 + ::SetCurrentDirectory( aname.basedir ); 18 + 19 + bool ans = ( cpt.open( aname.lname ) && read_main_hdr() && operation_for_each( true, &files ) ); 20 + cpt.close(); 21 + return ans; 22 +} 23 + 24 +int CArcCpt::v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ) 25 +{ 26 + ::SetCurrentDirectory( aname.basedir ); 27 + if( !cpt.open( aname.lname ) ) 28 + return 0xffff; 29 + 30 + ::SetCurrentDirectory( ddir ); 31 + bool ans = ( read_main_hdr() && operation_for_each( false, const_cast<aflArray*>(files) ) ); 32 + cpt.close(); 33 + return ans ? 0 : 0x8020; 34 +} 35 + 36 +int CArcCpt::v_contents( const kiPath& aname, kiPath& dname ) 37 +{ 38 + int ans=aUnknown; 39 + if( cpt.open( aname ) && read_main_hdr() ) 40 + { 41 + if( cpt.read( tmp, 7 ) ) 42 + { 43 + WORD EntryNum = (tmp[4]<<8) + tmp[5]; 44 + if( EntryNum == 1 ) 45 + ans = aSingleFile; 46 + else 47 + { 48 + cpt.read( tmp, tmp[6] ); 49 + tmp[0] = cpt.getc(); 50 + if( tmp[0] & 0x80 ) // Folder 51 + { 52 + unsigned long size = (tmp[0]&0x3f) + 2; 53 + if( size == cpt.read( tmp+1, size ) ) 54 + if( EntryNum == 1 + (tmp[size-1]<<8) + tmp[size] ) 55 + { 56 + dname = ""; 57 + tmp[ 1+tmp[0] ] = '\0'; 58 + for( char* pp=(char*)tmp+1; *pp; pp=kiStr::next(pp) ) 59 + { 60 + if( kiStr::isLeadByte(*pp) ) 61 + dname += *pp, dname += *(pp+1); 62 + else if( *pp<' ' || *pp>'~' ) 63 + dname += '_'; 64 + else switch( *pp ) 65 + { 66 + case '\\': case '/': case ':': case '*': 67 + case '?': case '\"': case '<': case '>': case '|': 68 + dname += '_'; 69 + default: 70 + dname += *pp; 71 + } 72 + } 73 + 74 + ans = aSingleDir; 75 + } 76 + } 77 + } 78 + } 79 + } 80 + cpt.close(); 81 + return ans; 82 +} 83 + 84 +//--- CRC ---------------------------------------------------------- 85 + 86 +static unsigned long crctbl[256] = { 1 }; 87 + 88 +static void init_crc_table() 89 +{ 90 + if( crctbl[0]==1 ) // uninitialized 91 + for( unsigned long c,n=0; n!=256; n++ ) 92 + { 93 + c = n; 94 + for( unsigned long k=8; k; k-- ) 95 + c = (c&1) ? ((0xedb88320L)^(c>>1)) : (c>>1); 96 + crctbl[n] = c; 97 + } 98 +} 99 + 100 +static unsigned long crc( unsigned long c, unsigned char* cp,int cnt ) 101 +{ 102 + while( cnt-- ) 103 + c = (c>>8)^crctbl[(c&0xff)^*cp++]; 104 + return c; 105 +} 106 + 107 +//--- cpt ---------------------------------------------------------- 108 + 109 +bool CArcCpt::read_main_hdr() 110 +{ 111 + //-- �擪�̃o�C�g�� MagicNumber : 0x01 �Ȃ͂��B 112 + m_nMacBinOffset = 0; 113 + if( 8 != cpt.read( tmp, 8 ) ) 114 + return false; 115 + if( tmp[0] != 1 ) 116 + { 117 + if( 0 != tmp[0] 118 + || 120 != cpt.read( tmp, 120 ) 119 + || 8 != cpt.read( tmp, 8 ) 120 + || tmp[0] != 1 ) // MacBin�X�L�b�v 121 + return false; 122 + m_nMacBinOffset = 128; 123 + } 124 + 125 + //-- index�܂Œ��� 126 + cpt.seek( (tmp[4]<<24) + (tmp[5]<<16) + (tmp[6]<<8) + (tmp[7]) - 8 ); 127 + return true; 128 +} 129 + 130 +bool CArcCpt::check_index_crc() 131 +{ 132 + bool folder; 133 + unsigned int size; 134 + 135 + //-- CRC(DWORD), EntryNum(WORD), CommentLen(BYTE) 136 + if( !cpt.read( tmp, 7 ) ) 137 + return false; 138 + 139 + init_crc_table(); 140 + 141 + DWORD CRC = (tmp[0]<<24) + (tmp[1]<<16) + (tmp[2]<<8) + tmp[3]; 142 + WORD EntryNum = (tmp[4]<<8) + tmp[5]; 143 + if( tmp[6] != cpt.read( tmp+7, tmp[6] ) ) 144 + return false; 145 + DWORD chk_crc = crc( 0xffffffff, tmp+4, 3+tmp[6] ); 146 + 147 + //-- �S�w�b�_�𑖍�����CRC�v�Z 148 + for( WORD i=0; i!=EntryNum; i++ ) 149 + { 150 + tmp[0] = cpt.getc(); 151 + 152 + if( tmp[0] & 0x80 ) folder = true, size = (tmp[0]&0x3f) + 2; 153 + else folder = false, size = (tmp[0]) + 45; 154 + if( size != cpt.read( tmp+1, size ) ) return false; 155 + 156 + chk_crc = crc( chk_crc, tmp, 1+size ); 157 + } 158 + 159 + return CRC == chk_crc; 160 +} 161 + 162 +bool CArcCpt::operation_for_each( bool o_list, aflArray* files ) 163 +{ 164 + //-- Entry���� 165 + if( !cpt.read( tmp, 7 ) ) 166 + return false; 167 + WORD EntryNum = (tmp[4]<<8) + tmp[5]; 168 + cpt.read( tmp, tmp[6] ); 169 + 170 + //-- �_�C�A���O���� 171 + pdlg = files ? NULL : new CArcProgressDlg( EntryNum ); 172 + 173 + //-- ���� 174 + kiPath path; 175 + m_nIndexPos = cpt.tell(); 176 + bool ans = recurse( o_list, files, path, 0, EntryNum ); 177 + delete pdlg; 178 + return ans; 179 +} 180 + 181 +bool CArcCpt::recurse( bool o_list, aflArray* files, kiPath& path, int base, int num ) 182 +{ 183 + bool folder; 184 + unsigned int size; 185 + kiPath pthtmp; 186 + 187 + for( int i=0; i<num; i++ ) 188 + { 189 + cpt.seekTo( m_nIndexPos ); 190 + 191 + //-- tmp��index�ǂݍ��� 192 + 193 + tmp[0] = cpt.getc(); 194 + if( tmp[0] & 0x80 ) folder = true, size = (tmp[0]&0x3f) + 2; 195 + else folder = false, size = (tmp[0]) + 45; 196 + if( size != cpt.read( tmp+1, size ) ) return false; 197 + m_nIndexPos = cpt.tell(); // ����Index�̈ʒu���L�� 198 + 199 + //-- �w�b�_��� 200 + 201 + // 0: filename_len (BYTE) 202 + // 1-n: filename (with no '\0') 203 + char filename[MAX_PATH]; 204 + ki_memcpy( filename, tmp+1, tmp[0] ); 205 + filename[ *tmp ] = '\0'; 206 + for( char* pp=filename; *pp; pp=kiStr::next(pp) ) 207 + { 208 + if( kiStr::isLeadByte(*pp) ) 209 + continue; 210 + if( *pp<' ' || *pp>'~' ) 211 + *pp = '_'; 212 + else switch( *pp ) 213 + { 214 + case '\\': case '/': case ':': case '*': 215 + case '?': case '\"': case '<': case '>': case '|': 216 + *pp = '_'; 217 + } 218 + } 219 + // filename��2�ȏ��.�݂̂���Ȃ��Ă�����_�ɏ������� 220 + { 221 + int dots = 0; 222 + char* pp; 223 + for( pp=filename; *pp; pp=kiStr::next(pp) ) 224 + if( *pp == '.' ) { ++dots; } 225 + else { dots=-1; break; } 226 + if( dots >= 2 ) 227 + for( pp=filename; *pp; ++pp ) 228 + *pp = '_'; 229 + } 230 + 231 + //-- �_�C�A���O���� 232 + 233 + pthtmp = path, pthtmp += filename; 234 + 235 + if( pdlg ) 236 + { 237 + pdlg->change( pthtmp, base+i+1 ); 238 + if( !pdlg->msgloop() ) 239 + return false; 240 + } 241 + 242 + //-- �t�H���_���� 243 + 244 + if( folder ) 245 + { 246 + unsigned long fldlen = (tmp[size-1]<<8) + tmp[size]; 247 + pthtmp += '\\'; 248 + 249 + if( o_list ) 250 + { 251 + files->forcelen( base+i+1 ); 252 + ki_strcpy( (*files)[base+i].inf.szFileName, pthtmp ); 253 + (*files)[base+i].isfile = false; 254 + } 255 + 256 + if( !recurse( o_list, files, pthtmp, base+i+1, fldlen ) ) 257 + return false; 258 + i += fldlen; 259 + } 260 + 261 + //-- �t�@�C������ 262 + 263 + else 264 + { 265 + const unsigned char* hdr = tmp + (size+1) - 80; 266 + 267 + unsigned long rsrcSkip; bool lzhFlag; 268 + if( (hdr[68]<<24) + (hdr[69]<<16) + (hdr[70]<<8) + hdr[71] != 0 ) 269 + { 270 + // ���� dataFork�����݂���Ȃ�� 271 + dataULen = (hdr[68]<<24) + (hdr[69]<<16) + (hdr[70]<<8) + hdr[71]; 272 + dataCLen = (hdr[76]<<24) + (hdr[77]<<16) + (hdr[78]<<8) + hdr[79]; 273 + rsrcSkip = (hdr[72]<<24) + (hdr[73]<<16) + (hdr[74]<<8) + hdr[75]; 274 + lzhFlag = (hdr[63]&4) !=0; 275 + } 276 + else 277 + { 278 + // dataFork�����݂��Ȃ��Ȃ�� 279 + dataULen = (hdr[64]<<24) + (hdr[65]<<16) + (hdr[66]<<8) + hdr[67]; 280 + dataCLen = (hdr[72]<<24) + (hdr[73]<<16) + (hdr[74]<<8) + hdr[75]; 281 + rsrcSkip = 0; 282 + lzhFlag = (hdr[63]&2) !=0; 283 + } 284 + 285 + if( o_list ) // ���X�g�։����� 286 + { 287 + files->forcelen( base+i+1 ); 288 + ki_strcpy( (*files)[base+i].inf.szFileName, pthtmp ); 289 + ki_strcpy( (*files)[base+i].inf.szMode, lzhFlag ? "rle+lzh" : "rle" ); 290 + (*files)[base+i].inf.dwCompressedSize = dataCLen; 291 + (*files)[base+i].inf.dwOriginalSize = dataULen; 292 + (*files)[base+i].isfile = true; 293 + } 294 + else if( !files || (*files)[base+i].selected ) 295 + { 296 + if( !(hdr[63] & 1) ) 297 + { 298 + pthtmp.mkdir(); 299 + cpt.seekTo( (hdr[36]<<24) + (hdr[37]<<16) + (hdr[38]<<8) + hdr[39] + 300 + rsrcSkip + m_nMacBinOffset ); // filepos + rsrcCLen + (0 | 128) 301 + if( out.open( pthtmp, false ) ) 302 + { 303 + cptmelt( lzhFlag ); 304 + out.close(); 305 + } 306 + } 307 + } 308 + } 309 + } 310 + 311 + return true; 312 +} 313 + 314 +//-- �𓀏��� ------------------------------------------------ 315 + 316 +#define ESC1 0x81 317 +#define ESC2 0x82 318 +#define NONESEEN 0 319 +#define ESC1SEEN 1 320 +#define ESC2SEEN 2 321 + 322 +void CArcCpt::cptmelt( bool isRL ) 323 +{ 324 + cpt_outstat = NONESEEN; 325 + cpt_LZptr = 0; 326 + cpt_blocksize = 0x1fff0; 327 + 328 + if( isRL ) 329 + cpt_rle_lzh(); 330 + else 331 + while( dataCLen-- ) 332 + cpt_outch( cpt.getc() ); 333 +} 334 + 335 +void CArcCpt::cpt_outch(unsigned char ch) 336 +{ 337 + cpt_LZbuff[ cpt_LZptr++ & (CIRCSIZE-1) ] = ch; 338 + 339 + switch( cpt_outstat ) 340 + { 341 + case NONESEEN: 342 + if( ch==ESC1 ) 343 + cpt_outstat = ESC1SEEN; 344 + else 345 + dataULen--,out.putc( cpt_savechar=ch ); 346 + break; 347 + 348 + case ESC1SEEN: 349 + if( ch==ESC2 ) 350 + cpt_outstat = ESC2SEEN; 351 + else 352 + { 353 + dataULen--,out.putc( cpt_savechar=ESC1 ); 354 + if( ch!=ESC1 ) 355 + { 356 + cpt_outstat = NONESEEN; 357 + dataULen--,out.putc( cpt_savechar=ch ); 358 + } 359 + } 360 + break; 361 + 362 + case ESC2SEEN: 363 + cpt_outstat = NONESEEN; 364 + if( ch!=0 ) 365 + while( --ch ) 366 + dataULen--,out.putc(cpt_savechar); 367 + else 368 + { 369 + dataULen--,out.putc( ESC1 ); 370 + dataULen--,out.putc( cpt_savechar=ESC2 ); 371 + } 372 + } 373 +} 374 + 375 +void CArcCpt::cpt_rle_lzh() 376 +{ 377 + int block_count; 378 + unsigned int bptr; 379 + int Huffchar, LZlength, LZoffs; 380 + 381 + cpt_LZbuff[CIRCSIZE - 3] = 0; 382 + cpt_LZbuff[CIRCSIZE - 2] = 0; 383 + cpt_LZbuff[CIRCSIZE - 1] = 0; 384 + cpt_LZptr = 0; 385 + 386 + while( dataULen!=0 ) 387 + { 388 + cpt_readHuff(256,cpt_Hufftree); 389 + cpt_readHuff( 64,cpt_LZlength); 390 + cpt_readHuff(128,cpt_LZoffs ); 391 + block_count = 0; 392 + cpt_newbits = (cpt.getc()<<8); 393 + cpt_newbits = cpt_newbits | cpt.getc(); 394 + cpt_newbits = cpt_newbits << 16; 395 + cpt_bitsavail = 16; 396 + while( block_count<cpt_blocksize && dataULen!=0 ) 397 + { 398 + if( cpt_getbit() ) 399 + { 400 + Huffchar = gethuffbyte(cpt_Hufftree); 401 + cpt_outch((unsigned char)Huffchar); 402 + block_count += 2; 403 + } 404 + else 405 + { 406 + LZlength = gethuffbyte(cpt_LZlength); 407 + LZoffs = gethuffbyte(cpt_LZoffs); 408 + LZoffs = (LZoffs << 6) | cpt_get6bits(); 409 + bptr = cpt_LZptr - LZoffs; 410 + while( LZlength-->0 ) 411 + cpt_outch(cpt_LZbuff[bptr++&(CIRCSIZE-1)]); 412 + block_count += 3; 413 + } 414 + } 415 + } 416 +} 417 + 418 +int CArcCpt::gethuffbyte(node* l_nodelist) 419 +{ 420 + register node *np; 421 + np = l_nodelist; 422 + while(np->flag == 0) 423 + np = cpt_getbit() ? np->one : np->zero; 424 + return np->byte; 425 +} 426 + 427 +void CArcCpt::cpt_readHuff(int size,node* Hufftree) 428 +{ 429 + sf_entry tree_entry[256 + SLACK]; 430 + int tree_entries; 431 + int tree_MaxLength; 432 + int treeBytes, i, len; 433 + sf_entry *ejm1; 434 + int j; 435 + sf_entry *entry; 436 + sf_entry tmp; 437 + int entries; 438 + unsigned a, b; 439 + int codelen, lvlstart, next, parents; 440 + int tree_count[32]; 441 + 442 + treeBytes = cpt.getc(); 443 + if( size<treeBytes*2 ) 444 + return; 445 + for( i=0; i!=32; i++ ) 446 + tree_count[i] = 0; 447 + i = 0; 448 + tree_MaxLength = 0; 449 + tree_entries = 0; 450 + while( treeBytes-->0 ) 451 + { 452 + int c=cpt.getc(); 453 + len = c >> 4; 454 + 455 + if(len != 0) 456 + { 457 + if(len > tree_MaxLength) 458 + tree_MaxLength = len; 459 + tree_count[len]++; 460 + tree_entry[tree_entries].Value = i; 461 + tree_entry[tree_entries++].BitLength = len; 462 + } 463 + i++; 464 + len = c & 0x0f; 465 + if(len != 0) 466 + { 467 + if(len > tree_MaxLength) 468 + tree_MaxLength = len; 469 + tree_count[len]++; 470 + tree_entry[tree_entries].Value = i; 471 + tree_entry[tree_entries++].BitLength = len; 472 + } 473 + i++; 474 + } 475 + 476 + j = 0; 477 + for( i=0; i<=tree_MaxLength; i++ ) 478 + j = (j << 1) + tree_count[i]; 479 + j = (1 <<tree_MaxLength) - j; 480 + for( i=0; i<j; i++ ) 481 + { 482 + tree_entry[tree_entries].Value = size; 483 + tree_entry[tree_entries++].BitLength = tree_MaxLength; 484 + } 485 + 486 + entry = &(tree_entry[0]); 487 + entries = tree_entries; 488 + for( i=0; ++i<entries; ) 489 + { 490 + tmp = entry[i]; 491 + b = tmp.BitLength; 492 + j = i; 493 + while((j > 0) && ((a = (ejm1 = &(entry[j - 1]))->BitLength) >= b)) 494 + { 495 + if((a == b) && (ejm1->Value <= tmp.Value)) 496 + break; 497 + *(ejm1 + 1) = *ejm1; 498 + --j; 499 + } 500 + entry[j] = tmp; 501 + } 502 + 503 + i = tree_entries - 1; 504 + lvlstart = next = size * 2 + SLACK - 1; 505 + for(codelen = tree_MaxLength; codelen >= 1; --codelen) 506 + { 507 + while((i >= 0) && (tree_entry[i].BitLength == codelen)) 508 + { 509 + Hufftree[next].byte = tree_entry[i].Value; 510 + Hufftree[next].flag = 1; 511 + next--; 512 + i--; 513 + } 514 + parents = next; 515 + if(codelen > 1) 516 + { 517 + for(j = lvlstart; j > parents + 1; j-= 2) 518 + { 519 + Hufftree[next].one = &(Hufftree[j]); 520 + Hufftree[next].zero = &(Hufftree[j - 1]); 521 + Hufftree[next].flag = 0; 522 + next--; 523 + } 524 + } 525 + lvlstart = parents; 526 + } 527 + Hufftree[0].one = &(Hufftree[next + 2]); 528 + Hufftree[0].zero = &(Hufftree[next + 1]); 529 + Hufftree[0].flag = 0; 530 +} 531 + 532 +int CArcCpt::cpt_get6bits() 533 +{ 534 + int cn,b=(cpt_newbits >> 26) & 0x3f; 535 + cpt_bitsavail -= 6; 536 + cpt_newbits <<= 6; 537 + if(cpt_bitsavail < 16) 538 + { 539 + cn = (cpt.getc() << 8); 540 + cn |= cpt.getc(); 541 + cpt_newbits |= (cn << (16 - cpt_bitsavail)); 542 + cpt_bitsavail += 16; 543 + } 544 + return b; 545 +} 546 + 547 +int CArcCpt::cpt_getbit() 548 +{ 549 + int b = (cpt_newbits >> 31) & 1; 550 + cpt_bitsavail--; 551 + if( cpt_bitsavail<16 ) 552 + { 553 + cpt_newbits |= (cpt.getc() << 8); 554 + cpt_newbits |= cpt.getc(); 555 + cpt_bitsavail += 16; 556 + } 557 + cpt_newbits <<= 1; 558 + return b; 559 +}
Added ArcCpt.h version [909c16b823b96e7b]
1 +#ifndef AFX_ARCCPT_H__B5D13025_2DA9_4489_8BCB_ACB84B908A84__INCLUDED_ 2 +#define AFX_ARCCPT_H__B5D13025_2DA9_4489_8BCB_ACB84B908A84__INCLUDED_ 3 + 4 +#include "Archiver.h" 5 +#include "SubDlg.h" 6 + 7 +class CArcCpt : public CArchiver 8 +{ 9 +public: 10 + CArcCpt() : CArchiver("cpt.bin.") {} 11 + 12 +private: 13 + int v_load(){return aCheck|aMelt|aList|aMeltEach;} 14 + bool v_check( const kiPath& aname ); 15 + int v_contents( const kiPath& aname, kiPath& dname ); 16 + int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 17 + bool v_list( const arcname& aname, aflArray& files ); 18 + kiStr v_name(const char*) const { return "CPT"; } 19 + 20 + CArcProgressDlg* pdlg; 21 + 22 +//-- cpt archive operations ---------------- 23 + 24 + unsigned int m_nMacBinOffset; 25 + unsigned int m_nIndexPos; 26 + unsigned int dataULen, dataCLen; 27 + 28 + kiFile cpt,out; 29 + unsigned char tmp[270]; // temp 30 + 31 + bool read_main_hdr(); 32 + bool check_index_crc(); 33 + bool operation_for_each( bool o_list=true, aflArray* files=NULL ); 34 + bool recurse( bool o_list, aflArray* files, kiPath& path, int base, int num ); 35 + void cptmelt( bool isRL ); 36 + 37 +//-- lzh - rle ------------------------------- 38 + 39 +#define CIRCSIZE 8192 40 + class sf_entry 41 + { 42 + public: 43 + int Value; 44 + int BitLength; 45 + }; 46 + class node 47 + { 48 + public: 49 + int flag, byte; 50 + node *one, *zero; 51 + }; 52 + 53 + void cpt_outch( unsigned char ch ); 54 + BYTE cpt_outstat,cpt_savechar; 55 + void cpt_rle_lzh(); 56 + int cpt_get6bits(); 57 + int cpt_getbit(); 58 + void cpt_readHuff(int size,node* Hufftree); 59 + 60 + int gethuffbyte(node* l_nodelist); 61 +#define SLACK 6 62 + node cpt_Hufftree[512 + SLACK],cpt_LZlength[128 + SLACK],cpt_LZoffs[256 + SLACK]; 63 + unsigned char cpt_LZbuff[CIRCSIZE]; 64 + unsigned int cpt_LZptr; 65 + unsigned long cpt_newbits; 66 + int cpt_bitsavail; 67 + int cpt_blocksize; 68 +}; 69 + 70 +#endif
Added ArcDLL.cpp version [83474074d1b2482a]
1 + 2 +#include "stdafx.h" 3 +#include "ArcDLL.h" 4 +#include "NoahApp.h" 5 + 6 +int CArcDLL::v_load() 7 +{ 8 + // DLL�̑��݊m�F 9 + if( !dll.exist() ) 10 + return 0; 11 + 12 + // ���k���\�b�h���X�g��ݒ� 13 + DWORD cp = set_cmpr_mhd(); 14 + 15 + // Abilty��Ԃ� 16 + return (m_Ecmd ? aCheck|aMelt : 0) | (m_Xcmd ? aList|aMeltEach : 0) | cp | (m_Scmd ? aSfx : 0); 17 +} 18 + 19 +int CArcDLL::v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ) 20 +{ 21 + // �o�͐���J�����g�� 22 + ::SetCurrentDirectory( ddir ); 23 + 24 + // �𓀃R�}���h 25 + kiStr cmd = ( !files || files->len()==0 ) ? m_Ecmd : m_Xcmd; 26 + 27 + // ���ɖ� 28 + cmd += " \"", cmd += aname.basedir, cmd += aname.lname, cmd += "\" \""; 29 + // �o�͐�f�B���N�g�� 30 + cmd += ddir, cmd += '"'; 31 + 32 + // ( ��������� )�t�@�C�����X�g 33 + if( files ) 34 + for( unsigned int i=0; i!=files->len(); i++ ) 35 + if( (*files)[i].selected ) 36 + cmd += " \"", 37 + decorate_add_melt( cmd, (*files)[i].inf.szFileName ), 38 + cmd += '"'; 39 + 40 + // �R�}���h���s�I 41 + return dll.cmd( cmd ); 42 +} 43 + 44 +int CArcDLL::v_compress( const kiPath& base, 45 + const wfdArray& files, 46 + const kiPath& ddir, 47 + const int method, 48 + const bool sfx ) 49 +{ 50 + // ���̓J�����g 51 + ::SetCurrentDirectory( base ); 52 + 53 + // �t�@�C�������X�g�쐬 54 + kiStr lst; 55 + for( unsigned int i=0; i!=files.len(); i++ ) 56 + { 57 + lst += '"'; 58 + decorate_add_cmpr( lst, files[i].cFileName ); 59 + if( files[i].dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) 60 + if( m_Wild==1 ) 61 + lst += "\\*"; 62 + else if( m_Wild==2 ) 63 + lst += "\\*.*"; 64 + lst += "\" "; 65 + } 66 + 67 + // ���ɖ��쐬 68 + 69 + // Ver 3.14 -- �t�H���_�Ȃ�g���q�������Ȃ� 70 + // b2e�̕��͍��X�ǁ[���悤���Ȃ��̂ŁA���������ύX 71 + // Ver 3.19 -- ���g���q�͈���� 72 + kiStr aname; 73 + if( files[0].dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) 74 + { 75 + aname = kiPath::name( files[0].cFileName ); 76 + } 77 + else 78 + { 79 + switch(mycnf().extnum()) 80 + { 81 + case 0: aname = files[0].cFileName;break; 82 + case 1: kiPath(files[0].cFileName).getBody_all(aname);break; 83 + default:kiPath(files[0].cFileName).getBody(aname);break; 84 + } 85 + } 86 + 87 + 88 + // ���k�I 89 + if( sfx ) 90 + { 91 + kiPath tmp; 92 + myapp().get_tempdir( tmp ); 93 + 94 + kiPath tsfx(tmp); tsfx+=aname; tsfx+=".exe"; 95 + kiPath rsfx(ddir); rsfx+=aname; rsfx+=".exe"; 96 + 97 + int ans = cmpr( method, aname, tmp, lst ); 98 + if( ans < 0x8000 ) 99 + { 100 + ans = 0x8020; 101 + ::SetCurrentDirectory( tmp ); 102 + if( arc2sfx( aname ) ) 103 + if( ::CopyFile( tsfx, rsfx, FALSE ) ) 104 + ans = 0; 105 + // �J�����g��߂��Ă����Ȃ��Ƃ��Ƃō폜�ł��Ȃ��c 106 + ::SetCurrentDirectory( base ); 107 + } 108 + 109 + tmp.remove(); 110 + return ans; 111 + } 112 + else 113 + return cmpr( method, aname, ddir, lst ); 114 +} 115 + 116 +int CArcDLL::cmpr( int mhd, kiStr& aname,const kiPath& to,const kiStr& lst ) 117 +{ 118 + aname += '.', aname+=get_cmpr_ext(mhd); 119 + 120 + kiStr cmd = get_cmpr_cmd(mhd); 121 + cmd += " \""; 122 + cmd += to; 123 + cmd += aname; 124 + cmd += "\" "; 125 + cmd += lst; 126 + return dll.cmd( cmd ); 127 +} 128 + 129 +bool CArcDLL::arc2sfx( const kiStr& aname ) 130 +{ 131 + kiStr cmd=m_Scmd; cmd+=" \"", cmd+=aname, cmd+='"'; 132 + return 0x8000>dll.cmd( cmd ); 133 +} 134 + 135 +//----------------------------------------------------------------------// 136 + 137 +void CArcDLL::decorate_add_cmpr( kiStr& lst, const char* fname ) 138 +{ 139 + lst += fname; 140 +} 141 + 142 +void CArcDLL::decorate_add_melt( kiStr& lst, const char* fname ) 143 +{ 144 + lst += fname; 145 +} 146 + 147 +void CArcDLL_DotSlash::decorate_add_cmpr( kiStr& lst, const char* fname ) 148 +{ 149 + // �擪 - �� @ ��ɁA.\\ �ŃG�X�P�[�v���� 150 + if( *fname=='-' || *fname=='@' ) 151 + lst += ".\\"; 152 + lst += fname; 153 +} 154 + 155 +void CArcLzh::decorate_add_cmpr( kiStr& lst, const char* fname ) 156 +{ 157 + // UNLHA32.DLL �ɂ͂��̖����p�̃I�v�V���� -gb ���B 158 + if( *fname=='-' ) 159 + lst += "-gb"; 160 + lst += fname; 161 +} 162 + 163 +void CArcLzh::decorate_add_melt( kiStr& lst, const char* fname ) 164 +{ 165 + // UNLHA32.DLL �ɂ͂��̖����p�̃I�v�V���� -gb ���B 166 + if( *fname=='-' ) 167 + lst += "-gb"; 168 + lst += fname; 169 +} 170 + 171 +void CArcZip::decorate_add_cmpr( kiStr& lst, const char* fname ) 172 +{ 173 + // �擪 - �� @ ��ɁA[-] [@] �ƒu������ 174 + if( *fname=='-' || *fname=='@' ) 175 + lst+='[', lst+=*fname++, lst+=']'; 176 + 177 + // �r���� [ �� [[] �ɒu������ 178 + while( *fname ) 179 + if( kiStr::isLeadByte(*fname) ) 180 + { 181 + lst += *fname++, lst += *fname++; 182 + } 183 + else 184 + { 185 + lst += *fname; 186 + if( *fname++=='[' ) 187 + lst += "[]"; 188 + } 189 +} 190 + 191 +//----------------------------------------------------------------------// 192 + 193 +DWORD CArcLzh::set_cmpr_mhd() 194 +{ 195 + set_cmp_ext( "lzh" ); 196 + add_cmp_mhd( "lh5" ), add_cmp_mhd( "lh6" ), add_cmp_mhd( "lh7" ); 197 + return aCompress|aArchive; 198 +} 199 + 200 +const char* CArcLzh::get_cmpr_cmd( int method ) 201 +{ 202 + static char cmd[] = "a -d -jso1 -- -jm2"; 203 + cmd[ sizeof(cmd)-2 ] = (char)('2'+method); 204 + return cmd; 205 +} 206 + 207 +//----------------------------------------------------------------------// 208 + 209 +DWORD CArcZip::set_cmpr_mhd() 210 +{ 211 + set_cmp_ext( "zip" ); 212 + add_cmp_mhd( "store" ), 213 + add_cmp_mhd( "normal", true ), add_cmp_mhd( "password" ); 214 + return aCompress|aArchive; 215 +} 216 + 217 +const char* CArcZip::get_cmpr_cmd( int method ) 218 +{ 219 + switch( method ) 220 + { 221 + case 0: return "-rS0"; 222 + case 2: return "-rS9e"; 223 + } 224 + return "-rS9"; 225 +} 226 + 227 +//----------------------------------------------------------------------// 228 + 229 +DWORD CArcCab::set_cmpr_mhd() 230 +{ 231 + set_cmp_ext( "cab" ); 232 + add_cmp_mhd( "MSZIP" ), add_cmp_mhd( "LZX21",true ); 233 + return aCompress|aArchive; 234 +} 235 + 236 +const char* CArcCab::get_cmpr_cmd( int method ) 237 +{ 238 + return method==0 ? "-a -r -mz" : "-a -r -ml:21"; 239 +} 240 + 241 +//----------------------------------------------------------------------// 242 + 243 +DWORD CArcTar::set_cmpr_mhd() 244 +{ 245 + set_cmp_ext( "tar" ); 246 + add_cmp_mhd( "normal" ), add_cmp_mhd( "gzip",true ), add_cmp_mhd( "bzip2" ); 247 + add_cmp_mhd( "xz" ), add_cmp_mhd( "lzma" ); 248 + return aCompress|aArchive; 249 +} 250 + 251 +const char* CArcTar::get_cmpr_ext( int method ) 252 +{ 253 + switch( method ) 254 + { 255 + case 1: return "tgz"; 256 + case 2: return "tbz"; 257 + case 3: return "tar.xz"; 258 + case 4: return "tar.lzma"; 259 + } 260 + return "tar"; 261 +} 262 + 263 +const char* CArcTar::get_cmpr_cmd( int method ) 264 +{ 265 + switch( method ) 266 + { 267 + case 1: return "-cvz9 --"; 268 + case 2: return "-cvB --"; 269 + case 3: return "-cvJ9 --"; 270 + case 4: return "-cv --lzma=9 --"; 271 + } 272 + return "-cv --"; 273 +} 274 + 275 +//----------------------------------------------------------------------// 276 + 277 +DWORD CArcBga::set_cmpr_mhd() 278 +{ 279 + set_cmp_ext( "bga" ); 280 + add_cmp_mhd( "gzip" ), add_cmp_mhd( "bzip2",true ); 281 + return aCompress|aArchive; 282 +} 283 + 284 +const char* CArcBga::get_cmpr_ext( int method ) 285 +{ 286 + return method==0 ? "gza" : "bza"; 287 +} 288 + 289 +const char* CArcBga::get_cmpr_cmd( int method ) 290 +{ 291 + return "a -r -a"; 292 +} 293 + 294 +//----------------------------------------------------------------------// 295 + 296 +DWORD CArcYz1::set_cmpr_mhd() 297 +{ 298 + set_cmp_ext( "yz1" ); 299 + add_cmp_mhd( "normal" ), add_cmp_mhd( "password" ); 300 + return aCompress|aArchive; 301 +} 302 + 303 +const char* CArcYz1::get_cmpr_cmd( int method ) 304 +{ 305 + return method==0 ? "c --" : "c -p --"; 306 +} 307 + 308 +//----------------------------------------------------------------------// 309 + 310 +bool CArcRar::v_check( const kiPath& aname ) 311 +{ 312 + // Unrar.dll �̃o�O�H�̂��߁A�t�@�C���n���h�����������Ȃ����Ƃ� 313 + // ����̂ŁA���O�̃`�F�b�N���[�`����p���� 314 + // # Subset of XacRett #39 315 + 316 + bool ans=false; 317 + kiFile rar; 318 + if( !rar.open(aname) ) 319 + return false; 320 + 321 + unsigned char mark[10]; 322 + if( 10!=rar.read(mark,10) ) 323 + return false; 324 + 325 + if( mark[0]==0x52 && mark[1]==0x45 && mark[2]==0x7e && mark[3]==0x5e ) 326 + return true; 327 + else if( mark[0]==0x52 && mark[1]==0x61 && 328 + mark[2]==0x72 && mark[3]==0x21 && 329 + mark[4]==0x1a && mark[5]==0x07 && 330 + mark[6]==0x00 && mark[9]==0x73 ) 331 + return true; 332 + else 333 + { 334 + unsigned char* mem=new unsigned char[0x20000]; 335 + int siz = rar.read( mem, 0x1FFF0 ); 336 + 337 + for( unsigned char* p=mem; p<mem+siz-9; p++ ) 338 + { 339 + if( *p!=0x52 )continue; 340 + if( p[1]==0x45 && p[2]==0x7e && p[3]==0x5e && 341 + mem[18]==0x52 && mem[19]==0x53 && 342 + mem[20]==0x46 && mem[21]==0x58) 343 + { ans=true; break; } 344 + 345 + if( p[1]==0x61 && p[2]==0x72 && p[3]==0x21 && 346 + p[4]==0x1a && p[5]==0x07 && p[6]==0x00 && 347 + p[9]==0x73 ) 348 + { ans=true; break; } 349 + } 350 + delete [] mem; 351 + } 352 + 353 + return ans; 354 +} 355 + 356 +int CArcRar::v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ) 357 +{ 358 + // Unrar�̓R�}���h�w��Ń_�C�A���O�������Ȃ��̂ŁA 359 + // OwnerWindow���w�肷�� 360 + 361 + if( files && files->len() ) 362 + dll.own( app()->mainhwnd() ); 363 + 364 + int ans = CArcDLL::v_melt( aname, ddir, files ); 365 + 366 + if( files && files->len() ) 367 + dll.fre(); 368 + 369 + return ans; 370 +} 371 + 372 +int CArcUnZip::v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ) 373 +{ 374 + // UnZip32.dll�����ȃt�H���_�����o���o�O�� 375 + 376 + int ans = CArcDLL::v_melt( aname, ddir, files ); 377 + dll.unload(); 378 + return ans; 379 +} 380 + 381 +//----------------------------------------------------------------------// 382 + 383 +DWORD CArc7z::set_cmpr_mhd() 384 +{ 385 + set_cmp_ext( "7z" ); 386 + add_cmp_mhd( "LZMA", true ); 387 + add_cmp_mhd( "LZMA(std)" ); 388 + add_cmp_mhd( "LZMA(fast)" ); 389 + add_cmp_mhd( "PPMd" ); 390 + return aCompress|aArchive; 391 +} 392 + 393 +const char* CArc7z::get_cmpr_cmd( int method ) 394 +{ 395 + if( m_SfxMode ) 396 + switch( method ) 397 + { 398 + case 0: return "a -t7z -sfx -m0=LZMA -r0 -mx=9 --"; 399 + case 1: return "a -t7z -sfx -m0=LZMA -r0 -mx=5 --"; 400 + case 2: return "a -t7z -sfx -m0=LZMA -r0 -mx=1 --"; 401 + default: return "a -t7z -sfx -m0=PPMd -r0 -mx=9 --"; 402 + } 403 + else 404 + switch( method ) 405 + { 406 + case 0: return "a -t7z -m0=LZMA -r0 -mx=9 --"; 407 + case 1: return "a -t7z -m0=LZMA -r0 -mx=5 --"; 408 + case 2: return "a -t7z -m0=LZMA -r0 -mx=1 --"; 409 + default: return "a -t7z -m0=PPMd -r0 -mx=9 --"; 410 + } 411 +} 412 + 413 +int CArc7z::v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ) 414 +{ 415 + m_SfxMode = sfx; // ����������肵��SFX���[�h���L�� 416 + return CArcDLL::v_compress(base,files,ddir,method,false); 417 +} 418 + 419 +const char* CArc7z::get_cmpr_ext( int method ) 420 +{ 421 + return m_SfxMode ? "exe" : "7z"; 422 +} 423 + 424 +//----------------------------------------------------------------------// 425 + 426 +DWORD CArc7zZip::set_cmpr_mhd() 427 +{ 428 + set_cmp_ext( "zip" ); 429 + add_cmp_mhd( "7-zip", true ); 430 + return aCompress|aArchive; 431 +} 432 + 433 +const char* CArc7zZip::get_cmpr_cmd( int method ) 434 +{ 435 + return "a -tzip -r0 -mx=9 --"; 436 +} 437 + 438 +int CArc7zZip::v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ) 439 +{ 440 + // ����������肵�Ēʏ툳�k 441 + return CArcDLL::v_compress(base,files,ddir,method,false); 442 +} 443 +
Added ArcDLL.h version [a694505ce13887ba]
1 +#ifndef AFX_ARCDLL_H__911C109D_A40E_4722_A6F7_E3ACB8C2D2E3__INCLUDED_ 2 +#define AFX_ARCDLL_H__911C109D_A40E_4722_A6F7_E3ACB8C2D2E3__INCLUDED_ 3 + 4 +#include "Archiver.h" 5 + 6 +class CArcDLL : public CArchiver 7 +{ 8 +public: 9 + CArcDLL( 10 + const char* Dllname, // DLL�� 11 + const char* Exts, // �Ή��g���q 12 + const char* Ecmd, // �𓀗p�R�}���h 13 + const char* Xcmd, // �����𓀗p�R�}���h 14 + unsigned int Wild=1, // ���C���h�J�[�h�̌`��( 0=no(*) 1=* 2=*.* ) 15 + const char* Scmd=NULL )// SFX�ϊ��p�R�}���h 16 + : dll( Dllname ), CArchiver( Exts ), m_Ecmd( Ecmd ), 17 + m_Xcmd( Xcmd ), m_Wild( Wild ), m_Scmd( Scmd ) {} 18 + 19 +protected: //-- �h�����Ă��悵 20 + virtual DWORD set_cmpr_mhd() 21 + { return 0; } 22 + virtual const char* get_cmpr_ext( int method ) 23 + { return cmp_ext(); } 24 + virtual const char* get_cmpr_cmd( int method ) 25 + { return ""; } 26 + virtual void decorate_add_cmpr( kiStr& lst, const char* fname ); 27 + virtual void decorate_add_melt( kiStr& lst, const char* fname ); 28 + 29 +protected: //-- �������� 30 + CArcModule dll; 31 + bool v_ver( kiStr& str ){ dll.ver(str); return true; } 32 + bool v_check( const kiPath& aname ){ return dll.chk(aname); } 33 + int v_contents( const kiPath& aname, kiPath& dname ){ return dll.cnt(aname,dname,m_Wild==2?"*.*":"*"); } 34 + bool v_list( const arcname& aname, aflArray& files ){ return dll.lst_dll(aname,files,m_Wild==2?"*.*":"*"); } 35 + 36 + int v_load(); 37 + int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 38 + int v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ); 39 + kiStr v_name(const char*) const { return dll.name(); } 40 + 41 +private: 42 + const char *m_Ecmd, *m_Xcmd, *m_Scmd; 43 + unsigned int m_Wild; 44 + int cmpr( int mhd, kiStr& aname,const kiPath& to,const kiStr& lst ); 45 + bool arc2sfx( const kiStr& aname ); 46 +}; 47 + 48 +//------------------------------------------------------------// 49 + 50 +class CArcDLL_DotSlash : public CArcDLL 51 +{ 52 + // "./-" �� "./@" �Ƃ��邱�ƂłƂ肠������������k����`�� 53 + virtual void decorate_add_cmpr( kiStr& lst, const char* fname ); 54 + 55 +protected: 56 + CArcDLL_DotSlash( 57 + const char* Dllname, 58 + const char* Exts, 59 + const char* Ecmd, 60 + const char* Xcmd, 61 + unsigned int Wild=1, 62 + const char* Scmd=NULL ) 63 + : CArcDLL( Dllname, Exts, Ecmd, Xcmd, Wild, Scmd ) {} 64 +}; 65 + 66 +//------------------------------------------------------------// 67 + 68 +class CArcRar : public CArcDLL 69 +{ 70 +public: 71 + CArcRar() : CArcDLL( 72 + "Unrar32.dll", 73 + "rar.", 74 + "-x", 75 + "-x -s -y --" ) {} 76 + 77 +private: 78 + kiStr v_name(const char*) const { return "RAR"; } 79 + // ���ʂɔh�� 80 + bool v_check( const kiPath& aname ); 81 + int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 82 +}; 83 + 84 +//------------------------------------------------------------// 85 + 86 +class CArcUnZip : public CArcDLL 87 +{ 88 +public: 89 + CArcUnZip() : CArcDLL( 90 + "UnZip32.dll", 91 + "zip.jar.", 92 + "-x", 93 + "-x --i -o" ) {} 94 +private: 95 + kiStr v_name(const char*) const { return "ZIP"; } 96 + // ���ʂɔh�� 97 + int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 98 +}; 99 + 100 +//------------------------------------------------------------// 101 + 102 +class CArcLzh : public CArcDLL 103 +{ 104 +public: 105 + CArcLzh() : CArcDLL( 106 + "Unlha32.dll", 107 + "lzh.lha.lzs.", 108 + "x -a1 -jf0", 109 + "x -a1 -jf0 -jyo -p1 -n -gm --", 110 + 0, 111 + "s -gw3 -x1" ) {} 112 +private: 113 + kiStr v_name(const char*) const { return "LZH"; } 114 + DWORD set_cmpr_mhd(); 115 + const char* get_cmpr_cmd( int method ); 116 + void decorate_add_cmpr( kiStr& lst, const char* fname ); 117 + void decorate_add_melt( kiStr& lst, const char* fname ); 118 +}; 119 + 120 +//------------------------------------------------------------// 121 + 122 +class CArcZip : public CArcDLL 123 +{ 124 +public: 125 + CArcZip() : CArcDLL( 126 + "Zip32j.dll", 127 + "", 128 + NULL, 129 + NULL, 130 + 1, 131 + "--sfx" ) {} 132 +private: 133 + DWORD set_cmpr_mhd(); 134 + const char* get_cmpr_cmd( int method ); 135 + void decorate_add_cmpr( kiStr& lst, const char* fname ); 136 +}; 137 + 138 +//------------------------------------------------------------// 139 + 140 +class CArcCab : public CArcDLL_DotSlash 141 +{ 142 +public: 143 + CArcCab() : CArcDLL_DotSlash( 144 + "Cab32.dll", 145 + "cab.", 146 + "-x", 147 + "-x -i -o", 148 + 1, 149 + "-f" ) {} 150 +private: 151 + kiStr v_name(const char*) const { return "CAB"; } 152 + DWORD set_cmpr_mhd(); 153 + const char* get_cmpr_cmd( int method ); 154 +}; 155 + 156 +//------------------------------------------------------------// 157 + 158 +class CArcTar : public CArcDLL_DotSlash 159 +{ 160 +public: 161 + CArcTar() : CArcDLL_DotSlash( 162 + "Tar32.dll", 163 + "tar.tgz.tbz.gz.bz2.z.taz.rpm.deb.ar.xz.lzma.", 164 + "-xvf", 165 + "--check-all-path=1 --display-dialog=0 -xvf", 166 + 2 ) {} 167 +private: 168 + #define ARCHIVETYPE_NORMAL 0 169 + #define ARCHIVETYPE_TAR 1 170 + #define ARCHIVETYPE_TARGZ 2 171 + #define ARCHIVETYPE_TARZ 3 172 + #define ARCHIVETYPE_GZ 4 173 + #define ARCHIVETYPE_Z 5 174 + #define ARCHIVETYPE_TARBZ2 6 175 + #define ARCHIVETYPE_BZ2 7 176 + 177 + #define ARCHIVETYPE_CPIO 32 178 + #define ARCHIVETYPE_CPIOGZ 32+4 179 + #define ARCHIVETYPE_CPIOZ 32+5 180 + #define ARCHIVETYPE_CPIOBZ2 32+7 181 + 182 + #define ARCHIVETYPE_AR 48 183 + #define ARCHIVETYPE_ARGZ 48+4 184 + #define ARCHIVETYPE_ARZ 48+5 185 + #define ARCHIVETYPE_ARBZ2 48+7 186 + kiStr v_name(const char* an) const { switch(dll.arctype(an)) { 187 + case ARCHIVETYPE_GZ: return "GZ"; 188 + case ARCHIVETYPE_Z: return "Z"; 189 + case ARCHIVETYPE_BZ2: return "BZ2"; 190 + case ARCHIVETYPE_TARGZ: return "TAR+GZ"; 191 + case ARCHIVETYPE_TARZ: return "TAR+Z"; 192 + case ARCHIVETYPE_TARBZ2: return "TAR+BZ2"; 193 + case ARCHIVETYPE_CPIOGZ: return kiStr("rpm").isSame(kiPath::ext(an)) ? "RPM" : "CPIO+GZ"; 194 + case ARCHIVETYPE_CPIOZ: return "CPIO+Z"; 195 + case ARCHIVETYPE_CPIOBZ2:return "CPIO+BZ2"; 196 + case ARCHIVETYPE_ARGZ: return "AR+GZ"; 197 + case ARCHIVETYPE_ARZ: return "AR+Z"; 198 + case ARCHIVETYPE_ARBZ2: return "AR+BZ2"; 199 + case ARCHIVETYPE_AR: return "AR"; 200 + case ARCHIVETYPE_CPIO: return "CPIO"; 201 + default: return "TAR"; 202 + }} 203 + const char* get_cmpr_ext( int method ); 204 + DWORD set_cmpr_mhd(); 205 + const char* get_cmpr_cmd( int method ); 206 +}; 207 + 208 +//------------------------------------------------------------// 209 + 210 +class CArcBga : public CArcDLL_DotSlash 211 +{ 212 +public: 213 + CArcBga() : CArcDLL_DotSlash( 214 + "Bga32.dll", 215 + "gza.bza.", 216 + "x -a", 217 + "x -a -i -o", 218 + 0, 219 + "s" ) {} 220 +private: 221 + kiStr v_name(const char* an) const { return dll.arctype(an)==2 ? "BZA" : "GZA"; } 222 + const char* get_cmpr_ext( int method ); 223 + DWORD set_cmpr_mhd(); 224 + const char* get_cmpr_cmd( int method ); 225 +}; 226 + 227 +//------------------------------------------------------------// 228 + 229 +class CArcYz1 : public CArcDLL 230 +{ 231 +public: 232 + CArcYz1() : CArcDLL( 233 + "Yz1.dll", 234 + "yz1.", 235 + "x", 236 + "x -y -z -i2 --", 237 + 0, 238 + "s" ) {} 239 +private: 240 + kiStr v_name(const char*) const { return "YZ1"; } 241 + DWORD set_cmpr_mhd(); 242 + const char* get_cmpr_cmd( int method ); 243 +}; 244 + 245 +//------------------------------------------------------------// 246 + 247 +class CArcArj : public CArcDLL 248 +{ 249 +public: 250 + CArcArj() : CArcDLL 251 + ( "Unarj32j.dll", "arj.", "x -jyc", "x -y -p -hm -i -!" ) {} 252 + 253 +private: 254 + kiStr v_name(const char*) const { return "ARJ"; } 255 +}; 256 + 257 +//------------------------------------------------------------// 258 + 259 +class CArcGca : public CArcDLL 260 +{ 261 +public: 262 + CArcGca() : CArcDLL 263 + ( "UnGCA32.dll", "gca.", "e -sx1", "ex -xx1 -sx0 -yx0" ) {} 264 + 265 +private: 266 + kiStr v_name(const char*) const { return "GCA"; } 267 +}; 268 + 269 +//------------------------------------------------------------// 270 + 271 +class CArc7z : public CArcDLL_DotSlash 272 +{ 273 +public: 274 + CArc7z() : CArcDLL_DotSlash( 275 + "7-zip32.dll", 276 + "7z.zip.jar.", 277 + "x --", 278 + "x -y -hide --", 279 + 1, 280 + "" ) {} 281 +private: 282 + kiStr v_name(const char* an) const { return dll.arctype(an)==1 ? "ZIP" : "7Z"; } 283 + DWORD set_cmpr_mhd(); 284 + const char* get_cmpr_cmd( int method ); 285 + const char* get_cmpr_ext( int method ); 286 + virtual int v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ); 287 + bool m_SfxMode; 288 +}; 289 + 290 +//------------------------------------------------------------// 291 + 292 +class CArc7zZip : public CArcDLL_DotSlash 293 +{ 294 +public: 295 + CArc7zZip() : CArcDLL_DotSlash( 296 + "7-zip32.dll", 297 + "",NULL,NULL,1,"" ) {} 298 +private: 299 + DWORD set_cmpr_mhd(); 300 + const char* get_cmpr_cmd( int method ); 301 + virtual bool v_ver( kiStr& ){return false;}//CArc7z�ɔC���� 302 + virtual int v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ); 303 +}; 304 + 305 +//------------------------------------------------------------// 306 + 307 +#endif
Added ArcMsc.cpp version [b142f0fccb14651d]
1 + 2 +#include "stdafx.h" 3 +#include "ArcMsc.h" 4 +#include "NoahApp.h" 5 + 6 +bool CArcMsc::header( kiFile& fp, unsigned long* siz, char* ext ) 7 +{ 8 + // �ǂݏo�� 9 + unsigned char p[14]; 10 + if( 14!=fp.read(p,14) ) 11 + return false; 12 + 13 + // �w�b�_�\���FSZDD��'3A [ext3rd] [orisiz(dword)] 14 + static const unsigned char head[9]={ 0x53,0x5A,0x44,0x44,0x88,0xF0,0x27,0x33,0x41 };//="SZDD��'3A"; 15 + 16 + for( int i=0; i!=9; i++ ) 17 + if( p[i]!=head[i] ) 18 + return false; 19 + 20 + if( ext ) 21 + *ext = (char)p[9]; 22 + 23 + DWORD x = p[10]+(p[11]<<8)+(p[12]<<16)+(p[13]<<24); 24 + if( siz ) 25 + *siz=x; 26 + 27 + // �����I�ɁA16�{�Ƃ������k���͏o�Ȃ� 28 + return (x <= fp.getSize()*16); 29 +} 30 + 31 +void CArcMsc::filename( char* oname, const char* ol, char ext ) 32 +{ 33 + // �R�s�[ 34 + ki_strcpy( oname, ol ); 35 + 36 + // �Ōオ '_' �Ȃ�����Ă����B 37 + bool bIs_=false; 38 + for( char* p=oname; *p; p=kiStr::next(p) ) 39 + bIs_ = (*p=='_'); 40 + if( bIs_ ) 41 + *(--p)='\0'; 42 + 43 + 44 + if( ext ) 45 + { 46 + // �g���q���� 47 + *p++ = ext; 48 + *p = '\0'; 49 + } 50 + else 51 + { 52 + // �g���q�����⊮ 53 + const char* x = kiPath::ext(oname); 54 + if( ki_strlen(x)==2 ) 55 + { 56 + ::CharLower(oname); 57 + 58 + if( 0==ki_strcmp(x,"ex") )(*p++)='e'; 59 + else if( 0==ki_strcmp(x,"co") )(*p++)='m'; 60 + else if( 0==ki_strcmp(x,"sc") )(*p++)='r'; 61 + 62 + else if( 0==ki_strcmp(x,"dl") )(*p++)='l'; 63 + else if( 0==ki_strcmp(x,"oc") )(*p++)='x'; 64 + else if( 0==ki_strcmp(x,"dr") )(*p++)='v'; 65 + else if( 0==ki_strcmp(x,"vx") )(*p++)='d'; 66 + else if( 0==ki_strcmp(x,"38") )(*p++)='6'; 67 + else if( 0==ki_strcmp(x,"sy") )(*p++)='s'; 68 + else if( 0==ki_strcmp(x,"cp") )(*p++)='l'; 69 + else if( 0==ki_strcmp(x,"li") )(*p++)='b'; 70 + else if( 0==ki_strcmp(x,"tt") )(*p++)='f'; 71 + 72 + else if( 0==ki_strcmp(x,"ch") )(*p++)='m'; 73 + else if( 0==ki_strcmp(x,"hl") )(*p++)='p'; 74 + else if( 0==ki_strcmp(x,"cn") )(*p++)='t'; 75 + else if( 0==ki_strcmp(x,"da") )(*p++)='t'; 76 + 77 + else if( 0==ki_strcmp(x,"tx") )(*p++)='t'; 78 + else if( 0==ki_strcmp(x,"wr") )(*p++)='i'; 79 + else if( 0==ki_strcmp(x,"wa") )(*p++)='v'; 80 + else if( 0==ki_strcmp(x,"mi") )(*p++)='d'; 81 + else if( 0==ki_strcmp(x,"rm") )(*p++)='i'; 82 + else if( 0==ki_strcmp(x,"bm") )(*p++)='p'; 83 + else if( 0==ki_strcmp(x,"rl") )(*p++)='e'; 84 + else if( 0==ki_strcmp(x,"cu") )(*p++)='r'; 85 + else if( 0==ki_strcmp(x,"do") )(*p++)='c'; 86 + else if( 0==ki_strcmp(x,"ic") )(*p++)='o'; 87 + else if( 0==ki_strcmp(x,"re") )(*p++)='g'; 88 + else if( 0==ki_strcmp(x,"rt") )(*p++)='f'; 89 + else if( 0==ki_strcmp(x,"ht") )(*p++)='m'; 90 + else (*p++)='#'; 91 + 92 + *p = '\0'; 93 + } 94 + } 95 +} 96 + 97 +bool CArcMsc::v_check( const kiPath& aname ) 98 +{ 99 + kiFile fp; 100 + if( fp.open( aname ) ) 101 + return header( fp,NULL,NULL ); 102 + return false; 103 +} 104 + 105 +bool CArcMsc::v_list( const arcname& aname, aflArray& files ) 106 +{ 107 + kiPath fname(aname.basedir); fname+=aname.lname; 108 + 109 + arcfile x; 110 + kiFile fp; 111 + char ext; 112 + if( !fp.open( fname ) || !header( fp, &x.inf.dwOriginalSize, &ext ) ) 113 + return false; 114 + ki_strcpy( x.inf.szMode, "-msc-" ); 115 + filename( x.inf.szFileName, aname.lname, ext ); 116 + x.inf.dwCompressedSize = fp.getSize(); 117 + x.isfile = true; 118 + 119 + // TODO: �������ǂ�����H 120 + 121 + files.add( x ); 122 + return true; 123 +} 124 + 125 +int CArcMsc::v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ) 126 +{ 127 + kiFile fp; 128 + kiPath fname(aname.basedir); fname+=aname.lname; 129 + kiPath oname(ddir); 130 + char tmp[MAX_PATH]; 131 + 132 + // �w�b�_�ǂݍ��� 133 + char ext; 134 + unsigned long alllen; 135 + if( !fp.open( fname ) || !header(fp,&alllen,&ext) ) 136 + return 0xffff; 137 + fp.close(); 138 + filename( tmp, aname.lname, ext ); 139 + oname += tmp; 140 + 141 + // ���ɁE�o�͐���J�� 142 + OFSTRUCT of; 143 + of.cBytes = sizeof(of); 144 + int FROM = ::LZOpenFile( const_cast<char*>((const char*)fname),&of,OF_READ ); 145 + int TO = ::LZOpenFile( const_cast<char*>((const char*)oname),&of,OF_WRITE|OF_CREATE ); 146 + if( FROM<0 || TO<0 ) 147 + return 0xffff; 148 + // �� 149 + bool ans = (0<=::LZCopy( FROM,TO )); 150 + // �I�� 151 + ::LZClose( TO ); 152 + ::LZClose( FROM ); 153 + return ans?0:0xffff; 154 +} 155 + 156 +int CArcMsc::v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ) 157 +{ 158 + ::SetCurrentDirectory( base ); 159 + 160 + // ���t�@�C�����J�� 161 + kiFile in; 162 + if( !in.open( files[0].cFileName ) ) 163 + return 0xffff; 164 + 165 + // �w�b�_���E���k��t�@�C���� 166 + char h_Ext3 = '\0'; 167 + unsigned long h_Len = in.getSize(); 168 + 169 + char aname[MAX_PATH]; 170 + ki_strcpy( aname, files[0].cFileName ); 171 + for( char *x=aname, *last=aname; *x; x=kiStr::next(x) ) 172 + last = x; 173 + if( !IsDBCSLeadByte(*last) ) 174 + h_Ext3=*last; 175 + *last = '_', *(last+1) = '\0'; 176 + 177 + // ���k��J�� 178 + ::SetCurrentDirectory( ddir ); 179 + 180 + // ���k����J�� 181 + kiFile out; 182 + if( !out.open( aname, false ) ) 183 + return 0xffff; 184 + 185 + // �^�C���X�^���v�R�s�[ 186 + FILETIME ct, at, mt; 187 + ::GetFileTime(in.getHandle(), &ct, &at, &mt); 188 + ::SetFileTime(out.getHandle(), &ct, &at, &mt); 189 + 190 + // �w�b�_�������� 191 + unsigned char head[14]={ 0x53,0x5A,0x44,0x44,0x88,0xF0,0x27,0x33,0x41,(unsigned char)h_Ext3, 192 + (unsigned char)(h_Len&0xff),(unsigned char)((h_Len>>8)&0xff), 193 + (unsigned char)((h_Len>>16)&0xff),(unsigned char)((h_Len>>24)&0xff) }; 194 + out.write( head, 14 ); 195 + 196 + // ���k��� 197 + CArcProgressDlg dlg( h_Len, true ); 198 + dlg.change( files[0].cFileName ); 199 + if( !do_lzss( in, out, dlg ) ) 200 + { 201 + out.close(); 202 + ::DeleteFile(aname); 203 + return 0x8020; 204 + } 205 + return 0; 206 +} 207 + 208 + 209 +//-- 12bit LZSS -----------------------------------------------// 210 + 211 + 212 +#define N 4096 // slide���̃T�C�Y 2^12 bytes 213 +#define F 18 // �Œ���v�� 2^(16-12)+2 bytes 214 + 215 +static unsigned char window[N+F-1]; 216 +static int dad[N+1], lson[N+1], rson[N+257]; 217 +static int matchpos, matchlen; 218 + 219 +static void init_tree() 220 +{ 221 + //-- �������� 222 + 223 + int i; 224 + for( i=N+1; i<=N+256; i++ ) // root: 0x00 -- 0xff 225 + rson[i] = N; 226 + for( i=0; i<N ; i++ ) 227 + dad[i] = N; 228 +} 229 + 230 +static void insert_node( int r ) 231 +{ 232 + //-- [�ʒur]����n�܂�[��str]��ɓo�^ 233 + unsigned char* str = window + r; 234 + rson[r] = lson[r] = N; 235 + 236 + //-- ���łɈ�v���E�ʒu���L�^���� 237 + matchlen = 2; 238 + 239 + // �ꕶ���ڂ�root��I�� 240 + int i, p = N+1+str[0], cmp=1; 241 + for(; ;) 242 + { 243 + if( cmp >= 0 ) 244 + { 245 + // �E�ɐi�� 246 + if( rson[p] != N ) 247 + p = rson[p]; 248 + // �E�ɂ͂���node���Ȃ��̂ł����ɓo�^���ďI�� 249 + else 250 + { 251 + rson[p] = r; 252 + dad[r] = p; 253 + return; 254 + } 255 + } 256 + else 257 + { 258 + // ���ɐi�� 259 + if( lson[p] != N ) 260 + p = lson[p]; 261 + // ���ɂ͂���node���Ȃ��̂ł����ɓo�^���ďI�� 262 + else 263 + { 264 + lson[p] = r; 265 + dad[r] = p; 266 + return; 267 + } 268 + } 269 + 270 + // ���݂�node��str���r( i==��v�� ) 271 + for( i=1; i<F; i++ ) 272 + if( cmp = str[i] - window[p+i] ) 273 + break; 274 + 275 + // ���܂Ō��������̂̒��ōŒ���������L�� 276 + if( i > matchlen ) 277 + { 278 + matchpos = p; 279 + if( (matchlen=i) == F ) 280 + break; 281 + } 282 + } 283 + 284 + // [�ʒup]�̗�ƒ���F�ň�v�����ꍇ�A�����ɗ��� 285 + // p �݂̍����Ƃ���� r �Œu�������� 286 + 287 + dad[r] = dad[p]; 288 + lson[r] = lson[p]; 289 + rson[r] = rson[p]; 290 + dad[lson[p]] = r; 291 + dad[rson[p]] = r; 292 + 293 + if( rson[dad[p]]==p ) 294 + rson[dad[p]] = r; 295 + else 296 + lson[dad[p]] = r; 297 + 298 + dad[p] = N; 299 +} 300 + 301 +static void delete_node( int p ) 302 +{ 303 + //-- [�ʒup]�̗v�f�����폜 304 + 305 + if( dad[p] == N ) // ���ɖɓ����ĂȂ��̂ł����܂� 306 + return; 307 + 308 + int q; 309 + 310 + if( rson[p] == N ) 311 + q = lson[p]; // �B��̎q����Ɏ����グ�� 312 + else if( lson[p] == N ) 313 + q = rson[p]; // �B��̎q����Ɏ����グ�� 314 + else 315 + { 316 + q = lson[p]; 317 + 318 + if( rson[q] != N ) 319 + { 320 + // ���̎}�̍ʼnE�A�܂莩�����������node�������グ�� 321 + do 322 + q = rson[q]; 323 + while( rson[q] != N ); 324 + 325 + rson[dad[q]] = lson[q]; 326 + dad[lson[q]] = dad[q]; 327 + lson[q] = lson[p]; 328 + dad[lson[p]] = q; 329 + } 330 + rson[q] = rson[p]; 331 + dad[rson[p]] = q; 332 + } 333 + 334 + dad[q] = dad[p]; 335 + if( rson[dad[p]] == p ) 336 + rson[dad[p]] = q; 337 + else 338 + lson[dad[p]] = q; 339 + dad[p] = N; 340 +} 341 + 342 +bool CArcMsc::do_lzss( kiFile& in, kiFile& out, CArcProgressDlg& dlg ) 343 +{ 344 + int i, c, len, r, s; 345 + unsigned char code[17]={0}, mask=1, codeptr=1; 346 + 347 + s = 2; // s = �f�[�^�Ǎ��ʒu 348 + r = N - 16; // r = �ւ̑}���ʒu 349 + 350 + // �N���A 351 + init_tree(); 352 + ki_memset( window+2, ' ', N-F ); 353 + 354 + // �擪18bytes���� 355 + for( len=0 ; len<F ; len++ ) 356 + { 357 + if( -1 == (c = in.getc()) ) 358 + break; 359 + window[r+len] = c; 360 + } 361 + window[0] = window[r+16]; 362 + window[1] = window[r+17]; 363 + if( len==0 ) 364 + return true; 365 + 366 + // �֑}�� 367 + for( i=F ; i>=0 ; i-- ) 368 + insert_node( r-i ); 369 + 370 + // ���[�v 371 + unsigned int total_read=18,prgr_read=0; 372 + 373 + do 374 + { 375 + if( prgr_read > 5000 ) 376 + { 377 + dlg.change( NULL, total_read+=prgr_read ); 378 + prgr_read-=5000; 379 + if( !dlg.msgloop() ) 380 + { 381 + prgr_read=0xffffffff; 382 + break; 383 + } 384 + } 385 + 386 + if( matchlen > len ) 387 + matchlen=len; 388 + 389 + if( matchlen < 3 ) // ��v�Ȃ� 390 + { 391 + matchlen = 1; 392 + code[0] |= mask; 393 + code[codeptr++] = window[r]; 394 + } 395 + else // ��v���� 396 + { 397 + // [pos&0xff] [pos&0xf00 | len-3] 398 + code[codeptr++] = (unsigned char)matchpos; 399 + code[codeptr++] = (unsigned char)(((matchpos>>4)&0xf0) | (matchlen-3)); 400 + } 401 + 402 + if( (mask<<=1)==0 ) // code �� 8Block �ɂȂ��Ă�����o�� 403 + { 404 + out.write( code, codeptr ); 405 + // �R�[�h�o�b�t�@������ 406 + code[0] = 0; 407 + codeptr = mask = 1; 408 + } 409 + 410 + // �o�͂������ǂݍ��� 411 + int lastmatchlen = matchlen; 412 + for( i=0 ; i<lastmatchlen; i++ ) 413 + { 414 + if( -1 == (c=in.getc()) ) 415 + break; 416 + prgr_read++; 417 + 418 + // [�ʒus]�Ɉꕶ���������� 419 + delete_node( s ); 420 + window[s] = c; 421 + if( s < F-1 ) window[ N+s ] = c; 422 + 423 + s = (s+1) & (N-1); // s++ 424 + r = (r+1) & (N-1); // r++ 425 + 426 + // ��[�ʒur]�̃f�[�^��}�� 427 + insert_node( r ); 428 + } 429 + 430 + // EOF�㏈�� 431 + while( i++ < lastmatchlen ) 432 + { 433 + delete_node( s ); 434 + s = (s+1) & (N-1); // s++ 435 + r = (r+1) & (N-1); // r++ 436 + if( --len ) 437 + insert_node( r ); 438 + } 439 + 440 + } while( len > 0 ); 441 + 442 + if( prgr_read==0xffffffff ) 443 + return false; 444 + 445 + // 8block���E�ɑ����� 446 + if( mask != 1 ) 447 + { 448 + while( mask<<=1 ) 449 + code[codeptr++] = 0; 450 + out.write( code, codeptr ); 451 + } 452 + 453 + return true; 454 +} 455 +
Added ArcMsc.h version [3dbc15b093e50358]
1 +#ifndef AFX_ARCMSC_H__1891072B_44D7_4577_AF05_6D221A2FD0DD__INCLUDED_ 2 +#define AFX_ARCMSC_H__1891072B_44D7_4577_AF05_6D221A2FD0DD__INCLUDED_ 3 + 4 +#include "Archiver.h" 5 +#include "SubDlg.h" 6 + 7 +class CArcMsc : public CArchiver 8 +{ 9 +public: 10 + CArcMsc() : CArchiver("") {} 11 + 12 +private: 13 + int v_load() 14 + { 15 + set_cmp_ext( "??_" ), add_cmp_mhd( "MSCompress" ); 16 + return aCheck|aMelt|aList|aMeltEach|aCompress; 17 + } 18 + int v_contents( const kiPath& aname, kiPath& dnam ){return aSingleFile;} 19 + 20 + bool v_check( const kiPath& aname ); 21 + int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 22 + bool v_list( const arcname& aname, aflArray& files ); 23 + int v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ); 24 + kiStr v_name(const char*) const { return "MSCompress"; } 25 + 26 +private: 27 + bool header( kiFile& fp, unsigned long* siz, char* ext ); 28 + void filename( char* oname, const char* ol, char ext ); 29 + bool do_lzss( kiFile& in, kiFile& out, CArcProgressDlg& dlg ); 30 +}; 31 + 32 +#endif
Added Archiver.cpp version [10de0296b1be04cd]
1 +// Archiver.cpp 2 +//-- CArchiver -- common interface in 'Noah' for archiving routine -- 3 + 4 +#include "stdafx.h" 5 +#include "Archiver.h" 6 +#include "NoahApp.h" 7 + 8 + 9 + 10 +CArcModule::CArcModule( const char* name, bool us ) 11 + : m_dll(NULL) 12 +{ 13 + // SearchPath�̑O�ɃJ�����g�f�B���N�g����noah.exe�Ɠ����ꏊ�� 14 + char prev_cur[MAX_PATH]; 15 + ::GetCurrentDirectory(MAX_PATH, prev_cur); 16 + kiSUtil::switchCurDirToExeDir(); 17 + 18 + if( 0!=::SearchPath( NULL,name,NULL,MAX_PATH,m_name,NULL ) ) 19 + { 20 + const char* xt=kiPath::ext(name); 21 + if( 0!=ki_strcmpi("dll",xt) ) 22 + { 23 + // EXE�̏ꍇ 24 + m_type = us ? EXEUS : EXE; 25 + } 26 + else 27 + { 28 + // DLL�̏ꍇ 29 + m_dll = new kiArcDLLRaw(name); 30 + m_type = DLL; 31 + if(name<=xt-8&&xt[-6]=='G'&&xt[-5]=='C'&&xt[-4]=='A' ) 32 + m_type = DLLGCA; 33 + else if(name==xt-6&&xt[-6]=='B'&&xt[-5]=='g'&&xt[-4]=='a' ) 34 + m_type = DLLBGA; 35 + } 36 + } 37 + else 38 + { 39 + // �t�@�C�����������A�V�F���̃R�}���h�̏ꍇ 40 + // �o�b�t�@�I�[�o�[�t���[�̊댯�c(^^; 41 + ki_strcpy( m_name, name ); 42 + m_type = SHLCMD; 43 + } 44 + 45 + // �J�����g��߂� 46 + ::SetCurrentDirectory(prev_cur); 47 +} 48 + 49 +CArcModule::~CArcModule() 50 +{ 51 + delete m_dll; 52 +} 53 + 54 +int CArcModule::cmd( const char* cmd, bool mini ) 55 +{ 56 + if( m_dll ) 57 + { 58 + // �A�[�J�C�oDLL���[�h�Ȃ�ȒP�ɏI�� 59 + char buf[1024]; 60 + return m_dll->command( NULL, cmd, buf, sizeof(buf) ); 61 + } 62 + 63 + // NT���ǂ����̃`�F�b�N�� 64 + kiPath tmpdir; 65 + static const bool isNT = 66 + (app()->osver().dwPlatformId==VER_PLATFORM_WIN32_NT); 67 + static const char* const closeShell = 68 + (isNT ? "cmd.exe /c " : "command.com /c "); 69 + 70 + // �R�}���h������쐬 71 + kiVar theCmd( m_name ); 72 + theCmd.quote(); 73 + theCmd += ' '; 74 + theCmd += cmd; 75 + 76 + if( m_type==SHLCMD ) 77 + { 78 + // �V�F���R�}���h�̏ꍇ 79 + theCmd = closeShell + theCmd; 80 + } 81 + else if( m_type==EXEUS ) 82 + { 83 + // US���[�h�̏ꍇ 84 + if( isNT ) 85 + { 86 + ::SetEnvironmentVariable( "NOAHCMD", theCmd ); 87 + theCmd = "%NOAHCMD%"; 88 + } 89 + 90 + // �ؑփo�b�`�t�@�C������ 91 + myapp().get_tempdir(tmpdir); 92 + kiPath batname(tmpdir); 93 + batname += "ncmd.bat"; 94 + kiFile bat; 95 + bat.open( batname,false ); 96 + bat.write( "@CHCP 437\r\n@", 12 ); 97 + bat.write( theCmd, theCmd.len() ); 98 + bat.write( "\r\n@CHCP 932\r\n", 13 ); 99 + 100 + theCmd = closeShell; 101 + theCmd += batname; 102 + } 103 + 104 + // �v���Z�X�J�n 105 + PROCESS_INFORMATION pi; 106 + STARTUPINFO si={sizeof(STARTUPINFO)}; 107 + si.dwFlags =STARTF_USESHOWWINDOW; 108 + si.wShowWindow=mini?SW_MINIMIZE:SW_SHOW; 109 + if( !::CreateProcess( NULL,const_cast<char*>((const char*)theCmd), 110 + NULL,NULL,FALSE,CREATE_NEW_PROCESS_GROUP|NORMAL_PRIORITY_CLASS, 111 + NULL,NULL, &si,&pi ) ) 112 + return 0xffff; 113 + 114 + // �I���ҋ@ 115 + ::CloseHandle( pi.hThread ); 116 + while( WAIT_OBJECT_0 != ::WaitForSingleObject( pi.hProcess, 500 ) ) 117 + kiWindow::msg(); 118 + int ex; 119 + ::GetExitCodeProcess( pi.hProcess, (DWORD*)&ex ); 120 + ::CloseHandle( pi.hProcess ); 121 + 122 + // ��n�� 123 + if( m_type==EXEUS ) 124 + tmpdir.remove(); 125 + return ex; 126 +} 127 + 128 +void CArcModule::ver( kiStr& str ) 129 +{ 130 + // �o�[�W�������𐮌`���ĕ\�� 131 + char *verstr="----", buf[200]; 132 + if( m_dll ) 133 + { 134 + if( WORD ver=m_dll->getVer() ) 135 + { 136 + WORD sub=m_dll->getVerSub(); 137 + ::wsprintf( verstr=buf, "%d.%02d%c", ver/100, ver%100, (sub<100)?0:sub/100+'a'-1 ); 138 + } 139 + } 140 + else if( m_type != NOTEXIST ) 141 + { 142 + // �\�Ȃ烊�\�[�X����̎擾�����݂� 143 + if( CArchiver::GetVersionInfoStr( m_name, buf, sizeof(buf) ) ) 144 + verstr = buf; 145 + else 146 + verstr = "OK!"; 147 + } 148 + 149 + char ans[300]; 150 + ::wsprintf( ans, "%-12s %s", kiPath::name(m_name), verstr ); 151 + str = ans; 152 +} 153 + 154 +bool CArcModule::lst_dll( const arcname& aname, aflArray& files, const char* wild ) 155 +{ 156 + if( !m_dll ) 157 + return false; 158 + kiPath nm(aname.basedir); nm+=aname.lname; 159 + HANDLE h = m_dll->openArc( app()->mainhwnd(), nm, M_CHECK_FILENAME_ONLY|M_ERROR_MESSAGE_OFF ); 160 + if( !h ) return false; 161 + 162 + int ct=0; 163 + files.forcelen( 1 ); 164 + if( 0==m_dll->findfirst( h, wild, &files[0].inf ) ) 165 + { 166 + do 167 + { 168 + INDIVIDUALINFO& iii = files[ct].inf; 169 + files[ct].isfile = 170 + ( *files[ct].inf.szAttribute!='d' 171 + && !kiPath::endwithyen(files[ct].inf.szFileName) 172 + && !(m_dll->getAttr( h )&FILE_ATTRIBUTE_DIRECTORY) ); 173 + files.forcelen( 1+(++ct) ); 174 + } while( 0==m_dll->findnext( h, &files[ct].inf ) ); 175 + } 176 + files.forcelen( ct ); 177 + 178 + m_dll->closeArc( h ); 179 + return true; 180 +} 181 + 182 +int CArcModule::cnt( const kiPath& aname, kiPath& dname, const char* wild ) 183 +{ 184 + int ans = aUnknown; 185 + 186 + if( m_dll ) 187 + if( HANDLE h = m_dll->openArc( app()->mainhwnd(), aname, M_CHECK_FILENAME_ONLY|M_ERROR_MESSAGE_OFF ) ) 188 + { 189 + INDIVIDUALINFO inf1st, inf; 190 + if( 0==m_dll->findfirst( h, wild, &inf1st ) ) 191 + { 192 + for( const char* y=inf1st.szFileName; *y && *y!='\\' && *y!='/'; y=kiPath::next(y) ); 193 + if( y!=inf1st.szFileName ) 194 + { 195 + if( 0!=m_dll->findnext( h, &inf ) ) 196 + ans = *y ? aSingleDir : aSingleFile; 197 + else if( *y && (y-inf1st.szFileName!=1 || inf1st.szFileName[0]!='.') ) 198 + { 199 + ans = aSingleDir; 200 + do 201 + if( !ki_memcmp( inf1st.szFileName, inf.szFileName, (y-inf1st.szFileName)+1 ) ) 202 + { 203 + ans = aUnknown; 204 + break; 205 + } 206 + while( 0==m_dll->findnext( h, &inf ) ); 207 + } 208 + if( ans==aSingleDir ) 209 + inf1st.szFileName[y-inf1st.szFileName]='\0', dname+=inf1st.szFileName; 210 + } 211 + } 212 + m_dll->closeArc( h ); 213 + } 214 + 215 + return ans; 216 +} 217 + 218 +bool CArcModule::lst_exe( const char* lstcmd, aflArray& files, 219 + const char* BL, int BSL, const char* EL, int SL, int dx ) 220 + // BeginLine, BeginSkipLine, EndLine, SkipLine, delta-x 221 +{ 222 + files.forcelen(0); 223 + 224 + // ��ƕϐ� 225 + const int BLLEN = ki_strlen(BL); 226 + const int ELLEN = ki_strlen(EL); 227 + int /*ct=0,*/ step=BSL; 228 + 229 + // EXE�ȊO�̂��̂ł̓_�� 230 + if( m_type!=EXE && m_type!=EXEUS ) 231 + return false; 232 + 233 + // �R�}���h������쐬 234 + kiVar theCmd( m_name ); 235 + theCmd.quote(); 236 + theCmd += ' '; 237 + theCmd += lstcmd; 238 + 239 + // �p�C�v�쐬�i�����Ƃ��p��ON�BDupHan����̖ʓ|���̂Łc(^^;�j 240 + HANDLE rp, wp; 241 + SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES),NULL,TRUE}; 242 + ::CreatePipe( &rp, &wp, &sa, 4096 ); 243 + 244 + // �v���Z�X�J�n 245 + PROCESS_INFORMATION pi; 246 + STARTUPINFO si = {sizeof(STARTUPINFO)}; 247 + si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES; 248 + si.wShowWindow = SW_MINIMIZE; 249 + si.hStdOutput = si.hStdError = wp; 250 + BOOL ok = 251 + ::CreateProcess( NULL,const_cast<char*>((const char*)theCmd),NULL, 252 + NULL, TRUE, CREATE_NEW_PROCESS_GROUP|NORMAL_PRIORITY_CLASS, 253 + NULL, NULL, &si,&pi ); 254 + ::CloseHandle( wp ); 255 + 256 + // ���s������p�C�v����đ��I�� 257 + if( !ok ) 258 + { 259 + ::CloseHandle( rp ); 260 + return false; 261 + } 262 + ::CloseHandle( pi.hThread ); 263 + 264 + // ��͍��etc(�o�b�t�@�̃T�C�Y�̓p�C�v�̃T�C�Y�̔{�ȏ�łȂ��Ă͂Ȃ�Ȃ�) 265 + char buf[8192], *end=buf; 266 + for( bool endpr=false; !endpr; ) 267 + { 268 + // �I���ҋ@ 269 + endpr = (WAIT_OBJECT_0==::WaitForSingleObject(pi.hProcess,500)); 270 + kiWindow::msg(); 271 + 272 + // �p�C�v����ǂ݂Ƃ� 273 + DWORD red; 274 + ::PeekNamedPipe( rp, NULL, 0, NULL, &red, NULL ); 275 + if( red==0 ) 276 + continue; 277 + ::ReadFile( rp, end, buf+sizeof(buf)-end, &red, NULL ); 278 + end += red; 279 + 280 + // �s�ɕ��� 281 + char *lss=buf; 282 + for( char *ls, *le=buf; le<end; ++le ) 283 + { 284 + // �s����T�� 285 + for( lss=ls=le; le<end; ++le ) 286 + if( *le=='\n' ) 287 + break; 288 + if( le==end ) 289 + break; 290 + 291 + // �擪�s�X�L�b�v���� 292 + if( *BL ) 293 + { 294 + if( BLLEN<=le-ls && ki_memcmp(BL,ls,BLLEN) ) 295 + BL = ""; 296 + } 297 + // �s�X�e�b�v���� 298 + else if( --step<=0 ) 299 + { 300 + step = SL; 301 + 302 + // �I�[�s���� 303 + if( ELLEN==0 ) 304 + { if( le-ls<=1 ) break; } 305 + else if( ELLEN<=le-ls && ki_memcmp(EL,ls,ELLEN) ) 306 + break; 307 + 308 + // �����X�L�b�v���� 309 + if( dx>=0 ) 310 + ls += dx; 311 + // �����u���b�N�X�L�b�v���� 312 + else 313 + { 314 + for( ;ls<le;++ls ) 315 + if( *ls!=' ' && *ls!='\t' && *ls!='\r' ) 316 + break; 317 + for( int t=dx; ++t; ) 318 + { 319 + for( ;ls<le;++ls ) 320 + if( *ls==' ' || *ls=='\t' && *ls=='\r' ) 321 + break; 322 + for( ;ls<le;++ls ) 323 + if( *ls!=' ' && *ls!='\t' && *ls!='\r' ) 324 + break; 325 + } 326 + } 327 + // �t�@�C�����R�s�[ 328 + if( ls<le ) 329 + { 330 + arcfile af; ki_memzero(&af, sizeof(af)); 331 + af.inf.dwOriginalSize = 0xffffffff; 332 +// ki_memzero( &files[ct].inf, sizeof(files[ct].inf) ); 333 +// files[ct].inf.dwOriginalSize = 0xffffffff; 334 + 335 + int i=0; 336 + bool prev_is_space=false; 337 + while( i<FNAME_MAX32 && ls<le ) 338 + { 339 + if( *ls==' ' ) 340 + { 341 + if( prev_is_space ) 342 + break; 343 + prev_is_space = true; 344 + } 345 + else if( *ls=='\t' || *ls=='\r' ) 346 + break; 347 + else 348 + prev_is_space = false; 349 + 350 + af.inf.szFileName[i++] = *ls++; 351 +// files[ct].inf.szFileName[i++] = *ls++; 352 + } 353 + if( prev_is_space ) 354 + --i; 355 + if( i ) 356 + { 357 +/* 358 + files[ct].inf.szFileName[i] = '\0'; 359 + files[ct].isfile = true; 360 + files.forcelen( 1+(++ct) ); 361 +*/ 362 + af.inf.szFileName[i] = '\0'; 363 + af.isfile = true; 364 + files.add(af); 365 + } 366 + } 367 + } 368 + } 369 + // �o�b�t�@�V�t�g 370 + if( lss != buf ) 371 + ki_memmov( buf, lss, end-lss ), end=buf+(end-lss); 372 + else if( end==buf+sizeof(buf) ) 373 + end = buf; 374 + } 375 + 376 + // ���I�� 377 + ::CloseHandle( pi.hProcess ); 378 + ::CloseHandle( rp ); 379 + return true; 380 +} 381 + 382 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 383 +// �o�[�W������\�[�X�擾 384 + 385 +bool CArchiver::GetVersionInfoStr( char* name, char* buf, size_t cbBuf ) 386 +{ 387 + static bool old = mycnf().oldver(); 388 + if( old ) 389 + return false; 390 + 391 + DWORD dummy = 0; 392 + DWORD siz = ::GetFileVersionInfoSize( name, &dummy ); 393 + if( siz == 0 ) 394 + return false; 395 + 396 + bool got = false; 397 + BYTE* vbuf = new BYTE[siz]; 398 + if( 0 != ::GetFileVersionInfo( name, 0, siz, vbuf ) ) 399 + { 400 + WORD* tr = NULL; 401 + UINT cbTr = 0; 402 + 403 + // �ŏ��Ɍ���������ƃR�[�h�y�[�W�ŏ��擾 404 + if( ::VerQueryValue( vbuf, 405 + "\\VarFileInfo\\Translation", (void**)&tr, &cbTr ) 406 + && cbTr >= 4 ) 407 + { 408 + char blockname[500]=""; 409 + ::wsprintf( blockname, 410 + "\\StringFileInfo\\%04x%04x\\ProductVersion", 411 + tr[0], tr[1] ); 412 + 413 + char* inf = NULL; 414 + UINT cbInf = 0; 415 + if( ::VerQueryValue( vbuf, blockname, (void**)&inf, &cbInf ) 416 + && cbInf < cbBuf-1 ) 417 + { 418 + for( char* v=buf; *inf && cbInf; ++inf,--cbInf ) 419 + if( *inf != ' ' ) 420 + *v++ = (*inf==',' ? '.' : *inf); 421 + *v = '\0'; 422 + got = true; 423 + } 424 + } 425 + else 426 + { 427 + void* fi = NULL; 428 + UINT cbFi = 0; 429 + VS_FIXEDFILEINFO vffi; 430 + if( ::VerQueryValue( vbuf, "\\", &fi, &cbFi ) 431 + && sizeof(vffi)<=cbFi ) 432 + { 433 + ki_memcpy( &vffi, fi, sizeof(vffi) ); 434 + if( vffi.dwFileVersionLS >= 0x10000 ) 435 + ::wsprintf( buf, "%d.%d.%d", vffi.dwFileVersionMS>>16, 436 + vffi.dwFileVersionMS&0xffff, vffi.dwFileVersionLS>>16 ); 437 + else 438 + ::wsprintf( buf, "%d.%d", vffi.dwFileVersionMS>>16, 439 + vffi.dwFileVersionMS&0xffff ); 440 + got = true; 441 + } 442 + } 443 + } 444 + 445 + delete [] vbuf; 446 + return got; 447 +}
Added Archiver.h version [6f288846948232f7]
1 +// Archiver.h 2 +//-- CArchiver -- common interface in 'Noah' for arhiving routine -- 3 + 4 +#ifndef AFX_ARCHIVER_H__359A2ED3_2F97_480E_BC94_24834EBA6498__INCLUDED_ 5 +#define AFX_ARCHIVER_H__359A2ED3_2F97_480E_BC94_24834EBA6498__INCLUDED_ 6 + 7 +enum { 8 + aCheck = 1, aMelt = 2, aList = 4, aMeltEach = 8, aCompress = 16, aArchive = 32, aSfx = 64, 9 +}; 10 +enum { 11 + aUnknown=0, aSingleFile, aSingleDir, aMulti 12 +}; 13 + 14 +struct arcname { 15 + arcname( const kiPath& b,const char *s,const char *l ) 16 + : basedir(b),sname(s),lname(l) {} 17 + const kiPath& basedir; 18 + const char* lname; 19 + const char* sname; 20 +}; 21 + 22 +struct arcfile { 23 + INDIVIDUALINFO inf; 24 + union { 25 + bool selected; 26 + bool isfile; 27 + }; 28 +}; 29 + 30 +#define aflArray kiArray<arcfile> 31 +#define wfdArray kiArray<WIN32_FIND_DATA> 32 + 33 +class CArchiver 34 +{ 35 +public: //--< attribute >-- 36 + 37 + int ability(); 38 + int cancompressby( const char* ext, const char* mhd, bool sfx ); 39 + 40 + const char* mlt_ext(); 41 + const kiStr& cmp_ext(); 42 + const StrArray& cmp_mhd_list(); 43 + const int cmp_mhd_default(); 44 + bool ver( kiStr& str ); 45 + static bool GetVersionInfoStr( char* name, char* buf, size_t cbBuf ); 46 + 47 +public: //--< action >-- 48 + 49 + bool check( const kiPath& aname ); 50 + int contents( const kiPath& aname, kiPath& dname ); 51 + int melt( const arcname& aname, const kiPath& ddir, const aflArray* files=NULL ); 52 + bool list( const arcname& aname, aflArray& files ); 53 + int compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ); 54 + kiStr arctype_name(const char* an) const { return v_name(an); } 55 + 56 +protected: //--< for child >-- 57 + 58 + CArchiver( const char* mext ); 59 + void set_cmp_ext( const char* ext ); 60 + void add_cmp_mhd( const char* mhd, bool def=false ); 61 + 62 + virtual int v_load(){return 0;} 63 + virtual bool v_ver( kiStr& str ){return false;} 64 + virtual bool v_check( const kiPath& aname ){return false;} 65 + virtual int v_contents( const kiPath& aname, kiPath& dname ){return aUnknown;} 66 + virtual int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ){return false;} 67 + virtual bool v_list( const arcname& aname, aflArray& files ){return false;} 68 + virtual int v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ){return false;} 69 + virtual kiStr v_name(const char*) const { return ""; } 70 + 71 +private: //--< private >-- 72 + 73 + friend class CNoahArchiverManager; 74 + bool extCheck( const char* ext ); 75 + kiStr m_MyExtList, m_MyCmpExt; 76 + StrArray m_Mhd; 77 + int m_MhdDef,m_Able; 78 + bool not_loaded; 79 + 80 +public: //--< dummy >-- 81 + 82 + virtual ~CArchiver(){} 83 +}; 84 + 85 +inline int CArchiver::ability() 86 +{ 87 + if( not_loaded ) 88 + m_Able=v_load(), not_loaded=false; 89 + return m_Able; 90 +} 91 + 92 +inline int CArchiver::cancompressby( const char* ext, const char* mhd, bool sfx ) 93 +{ 94 + if( not_loaded ) 95 + m_Able=v_load(), not_loaded=false; 96 + if( (sfx && !(m_Able&aSfx)) || !(m_Able&aCompress) || !m_MyCmpExt.isSame(ext) ) 97 + return -1; // no 98 + for( unsigned int i=0; i!=m_Mhd.len(); i++ ) 99 + if( m_Mhd[i] == mhd ) 100 + return (int)i; 101 + return -2; // only - 'type name' matched 102 +} 103 + 104 +inline bool CArchiver::check( const kiPath& aname ) 105 +{ 106 + if( not_loaded ) 107 + m_Able=v_load(), not_loaded=false; 108 + return (m_Able&aCheck)?v_check(aname):false; 109 +} 110 + 111 +inline int CArchiver::contents( const kiPath& aname, kiPath& dname ) 112 +{ 113 + if( not_loaded ) 114 + m_Able=v_load(), not_loaded=false; 115 + return (m_Able&aList)?v_contents(aname,dname):false; 116 +} 117 + 118 +inline int CArchiver::melt( const arcname& aname, const kiPath& ddir, const aflArray* files ) 119 +{ 120 + if( not_loaded ) 121 + m_Able=v_load(), not_loaded=false; 122 + return (m_Able&aMelt)?v_melt(aname,ddir,files):0xffff; 123 +} 124 + 125 +inline bool CArchiver::list( const arcname& aname, aflArray& files ) 126 +{ 127 + if( not_loaded ) 128 + m_Able=v_load(), not_loaded=false; 129 + return (m_Able&aList)?v_list(aname,files):false; 130 +} 131 + 132 +inline int CArchiver::compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ) 133 +{ 134 + if( not_loaded ) 135 + m_Able=v_load(), not_loaded=false; 136 + return (m_Able&aCompress)?v_compress(base,files,ddir,method,sfx):0xffff; 137 +} 138 + 139 +inline bool CArchiver::ver( kiStr& str ) 140 +{ 141 + if( not_loaded ) 142 + m_Able=v_load(), not_loaded=false; 143 + return v_ver(str); 144 +} 145 + 146 +inline const char* CArchiver::mlt_ext() 147 +{ 148 + return m_MyExtList; 149 +} 150 + 151 +inline const kiStr& CArchiver::cmp_ext() 152 +{ 153 + if( not_loaded ) 154 + m_Able=v_load(), not_loaded=false; 155 + return m_MyCmpExt; 156 +} 157 + 158 +inline const StrArray& CArchiver::cmp_mhd_list() 159 +{ 160 + if( not_loaded ) 161 + m_Able=v_load(), not_loaded=false; 162 + return m_Mhd; 163 +} 164 + 165 +inline const int CArchiver::cmp_mhd_default() 166 +{ 167 + if( not_loaded ) 168 + m_Able=v_load(), not_loaded=false; 169 + return m_MhdDef; 170 +} 171 + 172 +inline CArchiver::CArchiver( const char* extlist ) 173 + : m_MyExtList( extlist ), m_Mhd(3), m_MhdDef(0), not_loaded(true) 174 +{ 175 + m_MyExtList.lower(); 176 +} 177 + 178 +inline void CArchiver::set_cmp_ext( const char* ext ) 179 +{ 180 + m_MyCmpExt = ext; 181 +} 182 + 183 +inline void CArchiver::add_cmp_mhd( const char* method, bool Default ) 184 +{ 185 + m_Mhd.add(method); 186 + if( Default ) 187 + m_MhdDef = m_Mhd.len() - 1; 188 +} 189 + 190 +inline bool CArchiver::extCheck( const char* ext ) 191 +{ 192 + const char *x=m_MyExtList,*y; 193 + int ln = ki_strlen(ext); 194 + while( *x ) 195 + { 196 + for( y=x+1; *y && *y!='.'; y++ ); 197 + if( *y=='\0' ) break; 198 + 199 + if( y-x == ln ) 200 + { 201 + while( x!=y ) 202 + { 203 + if( *x!=ext[ln+(x-y)] ) 204 + break; 205 + x++; 206 + } 207 + if( x==y ) 208 + return true; 209 + } 210 + x=y+1; 211 + } 212 + return false; 213 +} 214 + 215 +// �n���ꂽ�p�X�����A��p�X��".."���܂�ł����true 216 +static bool containsDangerPath( const char* path ) 217 +{ 218 + // ��p�X 219 + if( path[0]=='\\' || path[0]=='/' || path[0]!='\0' && path[1]==':' ) 220 + return true; 221 + 222 + // ".." 223 + for( const char* p=path; *p; ) 224 + { 225 + const char* q = p; 226 + while( *q!='\0' && *q!='\\' && *q!='/' ) 227 + q = ::CharNext(q); 228 + 229 + if( p+2 <= q ) 230 + { 231 + const char* r; 232 + for( r=p; r!=q; ++r ) 233 + if( *r != '.' ) 234 + break; 235 + if( r == q ) // all dot 236 + return true; 237 + } 238 + p = (*q ? ::CharNext(q) : q); 239 + } 240 + return false; 241 +} 242 + 243 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 244 +// �����A�[�J�C�oDLL���C�����w ver2�B���ł�exe���K���ɓ��� 245 + 246 +class CArcModule 247 +{ 248 +public: 249 + 250 + // ���s�R�}���h�����w�肵�č쐬 251 + // �E�t�@�C�����Ƃ��ĒT���Č�����Ȃ������ꍇ 252 + // �V�F���̓����R�}���h�Ɖ��肵�Ĉꉞ�ێ����Ă��� 253 + // �E�g���q�� exe �� com �Ȃ���s�t�@�C���Ƃ��Ĉ����B 254 + // �E����ȊO�Ȃ�A�[�J�C�oDLL�Ƃ��Ĉ����B 255 + CArcModule( const char* name, bool us=false ); 256 + virtual ~CArcModule(); 257 + bool exist(); 258 + bool isdll(); 259 + 260 + kiStr name() const { return kiPath::name(m_name); } 261 + 262 + // ���s 263 + int cmd( const char* cmd, bool mini=false ); 264 + 265 + // ���Ƀ`�F�b�N 266 + bool chk( const char* aname ); 267 + int arctype( const char* aname ) const; 268 + 269 + // �o�[�W����������Ԃ� 270 + void ver( kiStr& str ); 271 + 272 + // ���ɂ̒��g�����X�g�A�b�v 273 + bool lst_dll( const arcname& aname, aflArray& files, const char* wild="*" ); 274 + int cnt( const kiPath& aname, kiPath& dname, const char* wild="*" ); 275 + bool lst_exe( const char* lstcmd, aflArray& files, 276 + const char* BL, int BSL, const char* EL, int SL, int dx ); 277 + 278 + // DLL�����A�����[�h( BugTrap for UnZip32.dll ) 279 + void unload() { m_dll->unload(); } 280 + // DLL�I�[�i�[���ݒ�( BugTrap for Unrar.dll ) 281 + void own( HWND wnd ) { m_dll->setOwner( wnd ); } 282 + void fre() { m_dll->clearOwner(); } 283 + 284 +private: 285 + enum { NOTEXIST, DLL, DLLGCA, DLLBGA, EXE, EXEUS, SHLCMD=0 } m_type; 286 + kiArcDLLRaw* m_dll; 287 + char m_name[MAX_PATH]; 288 + const char* m_wild; 289 +}; 290 + 291 +inline bool CArcModule::chk( const char* aname ) 292 + { return m_dll ? FALSE!=m_dll->check( aname, m_type==DLLGCA?24:0 ) : false; } 293 + 294 +inline int CArcModule::arctype( const char* aname ) const 295 + { return m_dll ? 296 + m_type==DLLBGA ? m_dll->check(aname,0) : m_dll->getArcType(aname) 297 + : 0; } 298 + 299 +inline bool CArcModule::exist() 300 + { return m_type!=NOTEXIST; } 301 + 302 +inline bool CArcModule::isdll() 303 + { return m_type==DLL || m_type==DLLGCA; } 304 + 305 + 306 + 307 +#endif
Added Noah.cpp version [a3b52f0446b0f2d0]
1 +// Noah.cpp 2 +// -- entrypoint etc for 'Noah' 3 + 4 +#include "stdafx.h" 5 +#include "NoahApp.h" 6 +#include "resource.h" 7 + 8 +#if _MSC_VER >= 1300 9 +extern "C" { int _afxForceEXCLUDE; } 10 +extern "C" BOOL WINAPI _imp__IsDebuggerPresent() { return FALSE; } 11 +#endif 12 + 13 +// �v���Z�X�������]�[�� 14 +class ProcessNumLimitZone 15 +{ 16 + HANDLE m_han; 17 +public: 18 + ProcessNumLimitZone(int Max, const char* name) 19 + : m_han( ::CreateSemaphore( NULL, Max, Max, name ) ) 20 + { 21 + if( m_han ) 22 + ::WaitForSingleObject( m_han, INFINITE ); 23 + else 24 + kiSUtil::msgLastError("CreateSemaphore Failed"); 25 + } 26 + ~ProcessNumLimitZone() 27 + { 28 + if( m_han ) 29 + { 30 + ::ReleaseSemaphore( m_han, 1, NULL ); 31 + ::CloseHandle( m_han ); 32 + } 33 + } 34 +}; 35 + 36 +//----------------------------------------------// 37 +//--------- Noah �̃G���g���|�C���g ------------// 38 +//----------------------------------------------// 39 + 40 +void kilib_create_new_app() 41 +{ 42 + //-- kilib �ɃA�v���P�[�V������ݒ� 43 + new CNoahApp; 44 +} 45 + 46 +void CNoahApp::run( kiCmdParser& cmd ) 47 +{ 48 + //-- ������ 49 + m_cnfMan.init(); 50 + m_arcMan.init(); 51 + 52 + //-- �R�}���h���C���p�����[�^�ێ� 53 + m_pCmd = &cmd; 54 + 55 + //-- �u�t�@�C�������n����ĂȂ� or Shift�����N���v�Ȃ�ݒ��ʕ\�� 56 + if( cmd.param().len()==0 || keyPushed(VK_SHIFT) ) 57 + { 58 + //-- Load-INI ( �S�� ) 59 + m_cnfMan.load( All ); 60 + //-- �ݒ��ʕ\�� 61 + m_cnfMan.dialog(); 62 + } 63 + else 64 + { 65 + //-- ���k�𓀂Ȃǂ̍�� 66 + do_cmdline( true ); 67 + } 68 + 69 + //-- �I������ 70 + m_tmpDir.remove(); 71 +} 72 + 73 +//----------------------------------------------// 74 +//------------- ���k/�� �� ��� --------------// 75 +//----------------------------------------------// 76 + 77 +bool CNoahApp::is_writable_dir( const kiPath& path ) 78 +{ 79 + // �v����ɁACDROM/DVDROM ��肽���B 80 + // FDD, PacketWrite��Disk ���̂͂�����߂�B 81 + 82 + // RAMDISK, REMOTE, FIXED, UNKNOWN �ȃf�B�X�N�͏������݉\�ƌ��Ȃ� 83 + UINT drv = path.getDriveType(); 84 + if( drv==DRIVE_REMOVABLE || drv==DRIVE_CDROM ) 85 + { 86 + // �fWin95�ł͎g���Ȃ����Ȃ̂�DynamicLoad 87 + typedef BOOL (WINAPI*pGDFSE)( LPCTSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER ); 88 + pGDFSE pGetDiskFreeSpaceEx 89 + = (pGDFSE) ::GetProcAddress( ::GetModuleHandle("kernel32.dll"), "GetDiskFreeSpaceExA" ); 90 + if( pGetDiskFreeSpaceEx ) 91 + { 92 + // �e�ʂ�0�Ȃ�A�������ݕs�Ƃ݂Ȃ� 93 + ULARGE_INTEGER fs, dummy; 94 + pGetDiskFreeSpaceEx( path, &dummy, &dummy, &fs ); 95 + if( fs.QuadPart == 0 ) 96 + return false; 97 + } 98 + } 99 + return true; 100 +} 101 + 102 +void CNoahApp::do_cmdline( bool directcall ) 103 +{ 104 + do_files( m_pCmd->param(), &m_pCmd->option(), !directcall ); 105 +} 106 + 107 +void CNoahApp::do_files( const cCharArray& files, 108 + const cCharArray* opts, 109 + bool basicaly_ignore ) 110 +{ 111 + struct local { 112 + ~local() {kiSUtil::switchCurDirToExeDir(); } // �f�B���N�g�����b�N���Ȃ��悤�� 113 + } _; 114 + 115 + //-- Archiver Manager �Ƀt�@�C�������X�g���L������ 116 + if( 0 == m_arcMan.set_files( files ) ) 117 + return; 118 + 119 + //-- ��Ɨp�ϐ� 120 + enum { unknown, melt, compress } 121 + whattodo = unknown; 122 + bool ctrl_mlt = keyPushed( VK_CONTROL ); 123 + bool ctrl_cmp = ctrl_mlt; 124 + bool alt = keyPushed( VK_MENU ) || keyPushed( VK_RWIN ) || keyPushed( VK_LWIN ); 125 + const char *cmptype=NULL, *method=NULL; 126 + kiPath destdir; 127 + kiStr tmp(300); 128 + 129 + //-- ( ��������� )�R�}���h���C���I�v�V���������� 130 + if( opts ) 131 + for( unsigned int i=0; i!=opts->len(); i++ ) 132 + switch( (*opts)[i][1] ) 133 + { 134 + case 'a': if( !basicaly_ignore ) 135 + case 'A': whattodo = compress; break; 136 + 137 + case 'x': if( !basicaly_ignore ) 138 + case 'X': whattodo = melt; break; 139 + 140 + case 'd': if( !basicaly_ignore ) 141 + case 'D': destdir = (*opts)[i]+2; break; 142 + 143 + case 'w': if( !basicaly_ignore ) 144 + case 'W': alt = true; break; 145 + 146 + case 't': if( !basicaly_ignore ) 147 + case 'T': cmptype = (*opts)[i]+2; break; 148 + 149 + case 'm': if( !basicaly_ignore ) 150 + case 'M': method = (*opts)[i]+2; break; 151 + 152 + case 'c': if( !basicaly_ignore ) { 153 + case 'C': if((*opts)[i][2]!='x') ctrl_cmp = true; 154 + if((*opts)[i][2]!='a') ctrl_mlt = true; 155 + break;} 156 + } 157 + 158 + //-- Load-INI ( ���샂�[�h�ݒ� ) 159 + m_cnfMan.load( Mode ); 160 + 161 + //-- ���k�𓀂̂ǂ�����s�������肷��B����͈ȉ��̒ʂ�B 162 + // 163 + // �E�R�}���h���C���ŁA���k�Ǝw�肳��Ă�Ζ������ň��k�� 164 + // 165 + // �E�����łȂ���A�܂�Noah�̓��샂�[�h�擾 166 + // �@m0:���k��p m1:���k�D�� m2:�𓀗D�� m3:�𓀐�p 167 + // �@�@�R�}���h���C���ʼn𓀂Ǝw�肳��Ă���� m3�B 168 + // �@�@�w�肪������Am_cnfMan ����ǂݍ��݁B 169 + // 170 + // �Em0 ���A'm1�ł������t�@�C��������' �̎��͖������ň��k�� 171 + // 172 + // �E�����łȂ���A�𓀃��[�`�������蓖�ĂĂ݂�B 173 + // �@���̍ہAm3 �ȊO�̂Ƃ��͈�ł����蓖�Ď��s������G���[�����k�� 174 + // �@m3 �ł��A������蓖�Ă��Ȃ���G���[�B�������I�� 175 + 176 + if( whattodo != compress ) 177 + { 178 + int mode = 3; 179 + if( whattodo != melt ) 180 + mode = m_cnfMan.mode(); 181 + 182 + if( mode==0 || ( mode==1 && m_arcMan.file_num()>=2 ) ) 183 + whattodo = compress; 184 + else 185 + { 186 + //-- �𓀃��[�`�����蓖�ĂĂ݂� 187 + bool suc = m_arcMan.map_melters( mode ); 188 + if( suc ) 189 + whattodo = melt; 190 + else 191 + { 192 + if( mode != 3 ) 193 + whattodo = compress; 194 + else 195 + { 196 + //-- �𓀐�p���[�h�����lj𓀕s�I�I 197 + msgBox( tmp.loadRsrc(IDS_M_ERROR) ); 198 + return; 199 + } 200 + } 201 + } 202 + } 203 + 204 + if( whattodo == melt ) 205 + { 206 + //-- �𓀐ݒ�͊���m_cnfMan.init()�Ń��[�h����Ă���c 207 + 208 + if( destdir.len()==0 ) 209 + { 210 + //-- �𓀐�f�B���N�g���擾 211 + if( m_cnfMan.mdirsm() ) 212 + if( is_writable_dir(m_arcMan.get_basepath()) ) 213 + destdir = m_arcMan.get_basepath(); 214 + if( destdir.len()==0 ) 215 + destdir = m_cnfMan.mdir(); 216 + } 217 + 218 + //-- �� 219 + if( ctrl_mlt ) m_arcMan.do_listing( destdir ); 220 + else { 221 + ProcessNumLimitZone zone( mycnf().multiboot_limit(), "LimitterForNoahAtKmonosNet" ); 222 + m_arcMan.do_melting( destdir ); 223 + } 224 + } 225 + else 226 + { 227 + //-- Load-INI( ���k�ݒ� ) 228 + m_cnfMan.load( Compress ); 229 + 230 + if( destdir.len()==0 ) 231 + { 232 + //-- ���k��f�B���N�g���擾 233 + if( m_cnfMan.cdirsm() ) 234 + if( is_writable_dir(m_arcMan.get_basepath()) ) 235 + destdir = m_arcMan.get_basepath(); 236 + if( destdir.len()==0 ) 237 + destdir = m_cnfMan.cdir(); 238 + } 239 + if( !cmptype ) cmptype = m_cnfMan.cext(); 240 + else if( !method ) method = ""; 241 + if( !method ) method = m_cnfMan.cmhd(); 242 + 243 + //-- ���k�p���[�`�������蓖�� 244 + if( !m_arcMan.map_compressor( cmptype, method, ctrl_cmp ) ) 245 + { 246 + //-- ���k�s�\�Ȍ`���I�I 247 + msgBox( tmp.loadRsrc(IDS_C_ERROR) ); 248 + return; 249 + } 250 + 251 + //-- ���k 252 + ProcessNumLimitZone zone( mycnf().multiboot_limit(), "LimitterForNoahAtKmonosNet" ); 253 + m_arcMan.do_compressing( destdir, alt ); 254 + } 255 +} 256 + 257 +//----------------------------------------------// 258 +//----------------- ���̑��G�p -----------------// 259 +//----------------------------------------------// 260 + 261 +// from= 0:normal 1:melt 2:compress 262 +void CNoahApp::open_folder( const kiPath& path, int from ) 263 +{ 264 + if( from==1 || from==2 ) //-- Shell�ɍX�V�ʒm 265 + ::SHChangeNotify( SHCNE_UPDATEDIR, SHCNF_PATH, (const void*)(const char*)path, NULL ); 266 + 267 + //-- �f�X�N�g�b�v��������J���Ȃ� 268 + kiPath dir(path), tmp(kiPath::Dsk,false); 269 + dir.beBackSlash(false), dir.beShortPath(), tmp.beShortPath(); 270 + 271 + if( !tmp.isSame( dir ) ) 272 + { 273 + //-- Load-INI( �t�H���_�J���ݒ� ) 274 + m_cnfMan.load( OpenDir ); 275 + if( (from==1 && !m_cnfMan.modir()) 276 + || (from==2 && !m_cnfMan.codir()) ) 277 + return; 278 + 279 + char cmdline[1000]; 280 + wsprintf( cmdline, m_cnfMan.openby(), (const char*)dir ); 281 + ::WinExec( cmdline, SW_SHOWDEFAULT ); 282 + } 283 +} 284 + 285 +// �S�V�X�e�����ň�ӂȃe���|�����t�H���_������ĕԂ� 286 +void CNoahApp::get_tempdir( kiPath& tmp ) 287 +{ 288 + char buf[MAX_PATH]; 289 + 290 + if( m_tmpDir.len()==0 ) 291 + { 292 + ::GetTempFileName( kiPath( kiPath::Tmp ), "noa", 0, buf ); 293 + ::DeleteFile( buf ); 294 + m_tmpDir = buf; 295 + m_tmpDir.beBackSlash( true ); 296 + m_tmpDir.mkdir(); 297 + m_tmpID = ::GetCurrentProcessId(); 298 + } 299 + 300 + ::GetTempFileName( m_tmpDir, "noa", m_tmpID++, buf ); 301 + ::DeleteFile( buf ); 302 + tmp = buf; 303 + tmp.beBackSlash( true ); 304 + tmp.mkdir(); 305 +}
Added Noah.dsp version [f3b4df134224f728]
1 +# Microsoft Developer Studio Project File - Name="Noah" - Package Owner=<4> 2 +# Microsoft Developer Studio Generated Build File, Format Version 6.00 3 +# ** �ҏW���Ȃ��ł������� ** 4 + 5 +# TARGTYPE "Win32 (x86) Application" 0x0101 6 + 7 +CFG=Noah - Win32 Debug 8 +!MESSAGE ����͗L����Ҳ�̧�قł͂���܂���B ������ۼު�Ă�����ނ��邽�߂ɂ� NMAKE ���g�p���Ă��������B 9 +!MESSAGE [Ҳ�̧�ق̴���߰�] ����ނ��g�p���Ď��s���Ă������� 10 +!MESSAGE 11 +!MESSAGE NMAKE /f "Noah.mak". 12 +!MESSAGE 13 +!MESSAGE NMAKE �̎��s���ɍ\�����w��ł��܂� 14 +!MESSAGE ����� ײݏ��ϸۂ̐ݒ���`���܂��B��: 15 +!MESSAGE 16 +!MESSAGE NMAKE /f "Noah.mak" CFG="Noah - Win32 Debug" 17 +!MESSAGE 18 +!MESSAGE �I���\������� Ӱ��: 19 +!MESSAGE 20 +!MESSAGE "Noah - Win32 Release" ("Win32 (x86) Application" �p) 21 +!MESSAGE "Noah - Win32 Debug" ("Win32 (x86) Application" �p) 22 +!MESSAGE 23 + 24 +# Begin Project 25 +# PROP AllowPerConfigDependencies 0 26 +# PROP Scc_ProjName "Noah" 27 +# PROP Scc_LocalPath "." 28 +CPP=cl.exe 29 +MTL=midl.exe 30 +RSC=rc.exe 31 + 32 +!IF "$(CFG)" == "Noah - Win32 Release" 33 + 34 +# PROP BASE Use_MFC 0 35 +# PROP BASE Use_Debug_Libraries 0 36 +# PROP BASE Output_Dir "Release" 37 +# PROP BASE Intermediate_Dir "Release" 38 +# PROP BASE Target_Dir "" 39 +# PROP Use_MFC 0 40 +# PROP Use_Debug_Libraries 0 41 +# PROP Output_Dir "tmp/rel" 42 +# PROP Intermediate_Dir "tmp/rel" 43 +# PROP Ignore_Export_Lib 0 44 +# PROP Target_Dir "" 45 +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c 46 +# ADD CPP /nologo /W3 /O1 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_VISUALC" /Yu"stdafx.h" /FD /c 47 +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 48 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 49 +# ADD BASE RSC /l 0x411 /d "NDEBUG" 50 +# ADD RSC /l 0x411 /d "NDEBUG" 51 +BSC32=bscmake.exe 52 +# ADD BASE BSC32 /nologo 53 +# ADD BSC32 /nologo 54 +LINK32=link.exe 55 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 56 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib lz32.lib version.lib /nologo /entry:"kilib_startUp" /subsystem:windows /pdb:none /machine:I386 /out:"Release/Noah.exe" /opt:"nowin98" 57 +# SUBTRACT LINK32 /nodefaultlib 58 + 59 +!ELSEIF "$(CFG)" == "Noah - Win32 Debug" 60 + 61 +# PROP BASE Use_MFC 0 62 +# PROP BASE Use_Debug_Libraries 1 63 +# PROP BASE Output_Dir "Debug" 64 +# PROP BASE Intermediate_Dir "Debug" 65 +# PROP BASE Target_Dir "" 66 +# PROP Use_MFC 0 67 +# PROP Use_Debug_Libraries 1 68 +# PROP Output_Dir "tmp/dbg" 69 +# PROP Intermediate_Dir "tmp/dbg" 70 +# PROP Ignore_Export_Lib 0 71 +# PROP Target_Dir "" 72 +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c 73 +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_VISUALC" /D "KILIB_LOG" /Yu"stdafx.h" /FD /GZ /c 74 +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 75 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 76 +# ADD BASE RSC /l 0x411 /d "_DEBUG" 77 +# ADD RSC /l 0x411 /d "_DEBUG" 78 +BSC32=bscmake.exe 79 +# ADD BASE BSC32 /nologo 80 +# ADD BSC32 /nologo 81 +LINK32=link.exe 82 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept 83 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib lz32.lib version.lib /nologo /entry:"kilib_startUp" /subsystem:windows /debug /machine:I386 /out:"Debug/Noah.exe" /pdbtype:sept 84 +# SUBTRACT LINK32 /profile /pdb:none /incremental:no 85 + 86 +!ENDIF 87 + 88 +# Begin Target 89 + 90 +# Name "Noah - Win32 Release" 91 +# Name "Noah - Win32 Debug" 92 +# Begin Group "Source Files" 93 + 94 +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 95 +# Begin Source File 96 + 97 +SOURCE=.\ArcACE.cpp 98 +# End Source File 99 +# Begin Source File 100 + 101 +SOURCE=.\ArcB2e.cpp 102 +# End Source File 103 +# Begin Source File 104 + 105 +SOURCE=.\ArcCpt.cpp 106 +# End Source File 107 +# Begin Source File 108 + 109 +SOURCE=.\ArcDLL.cpp 110 +# End Source File 111 +# Begin Source File 112 + 113 +SOURCE=.\Archiver.cpp 114 +# End Source File 115 +# Begin Source File 116 + 117 +SOURCE=.\ArcMsc.cpp 118 +# End Source File 119 +# Begin Source File 120 + 121 +SOURCE=.\Noah.cpp 122 +# End Source File 123 +# Begin Source File 124 + 125 +SOURCE=.\NoahAM.cpp 126 +# End Source File 127 +# Begin Source File 128 + 129 +SOURCE=.\NoahCM.cpp 130 +# End Source File 131 +# Begin Source File 132 + 133 +SOURCE=.\StdAfx.cpp 134 +# ADD CPP /Yc"stdafx.h" 135 +# End Source File 136 +# Begin Source File 137 + 138 +SOURCE=.\SubDlg.cpp 139 +# End Source File 140 +# End Group 141 +# Begin Group "Header Files" 142 + 143 +# PROP Default_Filter "h;hpp;hxx;hm;inl" 144 +# Begin Source File 145 + 146 +SOURCE=.\ArcACE.h 147 +# End Source File 148 +# Begin Source File 149 + 150 +SOURCE=.\ArcB2e.h 151 +# End Source File 152 +# Begin Source File 153 + 154 +SOURCE=.\ArcCpt.h 155 +# End Source File 156 +# Begin Source File 157 + 158 +SOURCE=.\ArcDLL.h 159 +# End Source File 160 +# Begin Source File 161 + 162 +SOURCE=.\Archiver.h 163 +# End Source File 164 +# Begin Source File 165 + 166 +SOURCE=.\ArcMsc.h 167 +# End Source File 168 +# Begin Source File 169 + 170 +SOURCE=.\NoahAM.h 171 +# End Source File 172 +# Begin Source File 173 + 174 +SOURCE=.\NoahApp.h 175 +# End Source File 176 +# Begin Source File 177 + 178 +SOURCE=.\NoahCM.h 179 +# End Source File 180 +# Begin Source File 181 + 182 +SOURCE=.\StdAfx.h 183 +# End Source File 184 +# Begin Source File 185 + 186 +SOURCE=.\SubDlg.h 187 +# End Source File 188 +# Begin Source File 189 + 190 +SOURCE=.\unacedef.h 191 +# End Source File 192 +# End Group 193 +# Begin Group "Resource Files" 194 + 195 +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 196 +# Begin Source File 197 + 198 +SOURCE=.\icons\arc_b2e.ico 199 +# End Source File 200 +# Begin Source File 201 + 202 +SOURCE=.\b2e.ico 203 +# End Source File 204 +# Begin Source File 205 + 206 +SOURCE=.\default1.bin 207 +# End Source File 208 +# Begin Source File 209 + 210 +SOURCE=.\noah.ico 211 +# End Source File 212 +# Begin Source File 213 + 214 +SOURCE=.\Noah.rc 215 +# End Source File 216 +# Begin Source File 217 + 218 +SOURCE=.\resource.h 219 +# End Source File 220 +# End Group 221 +# Begin Group "K.I.LIB" 222 + 223 +# PROP Default_Filter "" 224 +# Begin Group "Source" 225 + 226 +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 227 +# Begin Source File 228 + 229 +SOURCE=.\kilib\kl_app.cpp 230 +# End Source File 231 +# Begin Source File 232 + 233 +SOURCE=.\kilib\kl_carc.cpp 234 +# End Source File 235 +# Begin Source File 236 + 237 +SOURCE=.\kilib\kl_cmd.cpp 238 +# End Source File 239 +# Begin Source File 240 + 241 +SOURCE=.\kilib\kl_dnd.cpp 242 +# End Source File 243 +# Begin Source File 244 + 245 +SOURCE=.\kilib\kl_file.cpp 246 +# End Source File 247 +# Begin Source File 248 + 249 +SOURCE=.\kilib\kl_find.cpp 250 +# End Source File 251 +# Begin Source File 252 + 253 +SOURCE=.\kilib\kl_reg.cpp 254 +# End Source File 255 +# Begin Source File 256 + 257 +SOURCE=.\kilib\kl_rythp.cpp 258 +# End Source File 259 +# Begin Source File 260 + 261 +SOURCE=.\kilib\kl_str.cpp 262 +# End Source File 263 +# Begin Source File 264 + 265 +SOURCE=.\kilib\kl_wcmn.cpp 266 +# End Source File 267 +# Begin Source File 268 + 269 +SOURCE=.\kilib\kl_wnd.cpp 270 +# End Source File 271 +# End Group 272 +# Begin Group "Header" 273 + 274 +# PROP Default_Filter "h;hpp;hxx;hm;inl" 275 +# Begin Source File 276 + 277 +SOURCE=.\kilib\kl_app.h 278 +# End Source File 279 +# Begin Source File 280 + 281 +SOURCE=.\kilib\kl_carc.h 282 +# End Source File 283 +# Begin Source File 284 + 285 +SOURCE=.\kilib\kl_cmd.h 286 +# End Source File 287 +# Begin Source File 288 + 289 +SOURCE=.\kilib\kl_dnd.h 290 +# End Source File 291 +# Begin Source File 292 + 293 +SOURCE=.\kilib\kl_file.h 294 +# End Source File 295 +# Begin Source File 296 + 297 +SOURCE=.\kilib\kl_find.h 298 +# End Source File 299 +# Begin Source File 300 + 301 +SOURCE=.\kilib\kl_misc.h 302 +# End Source File 303 +# Begin Source File 304 + 305 +SOURCE=.\kilib\kl_reg.h 306 +# End Source File 307 +# Begin Source File 308 + 309 +SOURCE=.\kilib\kl_rythp.h 310 +# End Source File 311 +# Begin Source File 312 + 313 +SOURCE=.\kilib\kl_str.h 314 +# End Source File 315 +# Begin Source File 316 + 317 +SOURCE=.\kilib\kl_wcmn.h 318 +# End Source File 319 +# Begin Source File 320 + 321 +SOURCE=.\kilib\kl_wnd.h 322 +# End Source File 323 +# End Group 324 +# Begin Source File 325 + 326 +SOURCE=.\kilib\kilib.h 327 +# End Source File 328 +# Begin Source File 329 + 330 +SOURCE=.\kilib\kilibext.h 331 +# End Source File 332 +# End Group 333 +# Begin Source File 334 + 335 +SOURCE=.\manifest.xml 336 +# End Source File 337 +# Begin Source File 338 + 339 +SOURCE=.\readme.txt 340 +# End Source File 341 +# Begin Source File 342 + 343 +SOURCE=.\Release\todo.txt 344 +# End Source File 345 +# End Target 346 +# End Project
Added Noah.dsw version [e80087f7460120bd]
1 +Microsoft Developer Studio Workspace File, Format Version 6.00 2 +# �x��: ����ܰ���߰� ̧�� ��ҏW�܂��͍폜���Ȃ��ł�������! 3 + 4 +############################################################################### 5 + 6 +Project: "Noah"=.\Noah.dsp - Package Owner=<4> 7 + 8 +Package=<5> 9 +{{{ 10 + begin source code control 11 + Noah 12 + . 13 + end source code control 14 +}}} 15 + 16 +Package=<4> 17 +{{{ 18 +}}} 19 + 20 +############################################################################### 21 + 22 +Project: "NoahXt"=.\NoahXt\NoahXt.dsp - Package Owner=<4> 23 + 24 +Package=<5> 25 +{{{ 26 + begin source code control 27 + NoahXt 28 + .\noahxt 29 + end source code control 30 +}}} 31 + 32 +Package=<4> 33 +{{{ 34 +}}} 35 + 36 +############################################################################### 37 + 38 +Project: "kinst"=.\uninst\kinst.dsp - Package Owner=<4> 39 + 40 +Package=<5> 41 +{{{ 42 + begin source code control 43 + kinst 44 + . 45 + end source code control 46 +}}} 47 + 48 +Package=<4> 49 +{{{ 50 +}}} 51 + 52 +############################################################################### 53 + 54 +Global: 55 + 56 +Package=<5> 57 +{{{ 58 +}}} 59 + 60 +Package=<3> 61 +{{{ 62 +}}} 63 + 64 +############################################################################### 65 +
Added Noah.h version [aa91ec71f323226e]
1 +#pragma once 2 + 3 +#include "resource.h"
Added Noah.ico version [93e9b3fc384d8993]
cannot compute difference between binary files
Added Noah.rc version [d77d284bfb6d2ed6]
1 +//Microsoft Developer Studio generated resource script. 2 +// 3 +#include "resource.h" 4 + 5 +#define APSTUDIO_READONLY_SYMBOLS 6 +///////////////////////////////////////////////////////////////////////////// 7 +// 8 +// Generated from the TEXTINCLUDE 2 resource. 9 +// 10 +#include "afxres.h" 11 + 12 +///////////////////////////////////////////////////////////////////////////// 13 +#undef APSTUDIO_READONLY_SYMBOLS 14 + 15 +///////////////////////////////////////////////////////////////////////////// 16 +// ���{�� resources 17 + 18 +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) 19 +#ifdef _WIN32 20 +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT 21 +#pragma code_page(932) 22 +#endif //_WIN32 23 + 24 +#ifndef _MAC 25 +///////////////////////////////////////////////////////////////////////////// 26 +// 27 +// Version 28 +// 29 + 30 +VS_VERSION_INFO VERSIONINFO 31 + FILEVERSION 3,1,9,9 32 + PRODUCTVERSION 3,1,9,9 33 + FILEFLAGSMASK 0x3fL 34 +#ifdef _DEBUG 35 + FILEFLAGS 0x1L 36 +#else 37 + FILEFLAGS 0x0L 38 +#endif 39 + FILEOS 0x4L 40 + FILETYPE 0x1L 41 + FILESUBTYPE 0x0L 42 +BEGIN 43 + BLOCK "StringFileInfo" 44 + BEGIN 45 + BLOCK "041104b0" 46 + BEGIN 47 + VALUE "Comments", "INTO THE LEGEND\0" 48 + VALUE "CompanyName", "kMonos.NET\0" 49 + VALUE "FileDescription", "Noah( DnD Melter/Freezer )\0" 50 + VALUE "FileVersion", "3.199\0" 51 + VALUE "InternalName", "sakasai\0" 52 + VALUE "LegalCopyright", "Presented by k.inaba (1998-2010)\0" 53 + VALUE "LegalTrademarks", "\0" 54 + VALUE "OriginalFilename", "Noah.exe\0" 55 + VALUE "PrivateBuild", "\0" 56 + VALUE "ProductName", "Noah\0" 57 + VALUE "ProductVersion", "3.199\0" 58 + VALUE "SpecialBuild", "\0" 59 + END 60 + END 61 + BLOCK "VarFileInfo" 62 + BEGIN 63 + VALUE "Translation", 0x411, 1200 64 + END 65 +END 66 + 67 +#endif // !_MAC 68 + 69 + 70 +#ifdef APSTUDIO_INVOKED 71 +///////////////////////////////////////////////////////////////////////////// 72 +// 73 +// TEXTINCLUDE 74 +// 75 + 76 +1 TEXTINCLUDE DISCARDABLE 77 +BEGIN 78 + "resource.h\0" 79 +END 80 + 81 +2 TEXTINCLUDE DISCARDABLE 82 +BEGIN 83 + "#include ""afxres.h""\r\n" 84 + "\0" 85 +END 86 + 87 +3 TEXTINCLUDE DISCARDABLE 88 +BEGIN 89 + "\r\n" 90 + "\0" 91 +END 92 + 93 +#endif // APSTUDIO_INVOKED 94 + 95 + 96 +///////////////////////////////////////////////////////////////////////////// 97 +// 98 +// Dialog 99 +// 100 + 101 +IDD_CMPCFG DIALOG DISCARDABLE 0, 0, 219, 121 102 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU 103 +CAPTION "���k" 104 +FONT 9, "�l�r �o�S�V�b�N" 105 +BEGIN 106 + GROUPBOX "���k��t�H���_",IDC_STATIC,7,7,205,43 107 + CONTROL "���̃t�@�C���Ɠ����ꏊ",IDC_DDIR1,"Button", 108 + BS_AUTORADIOBUTTON | WS_GROUP,11,20,84,10 109 + CONTROL "�w�肵���ꏊ",IDC_DDIR2,"Button",BS_AUTORADIOBUTTON | 110 + WS_TABSTOP,11,33,50,10 111 + EDITTEXT IDC_DDIR,63,32,123,12,ES_AUTOHSCROLL | WS_GROUP 112 + PUSHBUTTON "�w��",IDC_REF,188,31,19,14,WS_GROUP 113 + CONTROL "���k��J��",IDC_ODIR,"Button",BS_AUTOCHECKBOX | 114 + WS_GROUP | WS_TABSTOP,163,18,43,9 115 + GROUPBOX "���k�`��",IDC_STATIC,7,57,117,57 116 + COMBOBOX IDC_CMPEXT,14,81,34,163,CBS_DROPDOWNLIST | CBS_SORT | 117 + CBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_GROUP | 118 + WS_TABSTOP 119 + COMBOBOX IDC_CMPMHD,52,81,65,79,CBS_DROPDOWNLIST | 120 + CBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP 121 + GROUPBOX "Noah�̓��샂�[�h",IDC_STATIC,133,57,79,57 122 + CONTROL "���k��p",IDC_MODE1,"Button",BS_AUTORADIOBUTTON | 123 + WS_GROUP,147,69,39,8 124 + CONTROL "���k�D��",IDC_MODE2,"Button",BS_AUTORADIOBUTTON,147,79, 125 + 38,8 126 + CONTROL "�𓀗D��",IDC_MODE3,"Button",BS_AUTORADIOBUTTON | 127 + WS_TABSTOP,147,89,39,8 128 + CONTROL "�𓀐�p",IDC_MODE4,"Button",BS_AUTORADIOBUTTON,147,98, 129 + 39,12 130 +END 131 + 132 +IDD_ARCVIEW DIALOG DISCARDABLE 0, 0, 311, 157 133 +STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | 134 + WS_THICKFRAME 135 +FONT 9, "�l�r �o�S�V�b�N" 136 +BEGIN 137 + CONTROL "List1",IDC_FILELIST,"SysListView32",LVS_REPORT | 138 + LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,0,22,312,120 139 + PUSHBUTTON "�S��",IDOK,5,3,26,14 140 + PUSHBUTTON "��",IDC_MELTEACH,34,3,19,14 141 + PUSHBUTTON "���]",IDC_SELECTINV,78,3,19,14 142 + EDITTEXT IDC_DDIR,102,3,145,14,ES_AUTOHSCROLL 143 + PUSHBUTTON "...",IDC_REF,249,3,8,14 144 + DEFPUSHBUTTON "�\��",IDC_SHOW,56,3,19,14 145 + LTEXT "",IDC_STATUSBAR,0,146,309,11 146 +END 147 + 148 +IDD_MLTCFG DIALOG DISCARDABLE 0, 0, 219, 121 149 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU 150 +CAPTION "��" 151 +FONT 9, "�l�r �o�S�V�b�N" 152 +BEGIN 153 + GROUPBOX "�𓀐�t�H���_",IDC_STATIC,7,7,205,43 154 + CONTROL "���ɂƓ����ꏊ",IDC_DDIR1,"Button",BS_AUTORADIOBUTTON | 155 + WS_GROUP,11,20,65,10 156 + CONTROL "�w�肵���ꏊ",IDC_DDIR2,"Button",BS_AUTORADIOBUTTON | 157 + WS_TABSTOP,11,33,50,10 158 + EDITTEXT IDC_DDIR,63,32,123,12,ES_AUTOHSCROLL | WS_GROUP 159 + PUSHBUTTON "�w��",IDC_REF,188,31,19,14,WS_GROUP 160 + CONTROL "�𓀌�J��",IDC_ODIR,"Button",BS_AUTOCHECKBOX | 161 + WS_GROUP | WS_TABSTOP,163,18,42,8 162 + GROUPBOX "",IDC_STATIC,7,52,205,62 163 + CONTROL "�t�H���_��������",IDC_MKDIR,"Button",BS_AUTOCHECKBOX | 164 + WS_GROUP | WS_TABSTOP,16,62,63,10 165 + CONTROL "�t�@�C����Ȃ���Ȃ�",IDC_MKDIR1,"Button", 166 + BS_AUTOCHECKBOX | WS_TABSTOP,32,73,86,10 167 + CONTROL "�t�H���_��Ȃ���Ȃ�",IDC_MKDIR2,"Button", 168 + BS_AUTOCHECKBOX | WS_TABSTOP,32,84,86,10 169 + CONTROL "�����̐����͏Ȃ�",IDC_MKDIR3,"Button",BS_AUTOCHECKBOX | 170 + WS_TABSTOP,32,95,64,10 171 +END 172 + 173 +IDD_WINCFG DIALOG DISCARDABLE 0, 0, 219, 121 174 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU 175 +CAPTION "Windows�g��" 176 +FONT 9, "�l�r �o�S�V�b�N" 177 +BEGIN 178 + GROUPBOX "�֘A�t��",IDC_STATIC,7,7,205,39 179 + CONTROL "&LZH",IDC_LZH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13, 180 + 18,23,9 181 + CONTROL "&ZIP",IDC_ZIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13, 182 + 30,23,10 183 + CONTROL "&CAB",IDC_CAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,40, 184 + 18,26,10 185 + CONTROL "&RAR",IDC_RAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,40, 186 + 30,25,9 187 + CONTROL "&TAR",IDC_TAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,68, 188 + 18,26,10 189 + CONTROL "&YZ1",IDC_YZ1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,68, 190 + 30,23,9 191 + CONTROL "&GCA",IDC_GCA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97, 192 + 18,25,10 193 + CONTROL "AR&J",IDC_ARJ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97, 194 + 30,24,10 195 + CONTROL "&BGA",IDC_BGA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,126, 196 + 18,25,9 197 + CONTROL "AC&E",IDC_ACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,126, 198 + 30,25,9 199 + CONTROL "C&PT",IDC_CPT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,155, 200 + 18,26,9 201 + CONTROL "JA&K",IDC_JAK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,155, 202 + 30,26,9 203 + CONTROL "&7Z",IDC_7Z,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,182, 204 + 18,23,10 205 + PUSHBUTTON "��",IDC_ASS,190,30,17,14 206 + GROUPBOX "�E�h���b�O���h���b�v",IDC_STATIC,7,51,132,29 207 + CONTROL "�����Ɉ��k(&H)",IDC_CMP,"Button",BS_AUTOCHECKBOX | 208 + WS_TABSTOP,15,63,57,10 209 + CONTROL "�����ɉ�(&X)",IDC_MLT,"Button",BS_AUTOCHECKBOX | 210 + WS_TABSTOP,75,63,56,10 211 + GROUPBOX "�V���[�g�J�b�g",IDC_STATIC,7,86,132,28 212 + CONTROL "����(&S)",IDC_SND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, 213 + 15,98,37,10 214 + CONTROL "�f�X�N�g�b�v(&D)",IDC_DSK,"Button",BS_AUTOCHECKBOX | 215 + WS_TABSTOP,75,97,60,10 216 + LTEXT "�� ���[�U��admin�������Ȃ����߁A�֘A�t���Ɏ��s����\��������܂��B", 217 + IDC_NOADMIN,146,57,62,49 218 +END 219 + 220 +IDD_INFCFG DIALOG DISCARDABLE 0, 0, 219, 97 221 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU 222 +CAPTION "About" 223 +FONT 9, "Courier New" 224 +BEGIN 225 + ICON IDI_MAIN,IDC_STATIC,28,21,20,20,SS_REALSIZEIMAGE 226 + CTEXT "Noah 3.199\n\npresented by k.inaba",IDC_STATIC,13,45,53, 227 + 36,WS_TABSTOP 228 + EDITTEXT IDC_VERSION,78,7,134,83,ES_MULTILINE | ES_AUTOHSCROLL | 229 + ES_READONLY | WS_VSCROLL 230 +END 231 + 232 +IDD_PROGRESS DIALOG DISCARDABLE 0, 0, 214, 43 233 +STYLE DS_ABSALIGN | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | 234 + WS_SYSMENU 235 +CAPTION "Extracting..." 236 +FONT 9, "�l�r �o�S�V�b�N" 237 +BEGIN 238 + DEFPUSHBUTTON "STOP",IDCANCEL,157,7,50,14 239 + CONTROL "Progress1",IDC_BAR,"msctls_progress32",PBS_SMOOTH | 240 + WS_BORDER,7,25,200,12 241 + LTEXT "",IDC_FNAME,7,7,142,11 242 +END 243 + 244 +IDD_PASSWORD DIALOG DISCARDABLE 0, 0, 206, 64 245 +STYLE DS_ABSALIGN | DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | 246 + WS_CAPTION | WS_SYSMENU 247 +CAPTION "Noah" 248 +FONT 9, "�l�r �o�S�V�b�N" 249 +BEGIN 250 + LTEXT "Input your password:",IDC_MESSAGE,4,5,196,20 251 + EDITTEXT IDC_EDIT,7,29,194,12,ES_AUTOHSCROLL 252 + CONTROL "Mask",IDC_MASK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15, 253 + 47,31,10 254 + PUSHBUTTON "OK",IDOK,96,46,50,12 255 + PUSHBUTTON "Cancel",IDCANCEL,149,46,50,12 256 +END 257 + 258 +IDD_ANYASS DIALOG DISCARDABLE 0, 0, 207, 97 259 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU 260 +CAPTION "���̑��̌`���̊֘A�Â�" 261 +FONT 9, "�l�r �o�S�V�b�N" 262 +BEGIN 263 + LISTBOX IDC_NASSOC,7,7,77,62,LBS_SORT | LBS_NOINTEGRALHEIGHT | 264 + LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP 265 + PUSHBUTTON "�lj� >>",IDC_ADD,90,18,26,14 266 + LISTBOX IDC_ASSOC,123,7,77,62,LBS_SORT | LBS_NOINTEGRALHEIGHT | 267 + LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP 268 + PUSHBUTTON "<< �폜",IDC_DEL,90,38,27,14 269 + DEFPUSHBUTTON "���s",IDOK,95,76,50,14 270 + PUSHBUTTON "���f",IDCANCEL,150,76,50,14 271 +END 272 + 273 +IDD_PATHCHECK DIALOG DISCARDABLE 0, 0, 298, 69 274 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 275 +CAPTION "Noah �x��" 276 +FONT 9, "�l�r �o�S�V�b�N" 277 +BEGIN 278 + PUSHBUTTON "�͂�(&Y)",IDYES,111,48,50,14 279 + PUSHBUTTON "���~(&C)",ID_ALLNO,241,48,50,14 280 + LTEXT "��p�X�A�������� "".."" �ɂ�鑊�p�X�Ŋi�[���ꂽ�t�@�C���ł��B�W�J�𑱂��܂����H", 281 + IDC_STATIC,7,7,264,10 282 + LTEXT "",IDC_PATHNAME,16,17,275,23 283 + PUSHBUTTON "�S�Ă͂�(&A)",ID_ALLYES,166,48,50,14 284 +END 285 + 286 + 287 +///////////////////////////////////////////////////////////////////////////// 288 +// 289 +// DESIGNINFO 290 +// 291 + 292 +#ifdef APSTUDIO_INVOKED 293 +GUIDELINES DESIGNINFO DISCARDABLE 294 +BEGIN 295 + IDD_CMPCFG, DIALOG 296 + BEGIN 297 + LEFTMARGIN, 7 298 + RIGHTMARGIN, 212 299 + TOPMARGIN, 7 300 + BOTTOMMARGIN, 114 301 + END 302 + 303 + IDD_ARCVIEW, DIALOG 304 + BEGIN 305 + RIGHTMARGIN, 304 306 + TOPMARGIN, 3 307 + BOTTOMMARGIN, 148 308 + END 309 + 310 + IDD_MLTCFG, DIALOG 311 + BEGIN 312 + LEFTMARGIN, 7 313 + RIGHTMARGIN, 212 314 + TOPMARGIN, 7 315 + BOTTOMMARGIN, 114 316 + END 317 + 318 + IDD_WINCFG, DIALOG 319 + BEGIN 320 + LEFTMARGIN, 7 321 + RIGHTMARGIN, 212 322 + TOPMARGIN, 7 323 + BOTTOMMARGIN, 114 324 + END 325 + 326 + IDD_INFCFG, DIALOG 327 + BEGIN 328 + LEFTMARGIN, 7 329 + RIGHTMARGIN, 212 330 + TOPMARGIN, 7 331 + BOTTOMMARGIN, 90 332 + END 333 + 334 + IDD_PROGRESS, DIALOG 335 + BEGIN 336 + LEFTMARGIN, 7 337 + RIGHTMARGIN, 207 338 + TOPMARGIN, 7 339 + BOTTOMMARGIN, 36 340 + END 341 + 342 + IDD_PASSWORD, DIALOG 343 + BEGIN 344 + LEFTMARGIN, 7 345 + RIGHTMARGIN, 199 346 + TOPMARGIN, 7 347 + BOTTOMMARGIN, 57 348 + END 349 + 350 + IDD_ANYASS, DIALOG 351 + BEGIN 352 + LEFTMARGIN, 7 353 + RIGHTMARGIN, 200 354 + TOPMARGIN, 7 355 + BOTTOMMARGIN, 90 356 + END 357 + 358 + IDD_PATHCHECK, DIALOG 359 + BEGIN 360 + LEFTMARGIN, 7 361 + RIGHTMARGIN, 291 362 + TOPMARGIN, 7 363 + BOTTOMMARGIN, 62 364 + END 365 +END 366 +#endif // APSTUDIO_INVOKED 367 + 368 + 369 +///////////////////////////////////////////////////////////////////////////// 370 +// 371 +// Icon 372 +// 373 + 374 +// Icon with lowest ID value placed first to ensure application icon 375 +// remains consistent on all systems. 376 +IDI_MAIN ICON DISCARDABLE "noah.ico" 377 +IDI_B2E ICON DISCARDABLE "b2e.ico" 378 + 379 +///////////////////////////////////////////////////////////////////////////// 380 +// 381 +// Accelerator 382 +// 383 + 384 +IDR_ACCEL ACCELERATORS DISCARDABLE 385 +BEGIN 386 + "F", IDA_MYDIR, VIRTKEY, CONTROL, NOINVERT 387 + VK_F1, IDA_HELP, VIRTKEY, NOINVERT 388 +END 389 + 390 + 391 +///////////////////////////////////////////////////////////////////////////// 392 +// 393 +// 24 394 +// 395 + 396 +1 24 MOVEABLE PURE "manifest.xml" 397 + 398 +///////////////////////////////////////////////////////////////////////////// 399 +// 400 +// String Table 401 +// 402 + 403 +STRINGTABLE DISCARDABLE 404 +BEGIN 405 + IDS_M_ERROR "�𓀂ł��܂���ł����I\n���ɂł͂Ȃ����A���Ă��܂��B" 406 + IDS_C_ERROR "�Ή����Ă��Ȃ����k�`���ɐݒ肳��Ă��܂��B\nNoah�̐ݒ��ύX���邩�A�K��DLL�����C���X�g�[�����ĉ������B" 407 + IDS_CHOOSEDIR "�o�͐��I��ʼn������B" 408 + IDS_FNAME "�t�@�C����" 409 + IDS_SIZE "�T�C�Y" 410 + IDS_DATETIME "����" 411 + IDS_RATIO "���k��" 412 + IDS_METHOD "�`��" 413 + IDS_PATH "�p�X" 414 + IDS_EXECUTING "Noah����N�������\�t�g�����s���ł��B���̂܂I���ƃf�B�X�N�ɕs�v�ȃt�@�C�����c��\�����傫���ł����A�I�����܂����H" 415 + IDS_NOLIST "�G���[�F���X�g�A�b�v�s�\�ȏ��ɂł��B" 416 + IDS_ARCVIEW_MSG "[%d�̃t�@�C��] [���k�� %d%%] [%s]" 417 +END 418 + 419 +#endif // ���{�� resources 420 +///////////////////////////////////////////////////////////////////////////// 421 + 422 + 423 +///////////////////////////////////////////////////////////////////////////// 424 +// �p�� (��ض) resources 425 + 426 +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 427 +#ifdef _WIN32 428 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 429 +#pragma code_page(1252) 430 +#endif //_WIN32 431 + 432 +///////////////////////////////////////////////////////////////////////////// 433 +// 434 +// Dialog 435 +// 436 + 437 +IDD_ARCVIEW DIALOG DISCARDABLE 0, 0, 353, 155 438 +STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | 439 + WS_THICKFRAME 440 +FONT 9, "MS Sans Serif" 441 +BEGIN 442 + CONTROL "List1",IDC_FILELIST,"SysListView32",LVS_REPORT | 443 + LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | 444 + WS_TABSTOP,0,20,350,126 445 + PUSHBUTTON "Extract &All",IDOK,7,3,36,14 446 + PUSHBUTTON "E&xtract",IDC_MELTEACH,46,3,26,14 447 + PUSHBUTTON "&Inv",IDC_SELECTINV,97,3,19,14 448 + EDITTEXT IDC_DDIR,119,3,149,14,ES_AUTOHSCROLL 449 + PUSHBUTTON "...",IDC_REF,273,3,13,14 450 + DEFPUSHBUTTON "&View",IDC_SHOW,75,3,19,14 451 +END 452 + 453 +IDD_WINCFG DIALOG DISCARDABLE 0, 0, 219, 121 454 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU 455 +CAPTION "Windows" 456 +FONT 9, "MS Sans Serif" 457 +BEGIN 458 + GROUPBOX "Association",IDC_STATIC,7,7,205,36 459 + CONTROL "&LZH",IDC_LZH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12, 460 + 18,28,10 461 + CONTROL "&ZIP",IDC_ZIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12, 462 + 28,26,10 463 + CONTROL "&CAB",IDC_CAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,40, 464 + 18,30,10 465 + CONTROL "&RAR",IDC_RAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,40, 466 + 28,30,10 467 + CONTROL "&TAR",IDC_TAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,70, 468 + 18,29,10 469 + CONTROL "&YZ1",IDC_YZ1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,70, 470 + 28,27,10 471 + CONTROL "&GCA",IDC_GCA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,99, 472 + 18,30,10 473 + CONTROL "AR&J",IDC_ARJ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,99, 474 + 28,29,10 475 + CONTROL "&BGA",IDC_BGA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,129, 476 + 18,30,10 477 + CONTROL "AC&E",IDC_ACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,129, 478 + 28,29,10 479 + CONTROL "C&PT",IDC_CPT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159, 480 + 18,29,10 481 + CONTROL "JA&K",IDC_JAK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159, 482 + 28,29,10 483 + CONTROL "&7Z",IDC_7Z,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,188, 484 + 18,21,10 485 + GROUPBOX "D&&D Shell Extension",IDC_STATIC,7,47,205,31 486 + CONTROL "Compress &Here",IDC_CMP,"Button",BS_AUTOCHECKBOX | 487 + WS_TABSTOP,14,61,65,10 488 + CONTROL "E&xpand Here",IDC_MLT,"Button",BS_AUTOCHECKBOX | 489 + WS_TABSTOP,85,61,72,10 490 + GROUPBOX "Shortcut",IDC_STATIC,7,84,205,30 491 + CONTROL "&SendTo",IDC_SND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, 492 + 14,96,56,10 493 + CONTROL "&Desktop",IDC_DSK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, 494 + 85,95,60,10 495 + PUSHBUTTON "...",IDC_ASS,193,31,13,9 496 +END 497 + 498 +IDD_MLTCFG DIALOG DISCARDABLE 0, 0, 219, 121 499 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU 500 +CAPTION "Extract" 501 +FONT 9, "MS Sans Serif" 502 +BEGIN 503 + GROUPBOX "Destination Folder",IDC_STATIC,7,7,205,43 504 + CONTROL "Archive's Folder",IDC_DDIR1,"Button",BS_AUTORADIOBUTTON | 505 + WS_GROUP,11,20,126,10 506 + CONTROL "",IDC_DDIR2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,11, 507 + 33,10,8 508 + EDITTEXT IDC_DDIR,23,32,167,12,ES_AUTOHSCROLL | WS_GROUP 509 + PUSHBUTTON "...",IDC_REF,194,31,13,14,WS_GROUP 510 + CONTROL "Open",IDC_ODIR,"Button",BS_AUTOCHECKBOX | WS_GROUP | 511 + WS_TABSTOP,163,18,42,10 512 + GROUPBOX "",IDC_STATIC,7,52,205,62 513 + CONTROL "Create Directory",IDC_MKDIR,"Button",BS_AUTOCHECKBOX | 514 + WS_GROUP | WS_TABSTOP,16,62,183,10 515 + CONTROL "Not create when only 1 file is contained",IDC_MKDIR1, 516 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,32,73,170,10 517 + CONTROL "Not create when only 1 folder is contained",IDC_MKDIR2, 518 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,32,84,173,10 519 + CONTROL "Omit trail numbers",IDC_MKDIR3,"Button",BS_AUTOCHECKBOX | 520 + WS_TABSTOP,32,95,169,10 521 +END 522 + 523 +IDD_CMPCFG DIALOG DISCARDABLE 0, 0, 219, 121 524 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU 525 +CAPTION "Compress" 526 +FONT 9, "MS Sans Serif" 527 +BEGIN 528 + GROUPBOX "Destination Folder",IDC_STATIC,7,7,205,43 529 + CONTROL "Source's Folder",IDC_DDIR1,"Button",BS_AUTORADIOBUTTON | 530 + WS_GROUP,11,20,122,10 531 + CONTROL "",IDC_DDIR2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,11, 532 + 33,8,10 533 + EDITTEXT IDC_DDIR,23,32,167,12,ES_AUTOHSCROLL | WS_GROUP 534 + PUSHBUTTON "...",IDC_REF,194,31,13,14,WS_GROUP 535 + CONTROL "Open",IDC_ODIR,"Button",BS_AUTOCHECKBOX | WS_GROUP | 536 + WS_TABSTOP,163,18,43,9 537 + GROUPBOX "Method",IDC_STATIC,7,57,117,57 538 + COMBOBOX IDC_CMPEXT,13,81,33,163,CBS_DROPDOWNLIST | CBS_SORT | 539 + CBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_GROUP | 540 + WS_TABSTOP 541 + COMBOBOX IDC_CMPMHD,49,81,66,79,CBS_DROPDOWNLIST | 542 + CBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP 543 + GROUPBOX "Which-To-Do",IDC_STATIC,133,57,79,57 544 + CONTROL "Compress Only",IDC_MODE1,"Button",BS_AUTORADIOBUTTON | 545 + WS_GROUP,145,69,61,10 546 + CONTROL "mode-1",IDC_MODE2,"Button",BS_AUTORADIOBUTTON,145,79,59, 547 + 10 548 + CONTROL "mode-2",IDC_MODE3,"Button",BS_AUTORADIOBUTTON | 549 + WS_TABSTOP,145,89,60,10 550 + CONTROL "Extract Only",IDC_MODE4,"Button",BS_AUTORADIOBUTTON,145, 551 + 99,60,10 552 +END 553 + 554 +IDD_ANYASS DIALOG DISCARDABLE 0, 0, 207, 97 555 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU 556 +CAPTION "Other Format Association" 557 +FONT 9, "MS Sans Serif" 558 +BEGIN 559 + LISTBOX IDC_NASSOC,7,7,77,62,LBS_SORT | LBS_NOINTEGRALHEIGHT | 560 + LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP 561 + PUSHBUTTON "&Add >>",IDC_ADD,88,18,30,14 562 + LISTBOX IDC_ASSOC,123,7,77,62,LBS_SORT | LBS_NOINTEGRALHEIGHT | 563 + LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP 564 + PUSHBUTTON "<< &Del",IDC_DEL,88,38,30,14 565 + DEFPUSHBUTTON "Execute",IDOK,95,76,50,14 566 + PUSHBUTTON "Abort",IDCANCEL,150,76,50,14 567 +END 568 + 569 +IDD_PATHCHECK DIALOG DISCARDABLE 0, 0, 298, 69 570 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 571 +CAPTION "Noah Warning" 572 +FONT 9, "MS Sans Serif" 573 +BEGIN 574 + PUSHBUTTON "&Yes",IDYES,111,48,50,14 575 + LTEXT "Contains absolute path or parent path "".."". Do you really want to extrace this file?", 576 + IDC_STATIC,7,7,270,10 577 + LTEXT "",IDC_PATHNAME,16,17,275,23 578 + PUSHBUTTON "Yes to &All",ID_ALLYES,165,48,50,14 579 + PUSHBUTTON "&Cancel",ID_ALLNO,241,48,50,14 580 +END 581 + 582 + 583 +///////////////////////////////////////////////////////////////////////////// 584 +// 585 +// DESIGNINFO 586 +// 587 + 588 +#ifdef APSTUDIO_INVOKED 589 +GUIDELINES DESIGNINFO DISCARDABLE 590 +BEGIN 591 + IDD_ARCVIEW, DIALOG 592 + BEGIN 593 + RIGHTMARGIN, 350 594 + TOPMARGIN, 3 595 + BOTTOMMARGIN, 146 596 + END 597 + 598 + IDD_WINCFG, DIALOG 599 + BEGIN 600 + LEFTMARGIN, 7 601 + RIGHTMARGIN, 212 602 + TOPMARGIN, 7 603 + BOTTOMMARGIN, 114 604 + END 605 + 606 + IDD_MLTCFG, DIALOG 607 + BEGIN 608 + LEFTMARGIN, 7 609 + RIGHTMARGIN, 212 610 + TOPMARGIN, 7 611 + BOTTOMMARGIN, 114 612 + END 613 + 614 + IDD_CMPCFG, DIALOG 615 + BEGIN 616 + LEFTMARGIN, 7 617 + RIGHTMARGIN, 212 618 + TOPMARGIN, 7 619 + BOTTOMMARGIN, 114 620 + END 621 + 622 + IDD_ANYASS, DIALOG 623 + BEGIN 624 + LEFTMARGIN, 7 625 + RIGHTMARGIN, 200 626 + TOPMARGIN, 7 627 + BOTTOMMARGIN, 90 628 + END 629 + 630 + IDD_PATHCHECK, DIALOG 631 + BEGIN 632 + LEFTMARGIN, 7 633 + RIGHTMARGIN, 291 634 + TOPMARGIN, 7 635 + BOTTOMMARGIN, 62 636 + END 637 +END 638 +#endif // APSTUDIO_INVOKED 639 + 640 + 641 +///////////////////////////////////////////////////////////////////////////// 642 +// 643 +// String Table 644 +// 645 + 646 +STRINGTABLE DISCARDABLE 647 +BEGIN 648 + IDS_M_ERROR "Can't extract !\nIt's a non-archive file or a broken archive." 649 + IDS_C_ERROR "Unsupported compression method !\nMaybe because of the lack of DLL." 650 + IDS_CHOOSEDIR "Choose a destination folder." 651 + IDS_FNAME "NAME" 652 + IDS_SIZE "SIZE" 653 + IDS_DATETIME "TIME" 654 + IDS_RATIO "RATIO" 655 + IDS_METHOD "METHOD" 656 + IDS_PATH "PATH" 657 + IDS_EXECUTING "Application launched from Noah is living. Do you really want to close?" 658 + IDS_NOLIST "Error: Can't ListUp The Contents of this Archive." 659 + IDS_ARCVIEW_MSG "[%d files] [Ratio: %d%%] [%s]" 660 +END 661 + 662 +#endif // �p�� (��ض) resources 663 +///////////////////////////////////////////////////////////////////////////// 664 + 665 + 666 + 667 +#ifndef APSTUDIO_INVOKED 668 +///////////////////////////////////////////////////////////////////////////// 669 +// 670 +// Generated from the TEXTINCLUDE 3 resource. 671 +// 672 + 673 + 674 +///////////////////////////////////////////////////////////////////////////// 675 +#endif // not APSTUDIO_INVOKED 676 +
Added Noah.sln version [4a4f438b41126acf]
1 + 2 +Microsoft Visual Studio Solution File, Format Version 11.00 3 +# Visual C++ Express 2010 4 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Noah", "Noah.vcxproj", "{B9F0CC85-6A63-4320-A38A-2B9BCFDF9484}" 5 +EndProject 6 +Global 7 + GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 + Debug|Win32 = Debug|Win32 9 + Release|Win32 = Release|Win32 10 + EndGlobalSection 11 + GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 + {B9F0CC85-6A63-4320-A38A-2B9BCFDF9484}.Debug|Win32.ActiveCfg = Debug|Win32 13 + {B9F0CC85-6A63-4320-A38A-2B9BCFDF9484}.Debug|Win32.Build.0 = Debug|Win32 14 + {B9F0CC85-6A63-4320-A38A-2B9BCFDF9484}.Release|Win32.ActiveCfg = Release|Win32 15 + {B9F0CC85-6A63-4320-A38A-2B9BCFDF9484}.Release|Win32.Build.0 = Release|Win32 16 + EndGlobalSection 17 + GlobalSection(SolutionProperties) = preSolution 18 + HideSolutionNode = FALSE 19 + EndGlobalSection 20 +EndGlobal
Added Noah.suo version [2f118ceefdecace4]
cannot compute difference between binary files
Added Noah.vcxproj version [902206edddd697f2]
1 +<?xml version="1.0" encoding="utf-8"?> 2 +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 + <ItemGroup Label="ProjectConfigurations"> 4 + <ProjectConfiguration Include="Debug|Win32"> 5 + <Configuration>Debug</Configuration> 6 + <Platform>Win32</Platform> 7 + </ProjectConfiguration> 8 + <ProjectConfiguration Include="Release|Win32"> 9 + <Configuration>Release</Configuration> 10 + <Platform>Win32</Platform> 11 + </ProjectConfiguration> 12 + </ItemGroup> 13 + <PropertyGroup Label="Globals"> 14 + <ProjectGuid>{B9F0CC85-6A63-4320-A38A-2B9BCFDF9484}</ProjectGuid> 15 + <Keyword>Win32Proj</Keyword> 16 + <RootNamespace>Noah</RootNamespace> 17 + </PropertyGroup> 18 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> 19 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> 20 + <ConfigurationType>Application</ConfigurationType> 21 + <UseDebugLibraries>true</UseDebugLibraries> 22 + <CharacterSet>MultiByte</CharacterSet> 23 + </PropertyGroup> 24 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> 25 + <ConfigurationType>Application</ConfigurationType> 26 + <UseDebugLibraries>false</UseDebugLibraries> 27 + <WholeProgramOptimization>true</WholeProgramOptimization> 28 + <CharacterSet>MultiByte</CharacterSet> 29 + </PropertyGroup> 30 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 31 + <ImportGroup Label="ExtensionSettings"> 32 + </ImportGroup> 33 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> 34 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> 35 + </ImportGroup> 36 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> 37 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> 38 + </ImportGroup> 39 + <PropertyGroup Label="UserMacros" /> 40 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> 41 + <LinkIncremental>true</LinkIncremental> 42 + <IntDir>obj\$(Configuration)\</IntDir> 43 + </PropertyGroup> 44 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> 45 + <LinkIncremental>false</LinkIncremental> 46 + <IntDir>obj\$(Configuration)\</IntDir> 47 + </PropertyGroup> 48 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> 49 + <ClCompile> 50 + <PrecompiledHeader>Use</PrecompiledHeader> 51 + <WarningLevel>Level3</WarningLevel> 52 + <Optimization>Disabled</Optimization> 53 + <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> 54 + <ForceConformanceInForLoopScope>false</ForceConformanceInForLoopScope> 55 + <DisableSpecificWarnings> 56 + </DisableSpecificWarnings> 57 + </ClCompile> 58 + <Link> 59 + <SubSystem>Windows</SubSystem> 60 + <GenerateDebugInformation>true</GenerateDebugInformation> 61 + <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;comctl32.lib;lz32.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies> 62 + <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile> 63 + <EntryPointSymbol>kilib_startUp</EntryPointSymbol> 64 + </Link> 65 + <Manifest> 66 + <AdditionalManifestFiles>manifest.xml</AdditionalManifestFiles> 67 + </Manifest> 68 + </ItemDefinitionGroup> 69 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> 70 + <ClCompile> 71 + <WarningLevel>Level3</WarningLevel> 72 + <PrecompiledHeader>Use</PrecompiledHeader> 73 + <Optimization>MaxSpeed</Optimization> 74 + <FunctionLevelLinking>true</FunctionLevelLinking> 75 + <IntrinsicFunctions>true</IntrinsicFunctions> 76 + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> 77 + <ForceConformanceInForLoopScope>false</ForceConformanceInForLoopScope> 78 + <DisableSpecificWarnings> 79 + </DisableSpecificWarnings> 80 + <BufferSecurityCheck>false</BufferSecurityCheck> 81 + <BasicRuntimeChecks>Default</BasicRuntimeChecks> 82 + <RuntimeTypeInfo>false</RuntimeTypeInfo> 83 + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> 84 + </ClCompile> 85 + <Link> 86 + <SubSystem>Windows</SubSystem> 87 + <GenerateDebugInformation>true</GenerateDebugInformation> 88 + <EnableCOMDATFolding>true</EnableCOMDATFolding> 89 + <OptimizeReferences>true</OptimizeReferences> 90 + <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;comctl32.lib;lz32.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies> 91 + <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile> 92 + <EntryPointSymbol>kilib_startUp</EntryPointSymbol> 93 + </Link> 94 + <Manifest> 95 + <AdditionalManifestFiles>manifest.xml</AdditionalManifestFiles> 96 + </Manifest> 97 + </ItemDefinitionGroup> 98 + <ItemGroup> 99 + <None Include="b2e.ico" /> 100 + <None Include="manifest.xml" /> 101 + <None Include="Noah.ico" /> 102 + <None Include="ReadMe.txt" /> 103 + </ItemGroup> 104 + <ItemGroup> 105 + <ClCompile Include="ArcACE.cpp" /> 106 + <ClCompile Include="ArcB2e.cpp" /> 107 + <ClCompile Include="ArcCpt.cpp" /> 108 + <ClCompile Include="ArcDLL.cpp" /> 109 + <ClCompile Include="Archiver.cpp" /> 110 + <ClCompile Include="ArcMsc.cpp" /> 111 + <ClCompile Include="kilib\kl_app.cpp" /> 112 + <ClCompile Include="kilib\kl_carc.cpp" /> 113 + <ClCompile Include="kilib\kl_cmd.cpp" /> 114 + <ClCompile Include="kilib\kl_dnd.cpp" /> 115 + <ClCompile Include="kilib\kl_file.cpp" /> 116 + <ClCompile Include="kilib\kl_find.cpp" /> 117 + <ClCompile Include="kilib\kl_reg.cpp" /> 118 + <ClCompile Include="kilib\kl_rythp.cpp" /> 119 + <ClCompile Include="kilib\kl_str.cpp" /> 120 + <ClCompile Include="kilib\kl_wcmn.cpp" /> 121 + <ClCompile Include="kilib\kl_wnd.cpp" /> 122 + <ClCompile Include="Noah.cpp" /> 123 + <ClCompile Include="NoahAM.cpp" /> 124 + <ClCompile Include="NoahCM.cpp" /> 125 + <ClCompile Include="stdafx.cpp"> 126 + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> 127 + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> 128 + </ClCompile> 129 + <ClCompile Include="SubDlg.cpp" /> 130 + </ItemGroup> 131 + <ItemGroup> 132 + <ClInclude Include="ArcACE.h" /> 133 + <ClInclude Include="ArcB2e.h" /> 134 + <ClInclude Include="ArcCpt.h" /> 135 + <ClInclude Include="ArcDLL.h" /> 136 + <ClInclude Include="Archiver.h" /> 137 + <ClInclude Include="ArcMsc.h" /> 138 + <ClInclude Include="kilib\kilib.h" /> 139 + <ClInclude Include="kilib\kilibext.h" /> 140 + <ClInclude Include="kilib\kl_app.h" /> 141 + <ClInclude Include="kilib\kl_carc.h" /> 142 + <ClInclude Include="kilib\kl_cmd.h" /> 143 + <ClInclude Include="kilib\kl_dnd.h" /> 144 + <ClInclude Include="kilib\kl_file.h" /> 145 + <ClInclude Include="kilib\kl_find.h" /> 146 + <ClInclude Include="kilib\kl_misc.h" /> 147 + <ClInclude Include="kilib\kl_reg.h" /> 148 + <ClInclude Include="kilib\kl_rythp.h" /> 149 + <ClInclude Include="kilib\kl_str.h" /> 150 + <ClInclude Include="kilib\kl_wcmn.h" /> 151 + <ClInclude Include="kilib\kl_wnd.h" /> 152 + <ClInclude Include="Noah.h" /> 153 + <ClInclude Include="NoahAM.h" /> 154 + <ClInclude Include="NoahApp.h" /> 155 + <ClInclude Include="NoahCM.h" /> 156 + <ClInclude Include="Resource.h" /> 157 + <ClInclude Include="stdafx.h" /> 158 + <ClInclude Include="SubDlg.h" /> 159 + <ClInclude Include="unacedef.h" /> 160 + </ItemGroup> 161 + <ItemGroup> 162 + <ResourceCompile Include="Noah.rc" /> 163 + </ItemGroup> 164 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> 165 + <ImportGroup Label="ExtensionTargets"> 166 + </ImportGroup> 167 +</Project>
Added Noah.vcxproj.filters version [a5f2d1ccd22b557c]
1 +<?xml version="1.0" encoding="utf-8"?> 2 +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 + <ItemGroup> 4 + <Filter Include="ソース ファイル"> 5 + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> 6 + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> 7 + </Filter> 8 + <Filter Include="ヘッダー ファイル"> 9 + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> 10 + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> 11 + </Filter> 12 + <Filter Include="リソース ファイル"> 13 + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> 14 + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> 15 + </Filter> 16 + </ItemGroup> 17 + <ItemGroup> 18 + <None Include="ReadMe.txt" /> 19 + <None Include="b2e.ico"> 20 + <Filter>リソース ファイル</Filter> 21 + </None> 22 + <None Include="manifest.xml" /> 23 + <None Include="Noah.ico"> 24 + <Filter>リソース ファイル</Filter> 25 + </None> 26 + </ItemGroup> 27 + <ItemGroup> 28 + <ClCompile Include="stdafx.cpp"> 29 + <Filter>ソース ファイル</Filter> 30 + </ClCompile> 31 + <ClCompile Include="Noah.cpp"> 32 + <Filter>ソース ファイル</Filter> 33 + </ClCompile> 34 + <ClCompile Include="ArcACE.cpp"> 35 + <Filter>ソース ファイル</Filter> 36 + </ClCompile> 37 + <ClCompile Include="ArcB2e.cpp"> 38 + <Filter>ソース ファイル</Filter> 39 + </ClCompile> 40 + <ClCompile Include="ArcCpt.cpp"> 41 + <Filter>ソース ファイル</Filter> 42 + </ClCompile> 43 + <ClCompile Include="ArcDLL.cpp"> 44 + <Filter>ソース ファイル</Filter> 45 + </ClCompile> 46 + <ClCompile Include="Archiver.cpp"> 47 + <Filter>ソース ファイル</Filter> 48 + </ClCompile> 49 + <ClCompile Include="ArcMsc.cpp"> 50 + <Filter>ソース ファイル</Filter> 51 + </ClCompile> 52 + <ClCompile Include="NoahAM.cpp"> 53 + <Filter>ソース ファイル</Filter> 54 + </ClCompile> 55 + <ClCompile Include="NoahCM.cpp"> 56 + <Filter>ソース ファイル</Filter> 57 + </ClCompile> 58 + <ClCompile Include="SubDlg.cpp"> 59 + <Filter>ソース ファイル</Filter> 60 + </ClCompile> 61 + <ClCompile Include="kilib\kl_app.cpp"> 62 + <Filter>ソース ファイル</Filter> 63 + </ClCompile> 64 + <ClCompile Include="kilib\kl_carc.cpp"> 65 + <Filter>ソース ファイル</Filter> 66 + </ClCompile> 67 + <ClCompile Include="kilib\kl_cmd.cpp"> 68 + <Filter>ソース ファイル</Filter> 69 + </ClCompile> 70 + <ClCompile Include="kilib\kl_dnd.cpp"> 71 + <Filter>ソース ファイル</Filter> 72 + </ClCompile> 73 + <ClCompile Include="kilib\kl_file.cpp"> 74 + <Filter>ソース ファイル</Filter> 75 + </ClCompile> 76 + <ClCompile Include="kilib\kl_find.cpp"> 77 + <Filter>ソース ファイル</Filter> 78 + </ClCompile> 79 + <ClCompile Include="kilib\kl_reg.cpp"> 80 + <Filter>ソース ファイル</Filter> 81 + </ClCompile> 82 + <ClCompile Include="kilib\kl_rythp.cpp"> 83 + <Filter>ソース ファイル</Filter> 84 + </ClCompile> 85 + <ClCompile Include="kilib\kl_str.cpp"> 86 + <Filter>ソース ファイル</Filter> 87 + </ClCompile> 88 + <ClCompile Include="kilib\kl_wcmn.cpp"> 89 + <Filter>ソース ファイル</Filter> 90 + </ClCompile> 91 + <ClCompile Include="kilib\kl_wnd.cpp"> 92 + <Filter>ソース ファイル</Filter> 93 + </ClCompile> 94 + </ItemGroup> 95 + <ItemGroup> 96 + <ClInclude Include="ArcACE.h"> 97 + <Filter>ヘッダー ファイル</Filter> 98 + </ClInclude> 99 + <ClInclude Include="ArcB2e.h"> 100 + <Filter>ヘッダー ファイル</Filter> 101 + </ClInclude> 102 + <ClInclude Include="ArcCpt.h"> 103 + <Filter>ヘッダー ファイル</Filter> 104 + </ClInclude> 105 + <ClInclude Include="ArcDLL.h"> 106 + <Filter>ヘッダー ファイル</Filter> 107 + </ClInclude> 108 + <ClInclude Include="Archiver.h"> 109 + <Filter>ヘッダー ファイル</Filter> 110 + </ClInclude> 111 + <ClInclude Include="ArcMsc.h"> 112 + <Filter>ヘッダー ファイル</Filter> 113 + </ClInclude> 114 + <ClInclude Include="Noah.h"> 115 + <Filter>ヘッダー ファイル</Filter> 116 + </ClInclude> 117 + <ClInclude Include="NoahAM.h"> 118 + <Filter>ヘッダー ファイル</Filter> 119 + </ClInclude> 120 + <ClInclude Include="NoahApp.h"> 121 + <Filter>ヘッダー ファイル</Filter> 122 + </ClInclude> 123 + <ClInclude Include="NoahCM.h"> 124 + <Filter>ヘッダー ファイル</Filter> 125 + </ClInclude> 126 + <ClInclude Include="Resource.h"> 127 + <Filter>ヘッダー ファイル</Filter> 128 + </ClInclude> 129 + <ClInclude Include="stdafx.h"> 130 + <Filter>ヘッダー ファイル</Filter> 131 + </ClInclude> 132 + <ClInclude Include="SubDlg.h"> 133 + <Filter>ヘッダー ファイル</Filter> 134 + </ClInclude> 135 + <ClInclude Include="unacedef.h"> 136 + <Filter>ヘッダー ファイル</Filter> 137 + </ClInclude> 138 + <ClInclude Include="kilib\kilib.h"> 139 + <Filter>ヘッダー ファイル</Filter> 140 + </ClInclude> 141 + <ClInclude Include="kilib\kilibext.h"> 142 + <Filter>ヘッダー ファイル</Filter> 143 + </ClInclude> 144 + <ClInclude Include="kilib\kl_app.h"> 145 + <Filter>ヘッダー ファイル</Filter> 146 + </ClInclude> 147 + <ClInclude Include="kilib\kl_carc.h"> 148 + <Filter>ヘッダー ファイル</Filter> 149 + </ClInclude> 150 + <ClInclude Include="kilib\kl_cmd.h"> 151 + <Filter>ヘッダー ファイル</Filter> 152 + </ClInclude> 153 + <ClInclude Include="kilib\kl_dnd.h"> 154 + <Filter>ヘッダー ファイル</Filter> 155 + </ClInclude> 156 + <ClInclude Include="kilib\kl_file.h"> 157 + <Filter>ヘッダー ファイル</Filter> 158 + </ClInclude> 159 + <ClInclude Include="kilib\kl_find.h"> 160 + <Filter>ヘッダー ファイル</Filter> 161 + </ClInclude> 162 + <ClInclude Include="kilib\kl_misc.h"> 163 + <Filter>ヘッダー ファイル</Filter> 164 + </ClInclude> 165 + <ClInclude Include="kilib\kl_reg.h"> 166 + <Filter>ヘッダー ファイル</Filter> 167 + </ClInclude> 168 + <ClInclude Include="kilib\kl_rythp.h"> 169 + <Filter>ヘッダー ファイル</Filter> 170 + </ClInclude> 171 + <ClInclude Include="kilib\kl_str.h"> 172 + <Filter>ヘッダー ファイル</Filter> 173 + </ClInclude> 174 + <ClInclude Include="kilib\kl_wcmn.h"> 175 + <Filter>ヘッダー ファイル</Filter> 176 + </ClInclude> 177 + <ClInclude Include="kilib\kl_wnd.h"> 178 + <Filter>ヘッダー ファイル</Filter> 179 + </ClInclude> 180 + </ItemGroup> 181 + <ItemGroup> 182 + <ResourceCompile Include="Noah.rc"> 183 + <Filter>リソース ファイル</Filter> 184 + </ResourceCompile> 185 + </ItemGroup> 186 +</Project>
Added NoahAM.cpp version [764020530952f7ee]
1 +// NoahAM.cpp 2 +//-- control many archiver routines -- 3 + 4 +#include "stdafx.h" 5 +#include "resource.h" 6 +#include "NoahApp.h" 7 +#include "NoahAM.h" 8 +#include "ArcDLL.h" 9 +#include "ArcAce.h" 10 +#include "ArcMsc.h" 11 +#include "ArcB2e.h" 12 +#include "ArcCpt.h" 13 + 14 +//----------------------------------------------// 15 +//------ ���������̃f�[�^�ŏ��������Ă��� ------// 16 +//----------------------------------------------// 17 + 18 +void CNoahArchiverManager::init() 19 +{ 20 + const char* kl = mycnf().kill(); 21 + static int dead[128]; 22 + while( *kl ) dead[ 0x7f & (*(kl++)) ] = 1; 23 + 24 + // �����Ή��`�� 25 + if( !dead['L'] ) m_AList.add( new CArcLzh ); 26 + if( !dead['7'] ) m_AList.add( new CArc7z ), 27 + m_AList.add( new CArc7zZip ); 28 + if( !dead['Z'] ) m_AList.add( new CArcUnZip ); 29 + if( !dead['z'] ) m_AList.add( new CArcZip ); 30 + if( !dead['T'] ) m_AList.add( new CArcTar ); 31 + if( !dead['C'] ) m_AList.add( new CArcCab ); 32 + if( !dead['R'] ) m_AList.add( new CArcRar ); 33 + if( !dead['A'] ) m_AList.add( new CArcArj ); 34 + if( !dead['B'] ) m_AList.add( new CArcBga ); 35 + if( !dead['Y'] ) m_AList.add( new CArcYz1 ); 36 + if( !dead['G'] ) m_AList.add( new CArcGca ); 37 + if( !dead['a'] ) m_AList.add( new CArcAce ); 38 + if( !dead['M'] ) m_AList.add( new CArcMsc ); 39 + if( !dead['c'] ) m_AList.add( new CArcCpt ); 40 + 41 + // �g���X�N���v�g���[�h 42 + char prev_cur[MAX_PATH]; 43 + ::GetCurrentDirectory(MAX_PATH, prev_cur); 44 + ::SetCurrentDirectory( CArcB2e::init_b2e_path() ); 45 + kiFindFile find; 46 + find.begin( "*.b2e" ); 47 + WIN32_FIND_DATA fd; 48 + for( int t=0; find.next(&fd); t++ ) 49 + m_AList.add( new CArcB2e(fd.cFileName) ); 50 + m_b2e = (t>1); 51 + ::SetCurrentDirectory(prev_cur); 52 +} 53 + 54 +//----------------------------------------------// 55 +//------------ �t�@�C�����X�g���L�� ------------// 56 +//----------------------------------------------// 57 + 58 +unsigned long CNoahArchiverManager::set_files( const cCharArray& files ) 59 +{ 60 + //-- �N���A 61 + m_FName.empty(); 62 + m_BasePathList.empty(); 63 + 64 + //-- ���p�X���擾( �o���邾�����p�͈͂��L���邽�߁A8.3�`���� ) 65 + if( files.len() != 0 ) 66 + { 67 + char spath[MAX_PATH]; 68 + m_BasePath = 69 + ( 0!=::GetShortPathName( files[0], spath, MAX_PATH ) ) 70 + ? spath : ""; 71 + if( !m_BasePath.beDirOnly() ) 72 + { 73 + m_BasePath.beSpecialPath( kiPath::Cur ); 74 + m_BasePath.beBackSlash( true ); 75 + } 76 + } 77 + 78 + //-- �Z���t�@�C�����ƒ����̂𗼕��擾���Ă��� 79 + m_FName.alloc( files.len() ); 80 + m_BasePathList.alloc( files.len() ); 81 + for( unsigned int i=0,c=0; i!=files.len(); i++ ) 82 + if( kiFindFile::findfirst( files[i], &m_FName[c] ) ) 83 + { 84 + if( m_FName[c].cAlternateFileName[0] == '\0' ) 85 + ::lstrcpy(m_FName[c].cAlternateFileName,m_FName[c].cFileName); 86 + m_BasePathList[c] = files[i]; 87 + if( !m_BasePathList[c].beDirOnly() ) 88 + { 89 + m_BasePathList[c].beSpecialPath( kiPath::Cur ); 90 + m_BasePathList[c].beBackSlash( true ); 91 + } 92 + ++c; 93 + } 94 + m_FName.forcelen( c ); 95 + m_BasePathList.forcelen( c ); 96 + return c; 97 +} 98 + 99 +//----------------------------------------------// 100 +//--- �t�@�C�����X�g�ɉ𓀃��[�`�������蓖�� ---// 101 +//----------------------------------------------// 102 + 103 +// �w�肳�ꂽ�g���q�ɑΉ����Ă��郋�[�`������`�T�� 104 +CArchiver* CNoahArchiverManager::fromExt( const char* ext ) 105 +{ 106 + kiStr tmp = ext; 107 + tmp.lower(); 108 + 109 + for( unsigned int i=0; i!=m_AList.len(); i++ ) 110 + if( m_AList[i]->extCheck( tmp ) 111 + && (m_AList[i]->ability() & aMelt) ) 112 + return m_AList[i]; 113 + return NULL; 114 +} 115 + 116 +bool CNoahArchiverManager::map_melters( int mode ) // 1:cmp 2:mlt 3:must_mlt 117 +{ 118 + // �N���A 119 + m_Melters.empty(); 120 + 121 +#define attrb (m_FName[ct].dwFileAttributes) 122 +#define lname (m_FName[ct].cFileName) 123 +#define sname (m_FName[ct].cAlternateFileName[0]==0 ? m_FName[ct].cFileName : m_FName[ct].cAlternateFileName) 124 + 125 + kiPath fnm; 126 + const char* ext; 127 + for( unsigned int ct=0, bad=0; ct!=file_num(); ct++ ) 128 + { 129 +// fnm = m_BasePath, fnm += sname; 130 + fnm = m_BasePathList[ct], fnm += sname; 131 + 132 + //-- 0byte�t�@�C�� / �f�B���N�g���͒e�� 133 + if( !(attrb & FILE_ATTRIBUTE_DIRECTORY) && 0!=kiFile::getSize( fnm, 0 ) ) 134 + { 135 + //-- �܂��Ή��g���q���ǂ����Ō��`����I�o 136 + CArchiver* x = fromExt( ext=kiPath::ext(lname) ); 137 + 138 + //-- ���`�ŁA�t�@�C�����e�ɂ��`�F�b�N 139 + if( x && x->check( fnm ) ) 140 + { 141 + m_Melters.add( x ); 142 + continue; 143 + } 144 + 145 + //-- ���`�����e�`�F�b�N�s�Ȃ��̂������炻����g�� 146 + if( x && !(x->ability() & aCheck) ) 147 + { 148 + m_Melters.add( x ); 149 + continue; 150 + } 151 + 152 + //-- ���`���_���Ȃ�A���̑��̓��e�`�F�b�N�\�ȃ��[�`���S�ĂŎ��� 153 + if( mode!=1 || 0==ki_strcmpi( "exe", ext ) ) 154 + { 155 + for( unsigned long j=0; j!=m_AList.len(); j++ ) 156 + if( m_AList[j]!=x && m_AList[j]->check( fnm ) ) 157 + { 158 + m_Melters.add( m_AList[j] ); 159 + break; 160 + } 161 + if( m_Melters.len() == ct+1 ) 162 + continue; 163 + } 164 + } 165 + 166 + //-- �`�F�b�N�̌��ʁA�𓀕s�\�ł����Ƃ� 167 + if( mode!=3 ) 168 + return false; //-- �𓀐�p���[�h�łȂ���ΏI�� 169 + m_Melters.add( NULL ), bad++; 170 + } 171 +#undef sname 172 +#undef lname 173 +#undef attrb 174 + 175 + return (ct!=bad); 176 +} 177 + 178 +//----------------------------------------------// 179 +//--- �t�@�C�����X�g�Ɉ��k���[�`�������蓖�� ---// 180 +//----------------------------------------------// 181 + 182 +bool CNoahArchiverManager::map_compressor( const char* ext, const char* method, bool sfx ) 183 +{ 184 + int m; 185 + m_Method = -1; 186 + m_Sfx = sfx; 187 + 188 + for( unsigned int i=0; i!=m_AList.len(); i++ ) 189 + if( -1 != (m=m_AList[i]->cancompressby(ext,method,sfx)) ) 190 + if( m!=-2 ) // ���S��v 191 + { 192 + m_Compressor = m_AList[i]; 193 + m_Method = m; 194 + break; 195 + } 196 + else if( m_Method == -1 ) // �`�����݈̂�v�����ŏ��̃��m 197 + { 198 + m_Compressor = m_AList[i]; 199 + m_Method = m_AList[i]->cmp_mhd_default(); 200 + } 201 + return (m_Method != -1); 202 +} 203 + 204 +//----------------------------------------------// 205 +//------------ �o�[�W��������� ------------// 206 +//----------------------------------------------// 207 + 208 +void CNoahArchiverManager::get_version( kiStr& str ) 209 +{ 210 + kiStr tmp; 211 + for( unsigned int i=0; i!=m_AList.len(); i++ ) 212 + if( m_AList[i]->ver( tmp ) ) 213 + str+=tmp, str+="\r\n"; 214 +} 215 + 216 +//----------------------------------------------// 217 +//--------------- ���k�`�����X�g ---------------// 218 +//----------------------------------------------// 219 + 220 +static unsigned int find( const cCharArray& x, const char* o ) 221 +{ 222 + for( unsigned int i=0; i!=x.len(); i++ ) 223 + if( 0==ki_strcmp( x[i], o ) ) 224 + return i; 225 + return 0xffffffff; 226 +} 227 + 228 +static unsigned int find( const StrArray& x, const char* o ) 229 +{ 230 + for( unsigned int i=0; i!=x.len(); i++ ) 231 + if( x[i]==o ) 232 + return i; 233 + return 0xffffffff; 234 +} 235 + 236 +void CNoahArchiverManager::get_cmpmethod( 237 + const char* set, 238 + int& def_mhd, 239 + StrArray& mhd_list, 240 + bool need_ext, 241 + cCharArray* ext_list ) 242 +{ 243 + def_mhd = -1; 244 + 245 + const char* x; 246 + for( unsigned int i=0; i!=m_AList.len(); i++ ) 247 + { 248 + if( *(x = m_AList[i]->cmp_ext())=='\0' ) 249 + continue; 250 + if( need_ext ) 251 + { 252 + if( -1 == find( *ext_list, x ) ) 253 + ext_list->add( x ); 254 + } 255 + if( 0 == ki_strcmp( set, x ) ) 256 + { 257 + if( mhd_list.len()==0 ) 258 + { 259 + def_mhd = m_AList[i]->cmp_mhd_default(); 260 + for( unsigned int j=0; j!=m_AList[i]->cmp_mhd_list().len(); j++ ) 261 + mhd_list.add( (m_AList[i]->cmp_mhd_list())[j] ); 262 + } 263 + else 264 + { 265 + for( unsigned int j=0; j!=m_AList[i]->cmp_mhd_list().len(); j++ ) 266 + if( -1 == find( mhd_list, (m_AList[i]->cmp_mhd_list())[j] ) ) 267 + mhd_list.add( (m_AList[i]->cmp_mhd_list())[j] ); 268 + } 269 + } 270 + } 271 + 272 + if( def_mhd == -1 ) 273 + def_mhd = 0; 274 +} 275 + 276 +//----------------------------------------------// 277 +//--------------- ���Ɉꗗ���[�h ---------------// 278 +//----------------------------------------------// 279 + 280 +#include "SubDlg.h" 281 + 282 +void CNoahArchiverManager::do_listing( kiPath& destdir ) 283 +{ 284 + kiWindow* mptr = app()->mainwnd(); 285 + kiPath ddir; 286 + int mdf = mycnf().mkdir(); 287 + bool rmn = mycnf().mnonum(); 288 + destdir.beBackSlash( true ); 289 + 290 + //-- �_�C�A���O�̌��J�E���^���N���A 291 + kiArray<CArcViewDlg*> views; 292 + CArcViewDlg::clear(); 293 + 294 + //-- �_�C�A���O�N�� 295 + for( unsigned int i=0; i!=m_FName.len(); i++ ) 296 + { 297 + if( !m_Melters[i] ) 298 + continue; 299 + 300 + arcname an( 301 + m_BasePathList[i], 302 +// m_BasePath, 303 + m_FName[i].cAlternateFileName[0]==0 ? m_FName[i].cFileName : m_FName[i].cAlternateFileName, 304 + m_FName[i].cFileName ); 305 + ddir = destdir; 306 + 307 + if( mdf ) 308 + generate_dirname( m_FName[i].cFileName, ddir, rmn ); 309 + 310 + CArcViewDlg* x = new CArcViewDlg( m_Melters[i],an,ddir ); 311 + views.add( x ); 312 + x->createModeless( NULL ); 313 + } 314 + 315 + //-- �S���I������܂őҋ@ 316 + kiWindow::msgLoop( kiWindow::GET ); 317 + 318 + //-- ���I�� 319 + app()->setMainWnd( mptr ); 320 + for( i=0; i!=views.len(); i++ ) 321 + delete views[i]; 322 +} 323 + 324 +//----------------------------------------------// 325 +//----------------- �𓀍�� -------------------// 326 +//----------------------------------------------// 327 + 328 +void CNoahArchiverManager::do_melting( kiPath& destdir ) 329 +{ 330 + //-- �ݒ胍�[�h 331 + const int mdf = mycnf().mkdir(); // Make Directory Flag( 0:no 1:no1file 2: noddir 3:yes ) 332 + const bool rmn = mycnf().mnonum(); // Remove NuMber ? 333 + 334 + //-- �o�͐� 335 + destdir.beBackSlash( true ); 336 + destdir.mkdir(), destdir.beShortPath(); 337 + 338 + for( unsigned int i=0; i!=m_FName.len(); i++ ) 339 + if( m_Melters[i] ) 340 + { 341 + //-- �o�͐� 342 + 343 + int mk=2; // 0:no 1:yes 2:??? 344 + kiPath ddir( destdir ), dnm; 345 + if( mdf==0 ) 346 + mk=0; 347 + else if( mdf==3 ) 348 + mk=1; 349 + else 350 + { 351 + kiPath anm(m_BasePathList[i]); 352 +// kiPath anm(m_BasePath); 353 + anm+=m_FName[i].cFileName; 354 + int c = m_Melters[i]->contents( anm, dnm ); 355 + if( c==aSingleDir || (c==aSingleFile && mdf==1) ) 356 + mk=0; // �Q�d�t�H���_�h�~����(��) 357 + else if( c==aMulti ) 358 + mk=1; 359 + } 360 + if( mk ) 361 + { 362 + generate_dirname( m_FName[i].cFileName, ddir, rmn ); 363 + if( mk==2 && kiSUtil::exist(ddir) ) 364 + mk=1; 365 + ddir+='\\'; 366 + ddir.mkdir(); 367 + ddir.beShortPath(); 368 + } 369 + 370 + //-- �𓀁I 371 + 372 + arcname an( m_BasePathList[i], 373 +// arcname an( m_BasePath, 374 + m_FName[i].cAlternateFileName[0]==0 ? m_FName[i].cFileName : m_FName[i].cAlternateFileName, 375 + m_FName[i].cFileName ); 376 + int result = m_Melters[i]->melt( an, ddir ); 377 + if( result<0x8000 ) 378 + { 379 + if( mk==2 ) // �Q�d�t�H���_�h�~����(��) 380 + break_ddir( ddir, mdf==2 ); 381 + else if( mk==0 && dnm.len() ) // �Q�d�t�H���_�h�~����(��) 382 + if( dnm.len()<=1 || dnm[1]!=':' ) // ��p�X�͊J���Ȃ� 383 + ddir+=dnm, ddir+='\\'; 384 + // �o�͐���J������ 385 + myapp().open_folder( ddir, 1 ); 386 + } 387 + else if( result!=0x8020 ) 388 + { 389 + //�G���[�I 390 + char str[255]; 391 + wsprintf( str, "%s\nError No: [%x]", 392 + (const char*)kiStr().loadRsrc( IDS_M_ERROR ), result ); 393 + app()->msgBox( str ); 394 + } 395 + } 396 +} 397 + 398 +void CNoahArchiverManager::generate_dirname( const char* src, kiPath& dst, bool rmn ) 399 +{ 400 + // src�Ŏ����ꂽ���ɖ�����f�B���N�g���������A 401 + // dst�֑����Brmn==true�Ȃ疖���̐������폜 402 + 403 + // ��ԍ��� . �ƍ������Ԗڂ� . ��T�� 404 + const char *fdot=NULL, *sdot=NULL, *tail; 405 + for( tail=src; *tail; tail=kiStr::next(tail) ) 406 + if( *tail=='.' ) 407 + sdot=fdot, fdot=tail; 408 + 409 + // .tar.xxx ���A.xxx.gz/.xxx.z/.xxx.bz2 �Ȃ��폜 410 + if( fdot ) 411 + { 412 + tail = fdot; 413 + if( sdot ) 414 + if( 0==::lstrcmpi(fdot,".gz") 415 + || 0==::lstrcmpi(fdot,".z") 416 + || 0==::lstrcmpi(fdot,".bz2") 417 + || (sdot+4==fdot 418 + && (sdot[1]=='t'||sdot[1]=='T') 419 + && (sdot[2]=='a'||sdot[2]=='A') 420 + && (sdot[3]=='r'||sdot[3]=='R') 421 + )) 422 + tail = sdot; 423 + } 424 + 425 + // �����̐�����'-'��'_'��'.'�폜�B���p�X�y�[�X���B 426 + bool del[256]; 427 + ki_memzero( del, sizeof(del) ); 428 + if( rmn ) 429 + { 430 + del['-'] = del['_'] = del['.'] = true; 431 + for( char c='0'; c<='9'; ++c ) 432 + del[c] = true; 433 + } 434 + del[' '] = true; 435 + 436 + const char* mjs=NULL; 437 + for( const char *x=src; x<tail; x=kiStr::next(x) ) 438 + if( !del[(unsigned char)(*x)] ) 439 + mjs = NULL; 440 + else if( !mjs ) 441 + mjs = x; 442 + if( mjs && mjs!=src ) 443 + tail = mjs; 444 + 445 + // ��ɂȂ��Ă��܂����� "noahmelt" �Ƃ������O�ɂ��Ă��܂��B 446 + if( src==tail ) 447 + dst += "noahmelt"; 448 + else 449 + while( src!=tail ) 450 + dst += *src++; 451 +} 452 + 453 +bool CNoahArchiverManager::break_ddir( kiPath& dir, bool onlydir ) 454 +{ 455 +// �Q�d�t�H���_ or �P��t�@�C�� ��Ԃ����� 456 +// 457 +// �f���Ɋi�[�t�@�C��������x��������̂��{���Ȃ�ł����A 458 +// ���ɋ��发�ɂ̎����x�ቺ���������̂ƁAFindFirst�n�� 459 +// �T�|�[�g����DLL������G���W���ȊO�ɑΉ��ł��Ȃ��Ƃ��� 460 +// ���_�����邽�߁A���ς�炸 Noah 2.xx �Ɠ�����@�ł��B 461 + 462 +//-- ���ɂP���������ĂȂ����Ƃ��m�F ----------------- 463 + char wild[MAX_PATH]; 464 + ki_strcpy( wild, dir ); 465 + ki_strcat( wild, "*.*" ); 466 + kiFindFile find; 467 + if( !find.begin( wild ) ) 468 + return false; 469 + WIN32_FIND_DATA fd,fd2,fd3; 470 + find.next( &fd ); 471 + if( find.next( &fd2 ) ) 472 + return false; 473 + find.close(); 474 +//---------------------------------------------------- 475 + 476 +//-- to:�ŏI�ړ���t�@�C�����B���łɁA�J�����gDir�͏����Ȃ����̉���� ----- 477 + kiPath to(dir); to.beBackSlash( false ), to.beDirOnly(); 478 + ::SetCurrentDirectory( to ); 479 + to += fd.cFileName; 480 +//------------------------------------------------------------------------- 481 + 482 +//-- �t�@�C���������ꍇ -------------------------------------- 483 + if( !(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) 484 + { 485 + if( !onlydir ) 486 + { 487 + // now ���݂̃t�@�C���� 488 + kiStr now=dir; now+=fd.cFileName; 489 + 490 + // now -> to �ړ� 491 + if( ::MoveFile( now, to ) ) 492 + { 493 + dir.remove(); 494 + dir.beBackSlash( false ), dir.beDirOnly(); 495 + return true; 496 + } 497 + } 498 + } 499 +//-- �t�H���_�������ꍇ ---------------------------------------- 500 + else 501 + { 502 + // 'base/aaa/aaa/' ���ƒ���aaa���O��move�ł��Ȃ��B 503 + // ����āA�����B-> 'base/aaa_noah_tmp_178116/aaa/' 504 + 505 + dir.beBackSlash( false ); 506 + kiFindFile::findfirst( dir, &fd3 ); 507 + kiPath dirx( dir ); dirx+="_noah_tmp_178116"; 508 + 509 + if( ::MoveFile( dir, dirx ) ) 510 + { 511 + // now ���݂̃t�@�C���� 512 + kiStr now( dirx ); now+='\\', now+=fd.cFileName; 513 + 514 + // �f�B���N�g�����ړ� 515 + if( ::MoveFile( now, to ) ) 516 + { 517 + dirx.remove(); 518 + dir=to, dir.beBackSlash( true ); 519 + return true; 520 + } 521 + else 522 + { 523 + // 'base/aaa_noah_tmp_178116/aaa/' -> 'base/aaa/aaa/' 524 + dir.beDirOnly(), dir+=fd3.cFileName; 525 + ::MoveFile( dirx, dir ); 526 + } 527 + } 528 + 529 + dir.beBackSlash( true ); 530 + } 531 +//------------------------------------------------------------ 532 + return false; 533 +} 534 + 535 +//----------------------------------------------// 536 +//----------------- ���k��� -------------------// 537 +//----------------------------------------------// 538 + 539 +void CNoahArchiverManager::do_compressing( kiPath& destdir, bool each ) 540 +{ 541 + int result = 0xffff, tr; 542 + 543 + // �o�͐���m���ɍ���Ă��� 544 + destdir.beBackSlash( true ); 545 + destdir.mkdir(); 546 + destdir.beShortPath(); 547 + 548 + // �ʈ��k���[�h���AArchiving�s�̌`���Ȃ����� 549 + if( each || !(m_Compressor->ability() & aArchive) ) 550 + { 551 + wfdArray templist; 552 + 553 + for( unsigned int i=0; i!=m_FName.len(); i++ ) 554 + { 555 + templist.empty(); 556 + templist.add( m_FName[i] ); 557 + tr = m_Compressor->compress( m_BasePath,templist,destdir,m_Method,m_Sfx ); 558 + if( tr<0x8000 || tr==0x8020 ) 559 + result = tr; 560 + } 561 + } 562 + else 563 + result = m_Compressor->compress( m_BasePath,m_FName,destdir,m_Method,m_Sfx ); 564 + 565 + // �J������ 566 + if( result<0x8000 ) 567 + myapp().open_folder( destdir, 2 ); 568 + else if( result!=0x8020 ) 569 + { 570 + //�G���[�I 571 + char str[255]; 572 + wsprintf( str, "%s\nError No: [%x]", "Compression Error", result ); 573 + app()->msgBox( str ); 574 + } 575 +}
Added NoahAM.h version [1bc7e46b14f145cf]
1 +// NoahAM.h 2 +//-- CNoahArchiverManager -- control many archiver routines -- 3 + 4 +#ifndef AFX_NOAHAM_H__CCE30761_D91B_4570_931A_6C165B19B22F__INCLUDED_ 5 +#define AFX_NOAHAM_H__CCE30761_D91B_4570_931A_6C165B19B22F__INCLUDED_ 6 + 7 +#include "Archiver.h" 8 + 9 +class CNoahArchiverManager 10 +{ 11 +public: //-- �O�����C���^�[�t�F�C�X ------------ 12 + 13 + // ������ 14 + void init(); 15 + 16 + // �t�@�C�����X�g���L�� 17 + unsigned long set_files( const cCharArray& files ); 18 + unsigned long file_num() { return m_FName.len(); } 19 + const kiPath& get_basepath() { return m_BasePath; } 20 + bool map_melters( int mode ); 21 + bool map_compressor( const char* ext, const char* method, bool sfx ); 22 + 23 + // ��( �𓀐�Dir�ȊO�̏��͒��ŏ���Ɏ擾���܂� ) 24 + void do_melting( kiPath& destdir ); 25 + // �{��( �𓀐�Dir�ȊO�̏��͒��ŏ���Ɏ擾���܂� ) 26 + void do_listing( kiPath& destdir ); 27 + // ���k 28 + void do_compressing( kiPath& destdir, bool each ); 29 + 30 + 31 + // �o�[�W������� 32 + void get_version( kiStr& str ); 33 + // ���k�`�����X�g 34 + void get_cmpmethod( const char* set, int& def_mhd, StrArray& mhd_list, bool need_ext=false, cCharArray* ext_list=NULL ); 35 + // b2e����ȏ�ǂݍ��܂�Ă����true 36 + bool b2e_enabled() { return m_b2e; } 37 + 38 + 39 +private: //-- �������� --------------------------- 40 + 41 + // �Q�d�t�H���_�����Ȃ� 42 + bool break_ddir( kiPath& dir, bool onlydir ); 43 + CArchiver* fromExt( const char* ext ); 44 + void generate_dirname( const char* src, kiPath& dst, bool rmn ); 45 + 46 + kiPath m_BasePath; 47 + wfdArray m_FName; 48 + kiArray<CArchiver*> m_AList; 49 + kiArray<kiPath> m_BasePathList; 50 + bool m_b2e; 51 + 52 + // �𓀗p���蓖�� 53 + kiArray<CArchiver*> m_Melters; 54 + // ���k�p���蓖�� 55 + CArchiver* m_Compressor; 56 + int m_Method; 57 + bool m_Sfx; 58 + 59 +public: 60 + ~CNoahArchiverManager() 61 + { 62 + for( unsigned int i=0; i!=m_AList.len(); i++ ) 63 + delete m_AList[i]; 64 + } 65 +}; 66 + 67 +#endif
Added NoahApp.h version [6cb90051bc141532]
1 +// NoahApp.h 2 +//-- CNoahApp -- application object of 'Noah' -- 3 + 4 +#ifndef AFX_NOAHAPP_H__11AA6C03_4946_4279_B79C_F28896001357__INCLUDED_ 5 +#define AFX_NOAHAPP_H__11AA6C03_4946_4279_B79C_F28896001357__INCLUDED_ 6 + 7 +#include "NoahAM.h" 8 +#include "NoahCM.h" 9 + 10 +class CNoahApp : public kiApp 11 +{ 12 +public: //-- �O�����C���^�[�t�F�C�X ------ 13 + 14 + //-- ���k/�𓀍�� 15 + void do_cmdline( bool directcall=false ); 16 + void do_files( const cCharArray& files, 17 + const cCharArray* opts=NULL, 18 + bool basicaly_ignore=false ); 19 + 20 + //-- �G�p(��) 21 + void open_folder( const kiPath& path,int from=0 ); 22 + void get_tempdir( kiPath& tmp ); 23 + bool is_writable_dir( const kiPath& path ); 24 + 25 + //-- Noah�I�u�W�F�N�g�擾�p�}�N�� 26 +# define myapp() (*(CNoahApp*)app()) 27 +# define myarc() (*(((CNoahApp*)app())->arc())) 28 +# define mycnf() (*(((CNoahApp*)app())->cnf())) 29 + 30 +public: //-- �������� -------------------- 31 + 32 + CNoahArchiverManager* arc(){ return &m_arcMan; } 33 + CNoahConfigManager* cnf() { return &m_cnfMan; } 34 +private: 35 + void run( kiCmdParser& cmd ); 36 + 37 + CNoahArchiverManager m_arcMan; 38 + CNoahConfigManager m_cnfMan; 39 + kiCmdParser* m_pCmd; 40 + 41 + kiPath m_tmpDir; 42 + UINT m_tmpID; 43 +}; 44 + 45 +#endif
Added NoahCM.cpp version [285630280e899bbb]
1 +// NoahCM.cpp 2 +//-- CNoahConfigManager -- save / load / modify the setting of 'Noah' -- 3 + 4 +#include "stdafx.h" 5 +#include "resource.h" 6 +#include "NoahApp.h" 7 +#include "NoahCM.h" 8 + 9 +//----------------------------------------------// 10 +//---------- INI�t�@�C�����̐ݒ�Ȃ� -----------// 11 +//----------------------------------------------// 12 + 13 +void CNoahConfigManager::init() 14 +{ 15 + //-- caldix.ini�����������DLL�C���X�g�[�����ǂݍ��݁B���ϐ��ɒlj� 16 + { 17 + kiIniFile caldini; 18 + caldini.setFileName( "caldix.ini" ); 19 + caldini.setSection( "conf" ); 20 + kiStr dll_to = caldini.getStr( "dll", "" ); 21 + if( dll_to.len() != 0 ) 22 + { 23 + int siz = ::GetEnvironmentVariable( "PATH", NULL, 0 ); 24 + char* buf = new char[siz+1]; 25 + ::GetEnvironmentVariable( "PATH", buf, siz+1 ); 26 + ::SetEnvironmentVariable( "PATH", (kiStr(buf)+=";")+=dll_to ); 27 + delete [] buf; 28 + } 29 + } 30 + 31 + //-- �ݒ�ǂݍ��ݍς݃t���O���N���A 32 + m_Loaded = 0; 33 + 34 + //-- ini�t�@�C�����ݒ� 35 + char usr[256]; 36 + DWORD siz=sizeof(usr); 37 + if( !::GetUserName( usr, &siz ) ) 38 + ki_strcpy( usr, "Default" ); 39 + m_Ini.setFileName( "Noah.ini" ); 40 + m_Ini.setSection( usr ); 41 + 42 + //-- �𓀗p�ݒ�͑S�����[�h���Ă��� 43 + load( Melt ); 44 +} 45 + 46 +//----------------------------------------------// 47 +//------------ �ݒ�� load & save --------------// 48 +//----------------------------------------------// 49 + 50 +typedef bool (WINAPI * XT_IA)(); 51 +typedef void (WINAPI * XT_LS)(bool*,bool*); 52 +typedef void (WINAPI * XT_SS)(bool,bool); 53 +typedef void (WINAPI * XT_AS)(bool*); 54 +typedef void (WINAPI * XT_LSEX)(const char*,bool*); 55 +typedef void (WINAPI * XT_SSEX)(const char*,bool); 56 + 57 +void CNoahConfigManager::load( loading_flag what ) 58 +{ 59 + if( (what & Mode) && !(m_Loaded & Mode) ) //----------- ���[�h 60 + { 61 + m_Mode = m_Ini.getInt( "Mode", 2 ) & 3; 62 + m_MiniBoot = m_Ini.getBool( "MiniBoot", false ); 63 + m_OneExt = m_Ini.getBool( "OneExt", false ); 64 + m_ZeroExt = m_Ini.getBool( "NoExt", false ); 65 + m_MbLim = max( 1, m_Ini.getInt( "MultiBootLimit", 4 ) ); 66 + } 67 + if( (what & Melt) && !(m_Loaded & Melt) ) //----------- �� 68 + { 69 + const char* x = m_Ini.getStr( "MDir", kiPath( kiPath::Dsk ) ); 70 + m_MDirSm = (*x=='@'); 71 + m_MDir = (*x=='@') ? x+1 : x; 72 + const int m = m_Ini.getInt( "MkDir", 2 ); 73 + m_MNoNum = ( m>=16 ); 74 + m_MkDir = ( m&3 ); 75 + m_Kill = m_Ini.getStr( "Kill", "" ); 76 + } 77 + if( (what & Compress) && !(m_Loaded & Compress) ) //--- ���k 78 + { 79 + const char* x = m_Ini.getStr( "CDir", kiPath( kiPath::Dsk ) ); 80 + m_CDirSm = (*x=='@'); 81 + m_CDir = (*x=='@') ? x+1 : x; 82 + m_CExt = m_Ini.getStr( "CExt", "zip" ); 83 + m_CMhd = m_Ini.getStr( "CMhd", "7-zip" ); 84 + } 85 + if( (what & Shell) && !(m_Loaded & Shell) ) //---------- �V���[�g�J�b�g 86 + //---------- �֘A�Â� 87 + //---------- �V�F���G�N�X�e���V���� 88 + { 89 + m_OldVer = m_Ini.getBool( "OldAbout", false ); 90 + 91 + kiPath SndLink(kiPath::Snd),DskLink(kiPath::Dsk); 92 + SndLink += "Noah.lnk", DskLink += "Noah.lnk"; 93 + m_SCSendTo = kiSUtil::exist(SndLink); 94 + m_SCDesktop= kiSUtil::exist(DskLink); 95 + 96 + m_bShlOK = NOSHL; 97 + m_hNoahXtDLL = kiSUtil::loadLibrary( "NoahXt" ); 98 + if( m_hNoahXtDLL ) 99 + { 100 + XT_IA Init = (XT_IA)getProc( "Init" ); 101 + m_bShlOK = ( Init() ? SHLOK : NOADMIN ); 102 + XT_LS LoadSE = (XT_LS)getProc( "LoadSE" ); 103 + XT_AS LoadAssoc = (XT_AS)getProc( "LoadAS" ); 104 + XT_LSEX LoadASEx = (XT_LSEX)getProc( "LoadASEx" ); 105 + LoadSE( &m_SECmp, &m_SEExt ); 106 + LoadAssoc( m_bAsso ); 107 + LoadASEx( "7z\0", &m_bAsso[12] ); 108 + } 109 + } 110 + if( (what & OpenDir) && !(m_Loaded & OpenDir) ) //------ �t�H���_�I�[�v�� 111 + { 112 + m_MODir = m_Ini.getBool( "MODir", true ); 113 + m_CODir = m_Ini.getBool( "CODir", true ); 114 + m_OpenBy = m_Ini.getStr( "OpenBy", kiPath(kiPath::Win)+"explorer.exe \"%s\"" ); 115 + } 116 + 117 + m_Loaded |= what; 118 +} 119 + 120 +void CNoahConfigManager::save() 121 +{ 122 + kiStr tmp; 123 + 124 + //-- ���[�h 125 + m_Ini.putInt( "Mode", m_Mode ); 126 + //-- �� 127 + tmp = m_MDirSm ? "@" : "", tmp+= m_MDir; 128 + m_Ini.putStr( "MDir", tmp ); 129 + m_Ini.putInt( "MkDir", m_MkDir+(m_MNoNum?16:0) ); 130 + //-- ���k 131 + tmp = m_CDirSm ? "@" : "", tmp+= m_CDir; 132 + m_Ini.putStr( "CDir", tmp ); 133 + m_Ini.putStr( "CExt", m_CExt ); 134 + m_Ini.putStr( "CMhd", m_CMhd ); 135 + //-- �V���[�g�J�b�g 136 + kiPath SndLink(kiPath::Snd); SndLink += "Noah.lnk"; 137 + kiPath DskLink(kiPath::Dsk); DskLink += "Noah.lnk"; 138 + if( m_SCSendTo ) 139 + { 140 + if( !kiSUtil::exist(SndLink) ) 141 + kiSUtil::createShortCut( kiPath(kiPath::Snd), "Noah" ); 142 + } 143 + else 144 + ::DeleteFile(SndLink); 145 + if( m_SCDesktop ) 146 + { 147 + if( !kiSUtil::exist(DskLink) ) 148 + kiSUtil::createShortCut( kiPath(kiPath::Dsk), "Noah" ); 149 + } 150 + else 151 + ::DeleteFile(DskLink); 152 + //-- �֘A�Â��E�V�F���G�N�X�e���V���� 153 + if( m_bShlOK ) 154 + { 155 + XT_SS SaveSE = (XT_SS)getProc( "SaveSE" ); 156 + XT_AS SaveAssoc = (XT_AS)getProc( "SaveAS" ); 157 + XT_SSEX SaveASEx = (XT_SSEX)getProc( "SaveASEx" ); 158 + SaveSE( m_SECmp, m_SEExt ); 159 + SaveAssoc( m_bAsso ); 160 + SaveASEx( "7z\0", m_bAsso[12] ); 161 + } 162 + //-- �t�H���_�I�[�v�� 163 + m_Ini.putBool("MODir", m_MODir ); 164 + m_Ini.putBool("CODir", m_CODir ); 165 +} 166 + 167 +void CNoahConfigManager::dialog() 168 +{ 169 + CNoahConfigDialog dlg; 170 + dlg.createModeless( NULL ); 171 + 172 + app()->setMainWnd( &dlg ); 173 + 174 + if( dlg.isAlive() ) 175 + kiWindow::msgLoop(); 176 +} 177 + 178 +FARPROC CNoahConfigManager::getProc( const char* name ) 179 +{ 180 + return ::GetProcAddress( m_hNoahXtDLL, name ); 181 +} 182 + 183 +//----------------------------------------------// 184 +//--------------- �_�C�A���O�W ---------------// 185 +//----------------------------------------------// 186 + 187 +///////// ������ ///////////// 188 + 189 +#define IDI_LZH 101 190 +#define IDI_ZIP 102 191 +#define IDI_CAB 103 192 +#define IDI_RAR 104 193 +#define IDI_TAR 105 194 +#define IDI_YZ1 106 195 +#define IDI_GCA 107 196 +#define IDI_ARJ 108 197 +#define IDI_BGA 109 198 +#define IDI_ACE 110 199 +#define IDI_OTH 111 200 +#define IDI_JAK 112 201 + 202 +#define icon_is(_x) { if( mycnf().m_hNoahXtDLL ) setIcon( ::LoadIcon( mycnf().m_hNoahXtDLL, MAKEINTRESOURCE(_x) ) ); } 203 + CNoahConfigDialog::CCmprPage::CCmprPage() : kiPropSheetPage( IDD_CMPCFG ) icon_is( IDI_ACE ) 204 + CNoahConfigDialog::CMeltPage::CMeltPage() : kiPropSheetPage( IDD_MLTCFG ) icon_is( IDI_LZH ) 205 + CNoahConfigDialog::CWinXPage::CWinXPage() : kiPropSheetPage( IDD_WINCFG ) icon_is( IDI_YZ1 ) 206 + CNoahConfigDialog::CInfoPage::CInfoPage() : kiPropSheetPage( IDD_INFCFG ) icon_is( IDI_GCA ) 207 +#undef icon_is 208 + 209 +CNoahConfigDialog::CNoahConfigDialog() 210 +{ 211 + //-- [icon] Noah�̃v���p�e�B 212 + m_Header.dwFlags |= PSH_PROPTITLE | PSH_USEICONID; 213 + m_Header.pszIcon = MAKEINTRESOURCE( IDI_MAIN ); 214 + m_Header.pszCaption = "Noah"; 215 + 216 + //-- �A�N�Z�����[�^���Z�b�g 217 + loadAccel( IDR_ACCEL ); 218 + 219 + //-- �y�[�W���ǂ��ǂ��ƒlj� 220 + m_Pages.add( new CCmprPage ); 221 + m_Pages.add( new CMeltPage ); 222 + m_Pages.add( new CWinXPage ); 223 + m_Pages.add( new CInfoPage ); 224 +} 225 + 226 +BOOL CNoahConfigDialog::onInit() 227 +{ 228 + //-- DnD ON, �O�ʂ� 229 + ::DragAcceptFiles( hwnd(), TRUE ); 230 + setFront( hwnd() ); 231 + return FALSE; 232 +} 233 + 234 +///////// �e��R�}���h ///////////// 235 + 236 +void CNoahConfigDialog::onCommand( UINT id ) 237 +{ 238 + //-- �A�N�Z�����[�^�g���b�v 239 + if( id == IDA_HELP ) onHelp(); 240 + else if( id == IDA_MYDIR ) myapp().open_folder( kiPath( kiPath::Exe ) ); 241 +} 242 + 243 +void CNoahConfigDialog::onHelp() 244 +{ 245 + kiPath exepos( kiPath::Exe ); 246 + 247 + //-- exe�Ɠ����ӏ��ɂ���manual.htm���N�� 248 + kiPath hlp(exepos); hlp+="manual.htm"; 249 + if( kiSUtil::exist(hlp) ) 250 + ::ShellExecute( hwnd(), NULL, hlp, NULL, NULL, SW_MAXIMIZE ); 251 + else 252 + { 253 + //-- �������readme.txt�� 254 + hlp=exepos; hlp+="readme.txt"; 255 + if( kiSUtil::exist(hlp) ) 256 + ::ShellExecute( hwnd(), NULL, hlp, NULL, NULL, SW_SHOWDEFAULT ); 257 + } 258 +} 259 + 260 +void CNoahConfigDialog::onDrop( HDROP hdrop ) 261 +{ 262 + //-- �_�C�A���O�ւ̃h���b�O���h���b�v 263 + sendOK2All(); 264 + 265 + //-- �r���Ŏז��ɂȂ�Ȃ��悤�ɁA������ 266 + ::ShowWindow( hwnd(), SW_HIDE ); 267 + 268 + char str[MAX_PATH]; 269 + StrArray reallist; 270 + cCharArray dummy; 271 + 272 + unsigned long max = ::DragQueryFile( hdrop, 0xffffffff, NULL, 0 ); 273 + for( unsigned int i=0; i!=max; i++ ) 274 + { 275 + ::DragQueryFile( hdrop, i, str, MAX_PATH ); 276 + reallist.add( kiStr(str) ); 277 + } 278 + for( i=0; i!=max; i++ ) 279 + dummy.add( (const char*)reallist[i] ); 280 + myapp().do_files( dummy, NULL ); 281 + 282 + // ���A 283 + ::DragFinish( hdrop ); 284 + ::ShowWindow( hwnd(), SW_SHOW ); 285 +} 286 + 287 +///////// �I���������Ȃ� ///////////// 288 + 289 +void CNoahConfigDialog::shift_and_button() 290 +{ 291 + if( app()->keyPushed( VK_SHIFT ) ) 292 + { 293 + app()->setMainWnd( NULL ); 294 + myapp().do_cmdline(); 295 + } 296 +} 297 + 298 +bool CNoahConfigDialog::onOK() 299 +{ 300 + onApply(); 301 + ::PostQuitMessage( 0 ); 302 + return true; 303 +} 304 + 305 +void CNoahConfigDialog::onApply() 306 +{ 307 + mycnf().save(); 308 + shift_and_button(); 309 +} 310 + 311 +bool CNoahConfigDialog::onCancel() 312 +{ 313 + sendOK2All(); 314 + ::ShowWindow( hwnd(), SW_HIDE ); 315 + shift_and_button(); 316 + ::PostQuitMessage( 0 ); 317 + return true; 318 +} 319 + 320 +///////// ���k�ݒ�E�𓀐ݒ�̋��ʕ��� ///////////// 321 + 322 +static void dirinit( kiDialog* dlg, bool same, bool open, const char* dir ) 323 +{ 324 + dlg->sendMsgToItem( same ? IDC_DDIR1 : IDC_DDIR2 , BM_SETCHECK, TRUE ); 325 + if( open ) 326 + dlg->sendMsgToItem( IDC_ODIR , BM_SETCHECK, TRUE ); 327 + dlg->sendMsgToItem( IDC_DDIR , WM_SETTEXT , 0, (LPARAM)dir ); 328 +} 329 + 330 +static void dirok( kiDialog* dlg, bool& same, bool& open, kiPath& dir ) 331 +{ 332 + same = ( BST_CHECKED==dlg->sendMsgToItem( IDC_DDIR1, BM_GETCHECK ) ); 333 + open = ( BST_CHECKED==dlg->sendMsgToItem( IDC_ODIR, BM_GETCHECK ) ); 334 + static char str[MAX_PATH]; 335 + dlg->sendMsgToItem( IDC_DDIR, WM_GETTEXT, MAX_PATH, (LPARAM)str ); 336 + dir = str; 337 +} 338 + 339 +static bool dirdlg( kiDialog* dlg, UINT msg, WPARAM wp ) 340 +{ 341 + if( msg==WM_COMMAND && LOWORD(wp)==IDC_REF ) 342 + { 343 + kiSUtil::getFolderDlgOfEditBox( 344 + dlg->item(IDC_DDIR), dlg->hwnd(), kiStr().loadRsrc(IDS_CHOOSEDIR) ); 345 + return true; 346 + } 347 + return false; 348 +} 349 + 350 +///////// ���k�ݒ� ///////////// 351 + 352 +BOOL CNoahConfigDialog::CCmprPage::onInit() 353 +{ 354 + // ���k��t�H���_ 355 + dirinit( this, mycnf().cdirsm(), mycnf().codir(), mycnf().cdir() ); 356 + 357 + // ���샂�[�h 358 + sendMsgToItem( IDC_MODE1 + mycnf().mode(), BM_SETCHECK, TRUE ); 359 + 360 + // ���k�`�� 361 + correct( mycnf().cext(), true ); 362 + int ind=sendMsgToItem( IDC_CMPMHD, CB_FINDSTRINGEXACT, -1, (LPARAM)(const char*)mycnf().cmhd() ); 363 + if( ind!=CB_ERR ) 364 + sendMsgToItem( IDC_CMPMHD, CB_SETCURSEL, ind ); 365 + 366 + // �c�[���`�b�v 367 + m_tooltip = ::CreateWindowEx( 368 + 0, TOOLTIPS_CLASS, NULL, TTS_ALWAYSTIP, 369 + CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 370 + hwnd(), NULL, app()->inst(), NULL ); 371 + SetUpToolTip(); 372 + 373 + ::SetFocus(hwnd()); 374 + return TRUE; 375 +} 376 + 377 +bool CNoahConfigDialog::CCmprPage::onOK() 378 +{ 379 + // ���k��t�H���_ 380 + dirok( this, mycnf().m_CDirSm, mycnf().m_CODir, mycnf().m_CDir ); 381 + 382 + // ���샂�[�h 383 + for( int i=0; i!=4; i++ ) 384 + if( BST_CHECKED==sendMsgToItem( IDC_MODE1 + i, BM_GETCHECK ) ) 385 + { mycnf().m_Mode = i; break; } 386 + 387 + // ���k�`�� 388 + char str[200]=""; 389 + sendMsgToItem( IDC_CMPEXT, CB_GETLBTEXT, sendMsgToItem( IDC_CMPEXT, CB_GETCURSEL ), (LPARAM)str ); 390 + if( *str ) 391 + { 392 + mycnf().m_CExt = str; 393 + sendMsgToItem( IDC_CMPMHD, CB_GETLBTEXT, sendMsgToItem( IDC_CMPMHD, CB_GETCURSEL ), (LPARAM)str ); 394 + mycnf().m_CMhd = str; 395 + } 396 + 397 + onCancel(); // �I������ 398 + return true; 399 +} 400 + 401 +bool CNoahConfigDialog::CCmprPage::onCancel() 402 +{ 403 + // �I������ 404 + ::DestroyWindow( m_tooltip ); 405 + return true; 406 +} 407 + 408 +void CNoahConfigDialog::CCmprPage::SetUpToolTip() 409 +{ 410 + char ext[200]=""; 411 + sendMsgToItem( IDC_CMPEXT, CB_GETLBTEXT, sendMsgToItem( IDC_CMPEXT, CB_GETCURSEL ), (LPARAM)ext ); 412 + char mhd[200]=""; 413 + sendMsgToItem( IDC_CMPMHD, CB_GETLBTEXT, sendMsgToItem( IDC_CMPMHD, CB_GETCURSEL ), (LPARAM)mhd ); 414 + 415 + TOOLINFO ti = {sizeof(TOOLINFO)}; 416 + ti.uFlags = TTF_SUBCLASS; 417 + { 418 + ti.uId = 0; 419 + ti.hwnd = item(IDC_CMPEXT); 420 + ::GetClientRect( item(IDC_CMPEXT), &ti.rect ); 421 + SendMessage( m_tooltip, TTM_DELTOOL, 0, (LPARAM)&ti ); 422 + if( *ext ) 423 + { 424 + ti.lpszText = ext; 425 + SendMessage( m_tooltip, TTM_ADDTOOL, 0, (LPARAM)&ti ); 426 + } 427 + } 428 + { 429 + ti.uId = 1; 430 + ti.hwnd = item(IDC_CMPMHD); 431 + ::GetClientRect( item(IDC_CMPMHD), &ti.rect ); 432 + SendMessage( m_tooltip, TTM_DELTOOL, 0, (LPARAM)&ti ); 433 + if( *mhd ) 434 + { 435 + ti.lpszText = mhd; 436 + SendMessage( m_tooltip, TTM_ADDTOOL, 0, (LPARAM)&ti ); 437 + } 438 + } 439 +} 440 + 441 +BOOL CALLBACK CNoahConfigDialog::CCmprPage::proc( UINT msg, WPARAM wp, LPARAM lp ) 442 +{ 443 + if( dirdlg( this, msg, wp ) ) 444 + return TRUE; 445 + 446 + if( msg==WM_COMMAND && HIWORD(wp)==CBN_SELCHANGE && LOWORD(wp)==IDC_CMPEXT ) 447 + { 448 + char str[200]=""; 449 + sendMsgToItem( IDC_CMPEXT, CB_GETLBTEXT, sendMsgToItem( IDC_CMPEXT, CB_GETCURSEL ), (LPARAM)str ); 450 + if( *str ) 451 + correct( str, false ); 452 + SetUpToolTip(); 453 + return TRUE; 454 + } 455 + else if( msg==WM_COMMAND && HIWORD(wp)==CBN_SELCHANGE && LOWORD(wp)==IDC_CMPMHD ) 456 + { 457 + SetUpToolTip(); 458 + } 459 + return FALSE; 460 +} 461 + 462 +void CNoahConfigDialog::CCmprPage::correct( const char* ext, bool first ) 463 +{ 464 + cCharArray extl; 465 + StrArray mhdl; 466 + int mhdef; 467 + myarc().get_cmpmethod( ext, mhdef, mhdl, first, &extl ); 468 + 469 + if( first ) 470 + for( unsigned int i=0; i!=extl.len(); i++ ) 471 + sendMsgToItem( IDC_CMPEXT, CB_ADDSTRING, 0, (LPARAM)extl[i] ); 472 + sendMsgToItem( IDC_CMPEXT, CB_SELECTSTRING, 0, (LPARAM)ext ); 473 + 474 + sendMsgToItem( IDC_CMPMHD, CB_RESETCONTENT ); 475 + for( unsigned int j=0; j!=mhdl.len(); j++ ) 476 + sendMsgToItem( IDC_CMPMHD, CB_ADDSTRING, 0, (LPARAM)(const char*)mhdl[j] ); 477 + sendMsgToItem( IDC_CMPMHD, CB_SETCURSEL, mhdef ); 478 +} 479 + 480 + 481 +///////// �𓀐ݒ� ///////////// 482 + 483 +BOOL CNoahConfigDialog::CMeltPage::onInit() 484 +{ 485 + // �𓀐�t�H���_ 486 + dirinit( this, mycnf().mdirsm(), mycnf().modir(), mycnf().mdir() ); 487 + 488 + // �t�H���_�������� 489 + if( mycnf().mkdir()!=0 ) 490 + sendMsgToItem( IDC_MKDIR ,BM_SETCHECK, TRUE ); 491 + if( mycnf().mkdir()==1 ) 492 + sendMsgToItem( IDC_MKDIR1,BM_SETCHECK, TRUE ); 493 + if( mycnf().mkdir()==2 ) 494 + sendMsgToItem( IDC_MKDIR2,BM_SETCHECK, TRUE ); 495 + if( mycnf().mnonum() ) 496 + sendMsgToItem( IDC_MKDIR3,BM_SETCHECK, TRUE ); 497 + correct(); 498 + 499 + return FALSE; 500 +} 501 + 502 +bool CNoahConfigDialog::CMeltPage::onOK() 503 +{ 504 + // �𓀐�t�H���_ 505 + dirok( this, mycnf().m_MDirSm, mycnf().m_MODir, mycnf().m_MDir ); 506 + 507 + // �t�H���_�������� 508 + mycnf().m_MNoNum = ( BST_CHECKED==sendMsgToItem( IDC_MKDIR3, BM_GETCHECK ) ); 509 + if( BST_CHECKED!=sendMsgToItem( IDC_MKDIR ,BM_GETCHECK ) ) 510 + mycnf().m_MkDir = 0; 511 + else 512 + { 513 + if( BST_CHECKED==sendMsgToItem( IDC_MKDIR1 ,BM_GETCHECK ) ) 514 + mycnf().m_MkDir = 1; 515 + else if( BST_CHECKED==sendMsgToItem( IDC_MKDIR2 ,BM_GETCHECK ) ) 516 + mycnf().m_MkDir = 2; 517 + else 518 + mycnf().m_MkDir = 3; 519 + } 520 + return true; 521 +} 522 + 523 +BOOL CALLBACK CNoahConfigDialog::CMeltPage::proc( UINT msg, WPARAM wp, LPARAM lp ) 524 +{ 525 + if( dirdlg( this, msg, wp ) ) 526 + return TRUE; 527 + 528 + if( msg==WM_COMMAND ) 529 + if( LOWORD(wp)==IDC_MKDIR || LOWORD(wp)==IDC_MKDIR1 ) 530 + { 531 + correct(); 532 + return TRUE; 533 + } 534 + 535 + return FALSE; 536 +} 537 + 538 +void CNoahConfigDialog::CMeltPage::correct() 539 +{ 540 + BOOL _mk = ( BST_CHECKED==sendMsgToItem( IDC_MKDIR ,BM_GETCHECK ) ); 541 + BOOL _1f = ( BST_CHECKED==sendMsgToItem( IDC_MKDIR1,BM_GETCHECK ) ); 542 + ::EnableWindow( ::GetDlgItem(hwnd(),IDC_MKDIR1), _mk ); 543 + ::EnableWindow( ::GetDlgItem(hwnd(),IDC_MKDIR2), _mk && !_1f ); 544 + ::EnableWindow( ::GetDlgItem(hwnd(),IDC_MKDIR3), _mk ); 545 + if( _1f ) 546 + sendMsgToItem( IDC_MKDIR2, BM_SETCHECK, TRUE ); 547 +} 548 + 549 +///////// Windows�g���ݒ� ///////////// 550 + 551 +BOOL CNoahConfigDialog::CWinXPage::onInit() 552 +{ 553 + if( !mycnf().m_bShlOK ) 554 + for( UINT i=IDC_LZH; i<=IDC_MLT; i++ ) 555 + ::EnableWindow( item(i), FALSE ); 556 + else 557 + { 558 + for( UINT i=IDC_LZH; i<=IDC_7Z; i++ ) 559 + if( mycnf().m_bAsso[i-IDC_LZH] ) 560 + sendMsgToItem( i, BM_SETCHECK, TRUE ); 561 + if( mycnf().m_SECmp ) 562 + sendMsgToItem( IDC_CMP ,BM_SETCHECK, TRUE ); 563 + if( mycnf().m_SEExt ) 564 + sendMsgToItem( IDC_MLT ,BM_SETCHECK, TRUE ); 565 + } 566 + if( !mycnf().m_bShlOK || !myarc().b2e_enabled() ) 567 + { 568 + ::ShowWindow( item(IDC_ASS), SW_HIDE ); 569 + ::EnableWindow( item(IDC_ASS), FALSE ); 570 + } 571 + if( mycnf().m_bShlOK!=1 ) 572 + ::ShowWindow( item(IDC_NOADMIN), SW_HIDE ); 573 + if( mycnf().m_SCSendTo ) 574 + sendMsgToItem( IDC_SND, BM_SETCHECK, TRUE ); 575 + if( mycnf().m_SCDesktop ) 576 + sendMsgToItem( IDC_DSK, BM_SETCHECK, TRUE ); 577 + 578 + return FALSE; 579 +} 580 + 581 +bool CNoahConfigDialog::CWinXPage::onOK() 582 +{ 583 + mycnf().m_SCSendTo = ( BST_CHECKED==sendMsgToItem( IDC_SND ,BM_GETCHECK ) ); 584 + mycnf().m_SCDesktop= ( BST_CHECKED==sendMsgToItem( IDC_DSK ,BM_GETCHECK ) ); 585 + for( UINT i=IDC_LZH; i<=IDC_7Z; i++ ) 586 + mycnf().m_bAsso[i-IDC_LZH] = ( BST_CHECKED==sendMsgToItem( i, BM_GETCHECK ) ); 587 + mycnf().m_SECmp = ( BST_CHECKED==sendMsgToItem( IDC_CMP ,BM_GETCHECK ) ); 588 + mycnf().m_SEExt = ( BST_CHECKED==sendMsgToItem( IDC_MLT ,BM_GETCHECK ) ); 589 + 590 + return true; 591 +} 592 + 593 +BOOL CALLBACK CNoahConfigDialog::CWinXPage::proc( UINT msg, WPARAM wp, LPARAM lp ) 594 +{ 595 + if( msg==WM_COMMAND ) 596 + if( LOWORD(wp)==IDC_ASS ) 597 + { 598 + CAssPage x( hwnd() ); 599 + return TRUE; 600 + } 601 + return FALSE; 602 +} 603 + 604 +CNoahConfigDialog::CAssPage::CAssPage( HWND parent ) : kiDialog( IDD_ANYASS ) 605 +{ 606 + doModal( parent ); 607 +} 608 + 609 +BOOL CNoahConfigDialog::CAssPage::onInit() 610 +{ 611 + typedef void (WINAPI * XT_LAX)(const char*,bool*); 612 + XT_LAX LoadASEx = (XT_LAX)mycnf().getProc( "LoadASEx" ); 613 + static const char* const ext_list[] = 614 + { "lzh","zip","cab","rar","tar","yz1","gca","arj","gza","ace","cpt","jak","7z" }; 615 + 616 + // b2e���� 617 + kiPath wild( kiPath::Exe ); 618 + wild += "b2e\\*.b2e"; 619 + kiFindFile find; 620 + find.begin( wild ); 621 + 622 + char* first_dot; 623 + bool state; 624 + HWND lst[] = { item(IDC_NASSOC), item(IDC_ASSOC) }; 625 + 626 + for( WIN32_FIND_DATA fd; find.next(&fd); ) 627 + { 628 + // # �t���͈��k��p 629 + if( fd.cFileName[0] == '#' ) 630 + continue; 631 + 632 + // �g���q���o�� 633 + ::CharLower( fd.cFileName ); 634 + first_dot = const_cast<char*>(kiPath::ext_all(fd.cFileName)-1); 635 + *first_dot = '\0'; 636 + 637 + // ��{�`���Ȃ炱���ł͂˂� 638 + for( int i=0; i<sizeof(ext_list)/sizeof(const char*); i++ ) 639 + if( 0==ki_strcmp( ext_list[i], fd.cFileName ) ) 640 + break; 641 + if( i != sizeof(ext_list)/sizeof(const char*) ) 642 + continue; 643 + 644 + // �֘A�Â��ς݂��ǂ����`�F�b�N 645 + LoadASEx( fd.cFileName, &state ); 646 + 647 + // �K�ȕ��̃��X�g�֒lj� 648 + *first_dot = '.'; 649 + *const_cast<char*>(kiPath::ext(fd.cFileName)-1) = '\0'; 650 + ::SendMessage( lst[state?1:0], LB_SETITEMDATA, 651 + ::SendMessage( lst[state?1:0], LB_ADDSTRING, 0, (LPARAM)fd.cFileName ), 652 + state?1:0 ); 653 + } 654 + 655 + return FALSE; 656 +} 657 + 658 +BOOL CALLBACK CNoahConfigDialog::CAssPage::proc( UINT msg, WPARAM wp, LPARAM lp ) 659 +{ 660 + if( msg==WM_COMMAND ) 661 + { 662 + char str[300]; 663 + DWORD dat; 664 + HWND from=item(IDC_NASSOC), to=item(IDC_ASSOC); 665 + 666 + switch( LOWORD(wp) ) 667 + { 668 + case IDC_DEL: 669 + from=item(IDC_ASSOC), to=item(IDC_NASSOC); 670 + case IDC_ADD:{ 671 + int end = ::SendMessage( from, LB_GETCOUNT, 0, 0 ); 672 + for( int i=0; i<end; i++ ) 673 + if( ::SendMessage( from, LB_GETSEL, i, 0 ) ) 674 + { 675 + // �擾 676 + ::SendMessage( from, LB_GETTEXT, i, (LPARAM)str ); 677 + dat = ::SendMessage( from, LB_GETITEMDATA, i, 0 ); 678 + //�@�R�s�[ 679 + ::SendMessage( to, LB_SETITEMDATA, 680 + ::SendMessage( to, LB_ADDSTRING, 0, (LPARAM)str ), 681 + dat ); 682 + // �폜 683 + ::SendMessage( from, LB_DELETESTRING, i, 0 ); 684 + i--, end--; 685 + } 686 + 687 + }return TRUE; 688 + } 689 + } 690 + return FALSE; 691 +} 692 + 693 +static void crack_str( char* p ) 694 +{ 695 + for( ; *p; p=kiStr::next(p) ) 696 + if( *p=='.' ) 697 + *p++ = '\0'; 698 + *++p = '\0'; 699 +} 700 + 701 +bool CNoahConfigDialog::CAssPage::onOK() 702 +{ 703 + typedef void (WINAPI * XT_SAX)(const char*,bool); 704 + XT_SAX SaveASEx = (XT_SAX)mycnf().getProc( "SaveASEx" ); 705 + 706 + char str[301]; 707 + int i, nc = sendMsgToItem( IDC_NASSOC, LB_GETCOUNT ), 708 + ac = sendMsgToItem( IDC_ASSOC, LB_GETCOUNT ); 709 + 710 + // ���� 711 + for( i=0; i<nc; i++ ) 712 + if( sendMsgToItem( IDC_NASSOC, LB_GETITEMDATA, i ) ) 713 + { 714 + sendMsgToItem( IDC_NASSOC, LB_GETTEXT, i, (LPARAM)str ); 715 + crack_str( str ); 716 + SaveASEx( str, false ); 717 + } 718 + // �ݒ� 719 + for( i=0; i<ac; i++ ) 720 + if( !sendMsgToItem( IDC_ASSOC, LB_GETITEMDATA, i ) ) 721 + { 722 + sendMsgToItem( IDC_ASSOC, LB_GETTEXT, i, (LPARAM)str ); 723 + crack_str( str ); 724 + SaveASEx( str, true ); 725 + } 726 + 727 + return true; 728 +} 729 + 730 +///////// ���̑��ݒ� ///////////// 731 + 732 +BOOL CNoahConfigDialog::CInfoPage::onInit() 733 +{ 734 + kiStr ver; 735 + myarc().get_version( ver ); 736 + sendMsgToItem( IDC_VERSION, WM_SETTEXT, 0, (LPARAM)(const char*)ver ); 737 + return FALSE; 738 +}
Added NoahCM.h version [e17b66ef630a3999]
1 +// NoahCM.h 2 +//-- CNoahConfigManager -- save / load / modify the setting of 'Noah' -- 3 + 4 +#ifndef AFX_NOAHCM_H__ACE475C1_D925_4F9E_BDCA_783B921E6FD5__INCLUDED_ 5 +#define AFX_NOAHCM_H__ACE475C1_D925_4F9E_BDCA_783B921E6FD5__INCLUDED_ 6 + 7 +class CNoahConfigManager; 8 + 9 +class CNoahConfigDialog : public kiPropSheet 10 +{ 11 +public: 12 + class CCmprPage : public kiPropSheetPage 13 + { 14 + public: 15 + CCmprPage(); 16 + private: 17 + BOOL onInit(); 18 + bool onOK(); 19 + bool onCancel(); 20 + BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ); 21 + void correct( const char* ext, bool first ); 22 + void SetUpToolTip(); 23 + private: 24 + HWND m_tooltip; 25 + }; 26 + class CMeltPage : public kiPropSheetPage 27 + { 28 + public: 29 + CMeltPage(); 30 + private: 31 + BOOL onInit(); 32 + bool onOK(); 33 + BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ); 34 + void correct(); 35 + }; 36 + class CWinXPage : public kiPropSheetPage 37 + { 38 + public: 39 + CWinXPage(); 40 + private: 41 + BOOL onInit(); 42 + BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ); 43 + bool onOK(); 44 + }; 45 + class CAssPage : public kiDialog 46 + { 47 + public: 48 + CAssPage( HWND parent ); 49 + private: 50 + BOOL onInit(); 51 + BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ); 52 + bool onOK(); 53 + }; 54 + class CInfoPage : public kiPropSheetPage 55 + { 56 + public: 57 + CInfoPage(); 58 + private: 59 + BOOL onInit(); 60 + }; 61 + 62 +public: 63 + CNoahConfigDialog(); 64 + 65 +private: 66 + bool onOK(); 67 + bool onCancel(); 68 + void onApply(); 69 + void onHelp(); 70 + void onCommand( UINT id ); 71 + BOOL onInit(); 72 + void onDrop( HDROP hdrop ); 73 + static void shift_and_button(); 74 +}; 75 + 76 +enum loading_flag 77 +{ 78 + Mode = 1, 79 + Melt = 2, 80 + Compress= 4, 81 + Shell = 8, 82 + OpenDir =16, 83 + All =31, 84 +}; 85 + 86 +class CNoahConfigManager 87 +{ 88 +public: //-- ���� 89 + 90 + void init(); 91 + void load( loading_flag what ); 92 + void save(); 93 + void dialog(); 94 + 95 +public: //-- �ݒ荀�ڎ擾�p�C���^�[�t�F�C�X 96 + 97 + // Section: Mode 98 + const int mode() { return m_Mode; } // 0:���� 1:���D 2:��D 3:��� 99 + const bool miniboot(){ return m_MiniBoot; } // �ŏ����N���H 100 + const bool oldver() { return m_OldVer; }// �Â��`���Ńo�[�W�����\�� 101 + const int extnum() { return m_OneExt ? 1 : m_ZeroExt ? 0 : -1; } // ���ɖ��쐬���Ɋg���q�ƌ��Ȃ����� 102 + const int multiboot_limit() { return m_MbLim; } // ���d�N���������l 103 + // Section: Melt 104 + const kiPath& mdir() { return m_MDir; } // �𓀐� 105 + const bool mdirsm(){ return m_MDirSm; }// �����f�B���N�g���ɉ𓀁H 106 + const int mkdir() { return m_MkDir; } // 0:x 1:file 2:dir 3:o 107 + const bool mnonum(){ return m_MNoNum; }// �����ȗ� 108 + const char* kill() { return m_Kill; }// OFF�ɂ���������[�`�� 109 + // Section: Compress 110 + const kiPath& cdir() { return m_CDir; } // ���k�� 111 + const bool cdirsm(){ return m_CDirSm; }// �����f�B���N�g���Ɉ��k�H 112 + const kiStr& cext() { return m_CExt; } // ���k�`�� 113 + const kiStr& cmhd() { return m_CMhd; } // ���k���\�b�h 114 + // Section: Shell 115 + // Section: OpenDir 116 + const bool modir() { return m_MODir; } // �𓀌�J���H 117 + const bool codir() { return m_CODir; } // ���k��J���H 118 + const kiStr& openby(){ return m_OpenBy; }// �J���v���O����(�B��) 119 + 120 +private: //-- �����ϐ� 121 + 122 + unsigned long m_Loaded; 123 + kiIniFile m_Ini; 124 + kiStr m_UserName; 125 + HINSTANCE m_hNoahXtDLL; 126 + enum { NOSHL, NOADMIN, SHLOK } m_bShlOK; 127 + 128 + // �ݒ荀�� 129 + int m_Mode; 130 + kiPath m_MDir, m_CDir; 131 + bool m_MODir,m_CODir,m_MDirSm,m_CDirSm; 132 + int m_MkDir; 133 + int m_MbLim; 134 + kiStr m_CExt; 135 + kiStr m_OpenBy; 136 + kiStr m_CMhd; 137 + bool m_MNoNum; 138 + bool m_SCSendTo,m_SCDesktop; 139 + kiStr m_Kill; 140 + bool m_SECmp, m_SEExt, m_bAsso[13]; 141 + bool m_MiniBoot; 142 + bool m_OldVer; 143 + bool m_OneExt, m_ZeroExt; 144 + 145 + // �����[�h 146 + FARPROC getProc( const char* name ); 147 + 148 +public: 149 + CNoahConfigManager() 150 + { 151 + m_hNoahXtDLL = NULL; 152 + } 153 + ~CNoahConfigManager() 154 + { 155 + if( m_hNoahXtDLL ) 156 + ::FreeLibrary( m_hNoahXtDLL ); 157 + } 158 +friend class CNoahConfigDialog::CCmprPage; 159 +friend class CNoahConfigDialog::CMeltPage; 160 +friend class CNoahConfigDialog::CWinXPage; 161 +friend class CNoahConfigDialog::CInfoPage; 162 +friend class CNoahConfigDialog::CAssPage; 163 +}; 164 + 165 +#endif
Added NoahXt/NoahXt.cpp version [179bfff141b849a3]
1 +// NoahXt.cpp 2 +// -- all of 'NoahXt.dll' (ShellExtension && Configuration of Noah) 3 + 4 +#undef WINVER 5 +#define WINVER 0x0400 6 +#ifndef STRICT 7 +#define STRICT 8 +#endif 9 +#define INC_OLE2 10 +#undef _WIN32_IE 11 +#define _WIN32_IE 0x0200 12 + 13 +#include <windows.h> 14 +#include <windowsx.h> 15 +#include <shlobj.h> 16 +#include <lmaccess.h> 17 + 18 +// �J�����g�f�B���N�g�������S�ȂƂ���Ɉڂ���LoadLibrary 19 +static HMODULE safepathLoadLibrary(LPCTSTR lpFileName) 20 +{ 21 + char original_cur[MAX_PATH], sys[MAX_PATH]; 22 + ::GetCurrentDirectory(MAX_PATH, original_cur); 23 + ::GetSystemDirectory(sys, MAX_PATH); 24 + ::SetCurrentDirectory(sys); 25 + HMODULE han = ::LoadLibrary(lpFileName); 26 + ::SetCurrentDirectory(original_cur); 27 + return han; 28 +} 29 + 30 +//------------------------------------------------------- 31 +//-- Noah Config API ------------------------------------ 32 +//------------------------------------------------------- 33 + 34 + 35 + 36 +bool WINAPI Init(); 37 +void WINAPI LoadSE( bool* a, bool* x ); 38 +void WINAPI SaveSE( bool a, bool x ); 39 +void WINAPI LoadAS( bool asso[] ); 40 +void WINAPI SaveAS( bool asso[] ); 41 +void WINAPI LoadASEx( const char* ext, bool* x ); 42 +void WINAPI SaveASEx( const char* ext, bool x ); 43 + 44 + 45 + 46 +//------------------------------------------------------- 47 +//-- �O���[�o���ϐ� ------------------------------------- 48 +//------------------------------------------------------- 49 + 50 + 51 + 52 +char g_szNoah[MAX_PATH]; // Where is Noah ? 53 +char g_szDLL[MAX_PATH]; // What's my name ? 54 +bool g_bJpn; // am I in Japanese Mode ? 55 +bool g_isNT; // is Windows NT/2000 ? 56 +int g_cRef; // reference counter 57 +bool g_bChanged; // association changed ? 58 + 59 + 60 + 61 +//------------------------------------------------------- 62 +//-- GUID {953AFAE9-C2A9-4674-9811-D7E281B001E1} -------- 63 +//------------------------------------------------------- 64 + 65 + 66 + 67 +static const GUID CLSID_NoahXt = 68 + { 0x953afae9, 0xc2a9, 0x4674, { 0x98, 0x11, 0xd7, 0xe2, 0x81, 0xb0, 0x1, 0xe1 } }; 69 +static const char* ProgID_NoahXt = "NoahXt"; 70 + 71 + 72 + 73 +//-------------------------------------------------------- 74 +//-- �V�F���G�N�X�e���V�����E�{�� -------------------------- 75 +//-------------------------------------------------------- 76 + 77 + 78 + 79 +class noahXt : public IContextMenu, IShellExtInit 80 +{ 81 +public: 82 + noahXt() { m_szDir[0]=0; m_pDataObj=NULL; m_cRef=0L; g_cRef++; } 83 + ~noahXt() { if( m_pDataObj ) m_pDataObj->Release(); g_cRef--; } 84 + STDMETHODIMP_(ULONG) AddRef() { return (++m_cRef); } 85 + STDMETHODIMP_(ULONG) Release() { if( --m_cRef )return m_cRef; delete this; return 0L; } 86 + STDMETHODIMP QueryInterface( REFIID riid, void** ppv ) 87 + { 88 + *ppv = NULL; 89 + AddRef(); 90 + if( IsEqualIID( riid, IID_IUnknown ) || IsEqualIID( riid, IID_IShellExtInit ) ) 91 + *ppv = (IShellExtInit*)this; 92 + else if( IsEqualIID( riid, IID_IContextMenu ) ) 93 + *ppv = (IContextMenu*)this; 94 + else 95 + { 96 + Release(); 97 + return E_NOINTERFACE; 98 + } 99 + return NOERROR; 100 + } 101 + STDMETHODIMP Initialize( const ITEMIDLIST* pF, IDataObject* pD, HKEY ) 102 + { 103 + ::SHGetPathFromIDList( pF, m_szDir ); 104 + if( m_pDataObj )m_pDataObj->Release(); 105 + if( pD ) (m_pDataObj=pD)->AddRef(); 106 + return NOERROR; 107 + } 108 + 109 +#define CMPR_CMD_E ("Com&press Here") 110 +#define EXTR_CMD_E ("E&xtract Here") 111 +#define CMPR_CMD (g_bJpn ? "�����Ɉ��k(&P)" : CMPR_CMD_E) 112 +#define EXTR_CMD (g_bJpn ? "�����ɉ�(&X)" : EXTR_CMD_E) 113 +#define CMPR_HLP (g_bJpn ? "�t�@�C����Noah�ň��k���܂��B" : "Compress These Files By Noah") 114 +#define EXTR_HLP (g_bJpn ? "�t�@�C����Noah�œW�J" : "Extract Files By Noah") 115 + 116 + // �E�N���b�N���j���[�֒lj� 117 + STDMETHODIMP QueryContextMenu( HMENU h, UINT i, UINT id, UINT idLast, UINT flag ) 118 + { 119 + if( (flag&0x000F)!=CMF_NORMAL && !(flag&CMF_VERBSONLY) && !(flag&CMF_EXPLORE) ) 120 + return NOERROR; 121 + 122 + // ���W�X�g������ݒ�ǂݍ��� 123 + // �ł���A������m_bEXT�Ɋւ��Ă͊g���q������s�������Ƃ���c(^^; 124 + LoadSE( &m_bCMP, &m_bEXT ); 125 + 126 + if( m_bCMP ) ::InsertMenu( h, i++, MF_STRING|MF_BYPOSITION, id++, CMPR_CMD ); 127 + if( m_bEXT ) ::InsertMenu( h, i++, MF_STRING|MF_BYPOSITION, id++, EXTR_CMD ); 128 + return MAKE_HRESULT( SEVERITY_SUCCESS, 0, id ); 129 + } 130 + // �R�}���h���s 131 + STDMETHODIMP InvokeCommand( LPCMINVOKECOMMANDINFO lpcmi ) 132 + { 133 + if( 0==HIWORD(lpcmi->lpVerb) ) 134 + switch( filter_cmd( LOWORD(lpcmi->lpVerb) ) ) 135 + { 136 + case 0: return operation( "-a" ); 137 + case 1: return operation( "-x" ); 138 + } 139 + return E_INVALIDARG; 140 + } 141 + // �w���v������Ȃ� 142 + STDMETHODIMP GetCommandString( UINT cmd, UINT flag, UINT*, LPSTR pszName, UINT cchMax ) 143 + { 144 + cmd = filter_cmd( cmd ); 145 + if( cmd==2 ) 146 + return E_FAIL; 147 + switch( flag ) 148 + { 149 + case GCS_HELPTEXT: ::lstrcpyn( pszName, cmd==0 ? CMPR_HLP : EXTR_HLP, cchMax ); break; 150 + case GCS_VERB: ::lstrcpyn( pszName, cmd==0 ? CMPR_CMD_E : EXTR_CMD_E, cchMax ); break; 151 + } 152 + return NOERROR; 153 + } 154 +private: 155 + // �R�}���hID�� compress=0, melt=1, else=2 �Ƀt�B���^�����O 156 + UINT filter_cmd( UINT i ) 157 + { 158 + if( m_bCMP )if( m_bEXT )return (i<=1 ? i : 2); 159 + else return (i==0 ? 0 : 2); 160 + else if( m_bEXT )return (i==0 ? 1 : 2); 161 + else return 2; 162 + } 163 + // Noah.exe�֓n������ "Compress Here" or "Extract Here" 164 + STDMETHODIMP operation( const char* opt ) 165 + { 166 + STGMEDIUM md; 167 + FORMATETC fe = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; 168 + if( SUCCEEDED( m_pDataObj->GetData( &fe, &md ) ) ) 169 + { 170 + const HDROP& hDrop = (HDROP)md.hGlobal; 171 + const int num = ::DragQueryFile( hDrop, 0xffffffff, NULL, 0 ); 172 + if( num ) 173 + { 174 + // main command 175 + char* cmd = new char[10 + MAX_PATH * (num+2)]; 176 + ::lstrcpy( cmd, g_szNoah ); 177 + ::lstrcat( cmd, " " ); 178 + ::lstrcat( cmd, opt ); 179 + // destdir 180 + ::lstrcat( cmd, " \"-D" ); 181 + ::lstrcat( cmd, m_szDir ); 182 + ::lstrcat( cmd, "\"" ); 183 + // filelist 184 + char str[MAX_PATH]; 185 + for( int i=0; i!=num; i++ ) 186 + { 187 + ::DragQueryFile( hDrop, i, str, sizeof(str) ); 188 + ::lstrcat( cmd, " \"" ); 189 + ::lstrcat( cmd, str ); 190 + ::lstrcat( cmd, "\"" ); 191 + } 192 + // call 'Noah' 193 + ::WinExec( cmd, SW_SHOWDEFAULT ); 194 + delete [] cmd; 195 + } 196 + ::ReleaseStgMedium( &md ); 197 + } 198 + return NOERROR; 199 + } 200 +private: 201 + ULONG m_cRef; 202 + IDataObject* m_pDataObj; 203 + char m_szDir[MAX_PATH]; 204 + bool m_bCMP, m_bEXT; 205 +}; 206 + 207 +//-- �N���X�H�� ------------------------------------------- 208 + 209 +class noahXtClassFactory : public IClassFactory 210 +{ 211 +public: 212 + noahXtClassFactory() { m_cRef = 0L; g_cRef++; } 213 + ~noahXtClassFactory() { g_cRef--; } 214 + STDMETHODIMP_(ULONG) AddRef() { return (++m_cRef); } 215 + STDMETHODIMP_(ULONG) Release() { if( --m_cRef )return m_cRef; delete this; return 0L; } 216 + STDMETHODIMP LockServer( BOOL ) { return NOERROR; } 217 + STDMETHODIMP QueryInterface( REFIID riid, void** ppv ) 218 + { 219 + *ppv = NULL; 220 + AddRef(); 221 + if( IsEqualIID( riid, IID_IUnknown ) || IsEqualIID( riid, IID_IClassFactory ) ) 222 + { 223 + *ppv = (IClassFactory*)this; 224 + return NOERROR; 225 + } 226 + Release(); 227 + return E_NOINTERFACE; 228 + } 229 + STDMETHODIMP CreateInstance( IUnknown* pOuter, REFIID riid, void** ppvObj ) 230 + { 231 + *ppvObj = NULL; 232 + if( pOuter ) 233 + return CLASS_E_NOAGGREGATION; 234 + noahXt* pXt = new noahXt; 235 + return pXt ? pXt->QueryInterface( riid, ppvObj ) : E_OUTOFMEMORY; 236 + } 237 +private: 238 + ULONG m_cRef; 239 +}; 240 + 241 +//-- �V�X�e������API --------------------------------------- 242 + 243 +extern "C" int APIENTRY 244 +DllMain( HINSTANCE inst, DWORD why, LPVOID reserved ) 245 +{ 246 + if( why==DLL_PROCESS_ATTACH ) 247 + { 248 + ::GetModuleFileName( inst, g_szDLL, sizeof(g_szDLL) ); 249 + ::lstrcpy( g_szNoah, g_szDLL ); 250 + for( char *p=g_szNoah,*y=g_szNoah-1; *p; p=::CharNext(p) ) 251 + if( *p=='\\' ) 252 + y=p; 253 + ::lstrcpy( y+1, "Noah.exe" ); 254 + ::GetShortPathName( g_szNoah, g_szNoah, MAX_PATH ); 255 + 256 + OSVERSIONINFO osVer; 257 + osVer.dwOSVersionInfoSize = sizeof(osVer); 258 + ::GetVersionEx( &osVer ); 259 + g_isNT = ( osVer.dwPlatformId == VER_PLATFORM_WIN32_NT ); 260 + 261 + g_bJpn = (::GetUserDefaultLangID()==0x0411); 262 + g_cRef = 0; 263 + g_bChanged = false; 264 + } 265 + else if( why==DLL_PROCESS_DETACH ) 266 + { 267 + if( g_bChanged ) 268 + ::SHChangeNotify( SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL ); 269 + } 270 + return TRUE; 271 +} 272 + 273 +STDAPI DllCanUnloadNow() 274 +{ 275 + return ( g_cRef==0 ? S_OK : S_FALSE ); 276 +} 277 + 278 +STDAPI DllGetClassObject( REFCLSID rclsid, REFIID riid, void** ppvOut ) 279 +{ 280 + *ppvOut = NULL; 281 + if( IsEqualIID( rclsid, CLSID_NoahXt ) ) 282 + { 283 + noahXtClassFactory* p = new noahXtClassFactory; 284 + return p->QueryInterface( riid, ppvOut ); 285 + } 286 + return CLASS_E_CLASSNOTAVAILABLE; 287 +} 288 + 289 + 290 + 291 +//-------------------------------------------------------- 292 +//-------------------------------------------------------- 293 +//-------------------------------------------------------- 294 + 295 + 296 +//-- kiRegKey from K.I.LIB -------------------------// 297 +//------ 'not using kiStr && REG_SZ only' version --// 298 + 299 + 300 +class kiRegKey 301 +{ 302 +public: 303 + kiRegKey() 304 + { m_hKey = NULL; } 305 + ~kiRegKey() 306 + { close(); } 307 + operator HKEY() const 308 + { return m_hKey; } 309 + bool open( HKEY parent, LPCTSTR keyname, REGSAM access ) 310 + { close(); return (ERROR_SUCCESS == ::RegOpenKeyEx( parent, keyname, 0, access, &m_hKey )); } 311 + bool create( HKEY parent, LPCTSTR keyname, REGSAM access ) 312 + { close(); DWORD x; return (ERROR_SUCCESS == ::RegCreateKeyEx( parent, keyname, 0, REG_NONE, REG_OPTION_NON_VOLATILE, access, NULL, &m_hKey, &x )); } 313 + void close() 314 + { if( m_hKey ) ::RegCloseKey( m_hKey ); } 315 + static bool exist( HKEY parent, LPCTSTR keyname ) 316 + { HKEY k; if( ERROR_SUCCESS!=::RegOpenKeyEx( parent,keyname,0,KEY_READ,&k ) ) return false; ::RegCloseKey( k ); return true; } 317 + bool set( LPCTSTR valname, LPCTSTR val ) 318 + { return (ERROR_SUCCESS == ::RegSetValueEx( m_hKey, valname, 0, REG_SZ, (BYTE*)val, ::lstrlen(val)+1 )); } 319 + bool get( LPCTSTR valname, char* val, DWORD siz ) 320 + { return ( ERROR_SUCCESS == RegQueryValueEx( m_hKey, valname, NULL, NULL, (BYTE*)val, &siz )); } 321 + bool del( LPCTSTR valname ) 322 + { return (ERROR_SUCCESS == RegDeleteValue( m_hKey, valname )); } 323 + static void delSubKey( HKEY k, LPCTSTR n ) 324 + { 325 + if( !g_isNT ) 326 + { 327 + ::RegDeleteKey( k, n ); 328 + return; 329 + } 330 + 331 + // NT�n�ł́A�T�u�L�[�̂���L�[�͏����Ȃ��̂ōċA�I�ɁB 332 + // ������Enum����Delete�͂ł��Ȃ����vector<string>���� 333 + // ���Ă��邽�߂킯�̂킩���R�[�h�ɂȂ��Ă܂��B 334 + 335 + // ���������L�[���J�� 336 + HKEY k2; 337 + while( ERROR_SUCCESS == ::RegOpenKeyEx( k,n,0,KEY_ENUMERATE_SUB_KEYS|KEY_SET_VALUE,&k2 ) ) 338 + { 339 + // �P�ڂ̎q�L�[�����擾 340 + char buf[200]; 341 + DWORD bs = sizeof(buf); 342 + if( ERROR_SUCCESS == ::RegEnumKeyEx( k2,0,buf,&bs,NULL,NULL,NULL,NULL ) ) 343 + { 344 + // ���������폜 345 + delSubKey( k2, buf ); 346 + ::RegCloseKey( k2 ); 347 + } 348 + else 349 + { 350 + // �Ȃ���A���������L�[�������� 351 + ::RegCloseKey( k2 ); 352 + ::RegDeleteKey( k, n ); 353 + return; 354 + } 355 + } 356 + } 357 +private: 358 + HKEY m_hKey; 359 +}; 360 + 361 + 362 + 363 +//-------------------------------------------------------- 364 +//-- Noah�̐ݒ�pAPI�Ȃ� ---------------------------------- 365 +//-------------------------------------------------------- 366 + 367 + 368 + 369 +char g_szAsCmd[MAX_PATH+10]; 370 +char g_szAsIcon[MAX_PATH+10]; 371 + 372 + 373 +// �Ǘ��Ҍ������� 374 +//-- IsAdmin() : very very thanks! to ardry, the author of 'meltice'. 375 + 376 +bool IsAdmin() 377 +{ 378 + bool isadmin=false; 379 + 380 + //-- 9x��̂��߁A���I��DLL���[�h 381 + HINSTANCE hInstDll = safepathLoadLibrary( "NetAPI32" ); 382 + if( !hInstDll ) 383 + return false; 384 + 385 + //-- NetUserGetLocalGroupes API �擾 386 + typedef NET_API_STATUS (NET_API_FUNCTION *PNETUSRGETLCLGRP)(LPCWSTR,wchar_t *,DWORD,DWORD,VOID*,DWORD,LPDWORD,LPDWORD); 387 + PNETUSRGETLCLGRP pNetUserGetLocalGroups = (PNETUSRGETLCLGRP)::GetProcAddress(hInstDll, "NetUserGetLocalGroups"); 388 + if( !pNetUserGetLocalGroups ) 389 + { 390 + ::FreeLibrary( hInstDll ); 391 + return false; 392 + } 393 + 394 + //-- ���[�U�[���擾 395 + char userA[256]; 396 + wchar_t userW[256]; 397 + DWORD tmp = 256; 398 + ::GetUserName( userA, &tmp ); 399 + ::MultiByteToWideChar( CP_ACP, 0, userA, -1, userW, 255 ); 400 + 401 + //-- �{�� 402 + LOCALGROUP_USERS_INFO_0* pBuf; 403 + DWORD entry; 404 + char buf[256]; 405 + 406 + if( 0 == pNetUserGetLocalGroups(NULL,userW,0,0,(BYTE**)&pBuf,-1,&entry,&tmp) ) 407 + { 408 + for( unsigned int i=0; i<entry; i++ ) 409 + { 410 + ::WideCharToMultiByte( CP_ACP, 0, pBuf[i].lgrui0_name, -1, buf, 256, NULL, NULL ); 411 + 412 + if( 0 == ::lstrcmp( buf, "Administrators" ) ) 413 + { 414 + isadmin=true; 415 + break; 416 + } 417 + } 418 + 419 + //-- ��������� 420 + typedef NET_API_STATUS (NET_API_FUNCTION * PNETAPIBUFFERFREE)(void*); 421 + PNETAPIBUFFERFREE pNetApiBufferFree = (PNETAPIBUFFERFREE)::GetProcAddress( hInstDll, "NetApiBufferFree" ); 422 + if( pNetApiBufferFree ) 423 + pNetApiBufferFree( pBuf ); 424 + } 425 + 426 + //-- DLL��� 427 + ::FreeLibrary( hInstDll ); 428 + return isadmin; 429 +} 430 + 431 +// ���W�X�g���ւ̏�������������c���܂������Ȃ��炵�� 432 +// 433 +//bool IsRegWritable() 434 +//{ 435 +// HKEY key; 436 +// if( ERROR_SUCCESS != // �K���ȃN���X�L�[�ւ̏����������ׂ� 437 +// ::RegOpenKeyEx( HKEY_CLASSES_ROOT, "ttffile", 0, KEY_WRITE, &key ) ) 438 +// return false; 439 +// ::RegCloseKey( key ); 440 +// return true; 441 +//} 442 + 443 +//** bool Init() 444 +//** 445 +//** �ݒ��ʗp�ɋN������Ƃ��͍ŏ��ɃR�����ĂԂ��ƁB 446 +//** false ���Ԃ��Ă����Ƃ��́A������ɂ�藘�p�ł��Ȃ����Ƃ������B 447 +bool WINAPI Init() 448 +{ 449 + ::wsprintf( g_szAsIcon, "%s,%%d", g_szDLL ); 450 + ::wsprintf( g_szAsCmd , "%s -x \"%%1\"", g_szNoah ); 451 + 452 + if( g_isNT ) 453 + if( !IsAdmin() ) 454 +// if( !IsRegWritable() ) 455 + return false; 456 + 457 + return true; 458 +} 459 + 460 +//** void LoadSE( bool* a, bool* x ) 461 +//** 462 +//** �V�F���G�N�X�e���V�����̐ݒ��Ԃ��B 463 +//** a: [�����Ɉ��k]��ON���ۂ� x: [�����ɉ�]��ON���ۂ� 464 +void WINAPI LoadSE( bool* a, bool* x ) 465 +{ 466 + *a = kiRegKey::exist( HKEY_CLASSES_ROOT, "CLSID\\{953AFAE9-C2A9-4674-9811-D7E281B001E1}\\CShl" ); 467 + *x = kiRegKey::exist( HKEY_CLASSES_ROOT, "CLSID\\{953AFAE9-C2A9-4674-9811-D7E281B001E1}\\MShl" ); 468 +} 469 + 470 +//** void SaveSE( bool a, bool x ) 471 +//** 472 +//** �V�F���G�N�X�e���V�����̐ݒ��ۑ�����B 473 +//** a: [�����Ɉ��k]��ON���ۂ� x: [�����ɉ�]��ON���ۂ� 474 +void WINAPI SaveSE( bool a, bool x ) 475 +{ 476 + kiRegKey key, key2; 477 + 478 + if( !a && !x ) 479 + { 480 + kiRegKey::delSubKey( HKEY_CLASSES_ROOT, "CLSID\\{953AFAE9-C2A9-4674-9811-D7E281B001E1}" ); 481 + kiRegKey::delSubKey( HKEY_CLASSES_ROOT, "Folder\\shellex\\DragDropHandlers\\NoahXt" ); 482 + kiRegKey::delSubKey( HKEY_CLASSES_ROOT, "Drive\\shellex\\DragDropHandlers\\NoahXt" ); 483 + if( key.open( HKEY_CLASSES_ROOT, "Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved", KEY_SET_VALUE ) ) 484 + key.del( "{953AFAE9-C2A9-4674-9811-D7E281B001E1}" ); 485 + } 486 + else 487 + { 488 + // CLSID �o�^ 489 + key.create( HKEY_CLASSES_ROOT, "CLSID\\{953AFAE9-C2A9-4674-9811-D7E281B001E1}", KEY_WRITE ); 490 + key.set( "", ProgID_NoahXt ); 491 + key2.create( key, "InprocServer32", KEY_WRITE ); 492 + key2.set( "", g_szDLL ); 493 + key2.set( "ThreadingModel", "Apartment" ); 494 + if(a)key2.create( key, "CShl", KEY_READ ); 495 + else kiRegKey::delSubKey( key, "CShl" ); 496 + if(x)key2.create( key, "MShl", KEY_READ ); 497 + else kiRegKey::delSubKey( key, "MShl" ); 498 + 499 + // Folder �� DnD Handler �Ƃ��ēo�^ 500 + key.create( HKEY_CLASSES_ROOT, "Folder\\shellex\\DragDropHandlers\\NoahXt", KEY_WRITE ); 501 + key.set( "", "{953AFAE9-C2A9-4674-9811-D7E281B001E1}" ); 502 + // Drive �� DnD Handler �Ƃ��ēo�^ 503 + key.create( HKEY_CLASSES_ROOT, "Drive\\shellex\\DragDropHandlers\\NoahXt", KEY_WRITE ); 504 + key.set( "", "{953AFAE9-C2A9-4674-9811-D7E281B001E1}" ); 505 + 506 + // NT�n�p�ɁAApproved List �ɏ����Ă��� 507 + if( g_isNT && key.open( HKEY_CLASSES_ROOT, "Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved", KEY_SET_VALUE ) ) 508 + key.set( "{953AFAE9-C2A9-4674-9811-D7E281B001E1}", ProgID_NoahXt ); 509 + } 510 +} 511 + 512 +void asso_on( const char* ext, const int no ); 513 +void asso_off( const char* ext, const int no ); 514 +bool is_asso_on( const char* ext ); 515 + 516 +enum { A_BEGIN, LZH=0, ZIP, CAB, RAR, TAR, YZ1, GCA, ARJ, BGA, ACE, CPT, JAK, A_END, 517 + OTH=A_END, SvnZ=CPT }; 518 +static const char* ext_list[] = { 519 + "lzh\0lzs\0lha\0", 520 + "zip\0", 521 + "cab\0", 522 + "rar\0", 523 + "tar\0tgz\0tbz\0taz\0gz\0bz2\0z\0xz\0lzma\0", 524 + "yz1\0", 525 + "gca\0", 526 + "arj\0", 527 + "gza\0bza\0", 528 + "ace\0", 529 + "cpt\0", 530 + "jak\0", 531 +}; 532 + 533 +//** void LoadAS( bool asso[] ) 534 +//** 535 +//** �W���̊֘A�t���̐ݒ��Ԃ��B 536 +//** LZH=0, ZIP, CAB, RAR, TAR, YZ1, GCA, ARJ, BGA, ACE, CPT, JAK 537 +void WINAPI LoadAS( bool asso[] ) 538 +{ 539 + for( int i=A_BEGIN; i<A_END; i++ ) 540 + asso[i] = is_asso_on( ext_list[i] ); 541 +} 542 + 543 +//** void SaveAS( bool asso[] ) 544 +//** 545 +//** �W���̊֘A�t���̐ݒ��ۑ��B 546 +//** LZH=0, ZIP, CAB, RAR, TAR, YZ1, GCA, ARJ, BGA, ACE, CPT, JAK 547 +void WINAPI SaveAS( bool asso[] ) 548 +{ 549 + for( int i=A_BEGIN; i<A_END; i++ ) 550 + { 551 + int icon_type = i; 552 + if( i==CPT ) icon_type = OTH; // v3.195: cpt�́A"���̑�"�A�C�R�� 553 + 554 + if( asso[i] ) 555 + asso_on( ext_list[i], icon_type ); 556 + else 557 + asso_off( ext_list[i], icon_type ); 558 + } 559 +} 560 + 561 +//** void LoadASEx( const char* ext, bool* x ) 562 +//** 563 +//** �w�肵���g���q��Noah�Ɋ֘A�t�����Ă��邩�ǂ�����Ԃ� 564 +void WINAPI LoadASEx( const char* ext, bool* x ) 565 +{ 566 + *x = is_asso_on( ext ); 567 +} 568 + 569 +//** void SaveASEx( const char* ext, bool x ) 570 +//** 571 +//** �w�肵���g���q��Noah�Ɋ֘A�t��������������� 572 +void WINAPI SaveASEx( const char* ext, bool x ) 573 +{ 574 + int icon_type = OTH; // �f�t�H���g��"���̑�"�A�C�R�� 575 + if( 0==lstrcmp(ext,"7z") ) icon_type = SvnZ; // v3.195: 7z�Ɍ���A7z��p�A�C�R�� 576 + 577 + if( x ) asso_on( ext, icon_type ); 578 + else asso_off( ext, icon_type ); 579 +} 580 + 581 +//--------------------------------------------------------------- 582 + 583 + 584 +#define step(_x) (_x+=::lstrlen(_x)+1) 585 +#define MltCmd (g_bJpn ? "��(&E)" : "&Extract") 586 +#define JntCmd (g_bJpn ? "����(&E)" : "Combin&e") 587 +#define MltTyp (g_bJpn ? "����(%s)" : "Archive(%s)") 588 +#define JntTyp (g_bJpn ? "�����t�@�C��(%s)" : "RipperedFile(%s)") 589 +#define CmdName(_n) (_n==JAK ? JntCmd : MltCmd) 590 +#define TypName(_n) (_n==JAK ? JntTyp : MltTyp) 591 + 592 +static void recover_zip() 593 +{ 594 + if( kiRegKey::exist( HKEY_CLASSES_ROOT, "CompressedFolder" ) ) 595 + { 596 + kiRegKey key, key2; 597 + if( key.create( HKEY_CLASSES_ROOT, ".zip", KEY_WRITE ) ) 598 + { 599 + key.set( "", "CompressedFolder" ); 600 + if( key2.create( key, "ShellNew", KEY_WRITE ) ) 601 + key2.set( "NullFIle", "" ); 602 + } 603 + } 604 +} 605 +static void recover_cab() 606 +{ 607 + if( kiRegKey::exist( HKEY_CLASSES_ROOT, "CLSID\\{0CD7A5C0-9F37-11CE-AE65-08002B2E1262}" ) ) 608 + { 609 + kiRegKey key; 610 + if( key.create( HKEY_CLASSES_ROOT, ".cab", KEY_WRITE ) ) 611 + key.set( "", "CLSID\\{0CD7A5C0-9F37-11CE-AE65-08002B2E1262}" ); 612 + } 613 +} 614 + 615 +void asso_on( const char* ext, const int no ) 616 +{ 617 + if( is_asso_on( ext ) ) 618 + return; 619 + g_bChanged = true; 620 + 621 + kiRegKey key, key2, key3, key4; 622 + char str[500],asc[20]="NoahXt."; 623 + ::lstrcpy( asc+7, ext ); 624 + 625 + for( const char* p=ext; *p; step(p) ) 626 + { 627 + //-- "HKCR/.lzh" = "NoahXt.lzh", "HKCR/.lzs" = "NoahXt.lzh" ... 628 + str[0]='.', ::lstrcpy( str+1, p ); 629 + if( key.create( HKEY_CLASSES_ROOT, str, KEY_WRITE ) ) 630 + { 631 + key.set( "", asc ); 632 + kiRegKey::delSubKey( key, "ShellNew" ); 633 + } 634 + } 635 + 636 + if( key.create( HKEY_CLASSES_ROOT, asc, KEY_WRITE ) ) 637 + { 638 + //-- "HKCR/NoahXt.lzh" = "����( lzh )" 639 + ::wsprintf( str, TypName(no), ext ); 640 + key.set( "", str ); 641 + key.del( "EditFlags" ); 642 + 643 + if( key2.create( key, "DefaultIcon", KEY_WRITE ) ) 644 + { 645 + //-- "HKCR/NoahXt.lzh/DefaultIcon" = "...Noah.exe, 1" 646 + ::wsprintf( str, g_szAsIcon, no ); 647 + key2.set( "", str ); 648 + } 649 + 650 + if( key2.create( key, "Shell", KEY_WRITE ) ) 651 + { 652 + //-- "HKCR/NoahXt.lzh/Shell" = "Open" 653 + key2.set( "", "Open" ); 654 + if( key3.create( key2, "Open", KEY_WRITE ) ) 655 + { 656 + //-- "HKCR/NoahXt.lzh/Shell/Open" = "��(&X)" 657 + key3.set( "", CmdName(no) ); 658 + if( key4.create( key3, "Command", KEY_WRITE ) ) 659 + //-- "HKCR/NoahXt.lzh/Shell/Open/Command" = "...Noah.exe -x "%1"" 660 + key4.set( "", g_szAsCmd ); 661 + } 662 + } 663 + } 664 +} 665 + 666 +void asso_off( const char* ext, const int no ) 667 +{ 668 + if( !is_asso_on( ext ) ) 669 + return; 670 + g_bChanged = true; 671 + 672 + //-- delete "HKCR/NoahXt.lzh" 673 + char str[20] = "NoahXt."; 674 + ::lstrcpy( str+7, ext ); 675 + kiRegKey::delSubKey( HKEY_CLASSES_ROOT, str ); 676 + 677 + //-- delete "HKCR/.lzh" "HKCR/.lzs" ... 678 + for( const char* p=ext; *p; step(p) ) 679 + { 680 + str[0]='.', ::lstrcpy( str+1, p ); 681 + kiRegKey::delSubKey( HKEY_CLASSES_ROOT, str ); 682 + } 683 + 684 + switch( no ) 685 + { 686 + // CAB, ZIP to Windows Default Association 687 + case CAB: recover_cab(); break; 688 + case ZIP: recover_zip(); break; 689 + } 690 +} 691 + 692 +bool is_asso_on( const char* ext ) 693 +{ 694 + //-- "HKCR/.lzh" exists ? 695 + char str[20] = "."; 696 + ::lstrcpy( str+1, ext ); 697 + kiRegKey key; 698 + if( !key.open( HKEY_CLASSES_ROOT, str, KEY_READ ) ) 699 + return false; 700 + if( !key.get( "", str, 20 ) ) 701 + return false; 702 + 703 + //-- the value of "HKCR/.lzh" is "NoahXt.lzh" ? 704 + char asc[20] = "NoahXt."; 705 + ::lstrcpy( asc+7, ext ); 706 + return ( 0==::lstrcmp( str, asc ) ); 707 +}
Added NoahXt/NoahXt.def version [304473b4f4b8f221]
1 +LIBRARY NoahXt 2 +DESCRIPTION "Noah Shell Extension" 3 +EXPORTS 4 + DllCanUnloadNow private 5 + DllGetClassObject private 6 + 7 + Init private 8 + LoadSE private 9 + SaveSE private 10 + LoadAS private 11 + SaveAS private 12 + LoadASEx private 13 + SaveASEx private
Added NoahXt/NoahXt.dsp version [b4fe69bc6effbce7]
1 +# Microsoft Developer Studio Project File - Name="NoahXt" - Package Owner=<4> 2 +# Microsoft Developer Studio Generated Build File, Format Version 6.00 3 +# ** �ҏW���Ȃ��ł������� ** 4 + 5 +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 6 + 7 +CFG=NoahXt - Win32 Debug 8 +!MESSAGE ����͗L����Ҳ�̧�قł͂���܂���B ������ۼު�Ă�����ނ��邽�߂ɂ� NMAKE ���g�p���Ă��������B 9 +!MESSAGE [Ҳ�̧�ق̴���߰�] ����ނ��g�p���Ď��s���Ă������� 10 +!MESSAGE 11 +!MESSAGE NMAKE /f "NoahXt.mak". 12 +!MESSAGE 13 +!MESSAGE NMAKE �̎��s���ɍ\�����w��ł��܂� 14 +!MESSAGE ����� ײݏ��ϸۂ̐ݒ���`���܂��B��: 15 +!MESSAGE 16 +!MESSAGE NMAKE /f "NoahXt.mak" CFG="NoahXt - Win32 Debug" 17 +!MESSAGE 18 +!MESSAGE �I���\������� Ӱ��: 19 +!MESSAGE 20 +!MESSAGE "NoahXt - Win32 Release" ("Win32 (x86) Dynamic-Link Library" �p) 21 +!MESSAGE "NoahXt - Win32 Debug" ("Win32 (x86) Dynamic-Link Library" �p) 22 +!MESSAGE 23 + 24 +# Begin Project 25 +# PROP AllowPerConfigDependencies 0 26 +# PROP Scc_ProjName "NoahXt" 27 +# PROP Scc_LocalPath "." 28 +CPP=cl.exe 29 +MTL=midl.exe 30 +RSC=rc.exe 31 + 32 +!IF "$(CFG)" == "NoahXt - Win32 Release" 33 + 34 +# PROP BASE Use_MFC 0 35 +# PROP BASE Use_Debug_Libraries 0 36 +# PROP BASE Output_Dir "Release" 37 +# PROP BASE Intermediate_Dir "Release" 38 +# PROP BASE Target_Dir "" 39 +# PROP Use_MFC 0 40 +# PROP Use_Debug_Libraries 0 41 +# PROP Output_Dir "../tmp/relxt" 42 +# PROP Intermediate_Dir "../tmp/relxt" 43 +# PROP Ignore_Export_Lib 0 44 +# PROP Target_Dir "" 45 +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NOAHXT_EXPORTS" /Yu"stdafx.h" /FD /c 46 +# ADD CPP /nologo /W3 /GX /O2 /Ob0 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NOAHXT_EXPORTS" /FD /c 47 +# SUBTRACT CPP /YX /Yc /Yu 48 +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 49 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 50 +# ADD BASE RSC /l 0x411 /d "NDEBUG" 51 +# ADD RSC /l 0x411 /d "NDEBUG" 52 +BSC32=bscmake.exe 53 +# ADD BASE BSC32 /nologo 54 +# ADD BSC32 /nologo 55 +LINK32=link.exe 56 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 57 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../Release/NoahXt.dll" /opt:"nowin98" 58 +# SUBTRACT LINK32 /pdb:none 59 + 60 +!ELSEIF "$(CFG)" == "NoahXt - Win32 Debug" 61 + 62 +# PROP BASE Use_MFC 0 63 +# PROP BASE Use_Debug_Libraries 1 64 +# PROP BASE Output_Dir "Debug" 65 +# PROP BASE Intermediate_Dir "Debug" 66 +# PROP BASE Target_Dir "" 67 +# PROP Use_MFC 0 68 +# PROP Use_Debug_Libraries 1 69 +# PROP Output_Dir "../tmp/dbgxt" 70 +# PROP Intermediate_Dir "../tmp/dbgxt" 71 +# PROP Ignore_Export_Lib 0 72 +# PROP Target_Dir "" 73 +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NOAHXT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c 74 +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NOAHXT_EXPORTS" /FD /GZ /c 75 +# SUBTRACT CPP /YX /Yc /Yu 76 +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 77 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 78 +# ADD BASE RSC /l 0x411 /d "_DEBUG" 79 +# ADD RSC /l 0x411 /d "_DEBUG" 80 +BSC32=bscmake.exe 81 +# ADD BASE BSC32 /nologo 82 +# ADD BSC32 /nologo 83 +LINK32=link.exe 84 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept 85 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"../Debug/NoahXt.dll" /pdbtype:sept 86 + 87 +!ENDIF 88 + 89 +# Begin Target 90 + 91 +# Name "NoahXt - Win32 Release" 92 +# Name "NoahXt - Win32 Debug" 93 +# Begin Group "Source Files" 94 + 95 +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 96 +# Begin Source File 97 + 98 +SOURCE=.\NoahXt.cpp 99 +# End Source File 100 +# Begin Source File 101 + 102 +SOURCE=.\NoahXt.def 103 +# End Source File 104 +# End Group 105 +# Begin Group "Resource Files" 106 + 107 +# PROP Default_Filter "" 108 +# Begin Source File 109 + 110 +SOURCE=.\icon\arc_ace.ico 111 +# End Source File 112 +# Begin Source File 113 + 114 +SOURCE=.\icon\arc_arj.ico 115 +# End Source File 116 +# Begin Source File 117 + 118 +SOURCE=.\icon\arc_bga.ico 119 +# End Source File 120 +# Begin Source File 121 + 122 +SOURCE=.\icon\arc_cab.ico 123 +# End Source File 124 +# Begin Source File 125 + 126 +SOURCE=.\icon\arc_gca.ico 127 +# End Source File 128 +# Begin Source File 129 + 130 +SOURCE=.\icon\arc_jak.ico 131 +# End Source File 132 +# Begin Source File 133 + 134 +SOURCE=.\icon\arc_lzh.ico 135 +# End Source File 136 +# Begin Source File 137 + 138 +SOURCE=.\icon\arc_oth.ico 139 +# End Source File 140 +# Begin Source File 141 + 142 +SOURCE=.\icon\arc_rar.ico 143 +# End Source File 144 +# Begin Source File 145 + 146 +SOURCE=.\icon\arc_tar.ico 147 +# End Source File 148 +# Begin Source File 149 + 150 +SOURCE=.\icon\arc_yz1.ico 151 +# End Source File 152 +# Begin Source File 153 + 154 +SOURCE=.\icon\arc_zip.ico 155 +# End Source File 156 +# Begin Source File 157 + 158 +SOURCE=.\noahxt.rc 159 +# End Source File 160 +# Begin Source File 161 + 162 +SOURCE=.\resource.h 163 +# End Source File 164 +# End Group 165 +# Begin Source File 166 + 167 +SOURCE=.\icon\arc_7z.ico 168 +# End Source File 169 +# End Target 170 +# End Project
Added NoahXt/NoahXt.rc version [4a6af8e085880ec9]
1 +//Microsoft Developer Studio generated resource script. 2 +// 3 +#include "resource.h" 4 + 5 +#define APSTUDIO_READONLY_SYMBOLS 6 +///////////////////////////////////////////////////////////////////////////// 7 +// 8 +// Generated from the TEXTINCLUDE 2 resource. 9 +// 10 +#include "afxres.h" 11 + 12 +///////////////////////////////////////////////////////////////////////////// 13 +#undef APSTUDIO_READONLY_SYMBOLS 14 + 15 +///////////////////////////////////////////////////////////////////////////// 16 +// ���{�� resources 17 + 18 +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) 19 +#ifdef _WIN32 20 +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT 21 +#pragma code_page(932) 22 +#endif //_WIN32 23 + 24 +///////////////////////////////////////////////////////////////////////////// 25 +// 26 +// Icon 27 +// 28 + 29 +// Icon with lowest ID value placed first to ensure application icon 30 +// remains consistent on all systems. 31 +IDI_LZH ICON DISCARDABLE "icon\\arc_lzh.ico" 32 +IDI_ZIP ICON DISCARDABLE "icon\\arc_zip.ico" 33 +IDI_CAB ICON DISCARDABLE "icon\\arc_cab.ico" 34 +IDI_RAR ICON DISCARDABLE "icon\\arc_rar.ico" 35 +IDI_TAR ICON DISCARDABLE "icon\\arc_tar.ico" 36 +IDI_YZ1 ICON DISCARDABLE "icon\\arc_yz1.ico" 37 +IDI_GCA ICON DISCARDABLE "icon\\arc_gca.ico" 38 +IDI_ARJ ICON DISCARDABLE "icon\\arc_arj.ico" 39 +IDI_BGA ICON DISCARDABLE "icon\\arc_bga.ico" 40 +IDI_ACE ICON DISCARDABLE "icon\\arc_ace.ico" 41 +IDI_OTH ICON DISCARDABLE "icon\\arc_oth.ico" 42 +IDI_JAK ICON DISCARDABLE "icon\\arc_jak.ico" 43 +IDI_7Z ICON DISCARDABLE "icon\\arc_7z.ico" 44 + 45 +#ifdef APSTUDIO_INVOKED 46 +///////////////////////////////////////////////////////////////////////////// 47 +// 48 +// TEXTINCLUDE 49 +// 50 + 51 +1 TEXTINCLUDE DISCARDABLE 52 +BEGIN 53 + "resource.h\0" 54 +END 55 + 56 +2 TEXTINCLUDE DISCARDABLE 57 +BEGIN 58 + "#include ""afxres.h""\r\n" 59 + "\0" 60 +END 61 + 62 +3 TEXTINCLUDE DISCARDABLE 63 +BEGIN 64 + "\r\n" 65 + "\0" 66 +END 67 + 68 +#endif // APSTUDIO_INVOKED 69 + 70 +#endif // ���{�� resources 71 +///////////////////////////////////////////////////////////////////////////// 72 + 73 + 74 + 75 +#ifndef APSTUDIO_INVOKED 76 +///////////////////////////////////////////////////////////////////////////// 77 +// 78 +// Generated from the TEXTINCLUDE 3 resource. 79 +// 80 + 81 + 82 +///////////////////////////////////////////////////////////////////////////// 83 +#endif // not APSTUDIO_INVOKED 84 +
Added NoahXt/icon/arc_7z.ico version [c88cff243684b85f]
cannot compute difference between binary files
Added NoahXt/icon/arc_ace.ico version [922ed93139c5eb92]
cannot compute difference between binary files
Added NoahXt/icon/arc_arj.ico version [2e528937110b9cea]
cannot compute difference between binary files
Added NoahXt/icon/arc_bga.ico version [6a8ff334bd510117]
cannot compute difference between binary files
Added NoahXt/icon/arc_cab.ico version [2a79b76aac00619a]
cannot compute difference between binary files
Added NoahXt/icon/arc_gca.ico version [571f9caffd74a51e]
cannot compute difference between binary files
Added NoahXt/icon/arc_jak.ico version [48e25163aca81aec]
cannot compute difference between binary files
Added NoahXt/icon/arc_lzh.ico version [25c76cc92b32f43b]
cannot compute difference between binary files
Added NoahXt/icon/arc_oth.ico version [c77160d9efad075f]
cannot compute difference between binary files
Added NoahXt/icon/arc_rar.ico version [a225709aa812c8ee]
cannot compute difference between binary files
Added NoahXt/icon/arc_tar.ico version [3f1ee52e5a2f3f94]
cannot compute difference between binary files
Added NoahXt/icon/arc_yz1.ico version [e51fa479e92c66a8]
cannot compute difference between binary files
Added NoahXt/icon/arc_zip.ico version [f6cace9224ff89fd]
cannot compute difference between binary files
Added NoahXt/resource.h version [99c9afdb272c149b]
1 +//{{NO_DEPENDENCIES}} 2 +// Microsoft Developer Studio generated include file. 3 +// Used by NoahXt.rc 4 +// 5 +#define IDI_LZH 101 6 +#define IDI_ZIP 102 7 +#define IDI_CAB 103 8 +#define IDI_RAR 104 9 +#define IDI_TAR 105 10 +#define IDI_YZ1 106 11 +#define IDI_GCA 107 12 +#define IDI_ARJ 108 13 +#define IDI_BGA 109 14 +#define IDI_ACE 110 15 +#define IDI_7Z 111 16 +#define IDI_JAK 112 17 +#define IDI_OTH 113 18 + 19 +// Next default values for new objects 20 +// 21 +#ifdef APSTUDIO_INVOKED 22 +#ifndef APSTUDIO_READONLY_SYMBOLS 23 +#define _APS_NEXT_RESOURCE_VALUE 114 24 +#define _APS_NEXT_COMMAND_VALUE 40001 25 +#define _APS_NEXT_CONTROL_VALUE 1000 26 +#define _APS_NEXT_SYMED_VALUE 101 27 +#endif 28 +#endif
Added ReadMe.txt version [54b1a27d3c97ca66]
1 + 2 +���̃\�[�X�Q�̗��p�����ɂ��ẮANoah�̃o�C�i���̕��� 3 +���Ă��闘�p�����ɏ]���܂��B��{�I�ɂ́A�ǂ��g���̂����R�B 4 +Visual C++ 6.0 Professional Edition / Visual C++ 2010 Express Edition �p�ł��B 5 + 6 + 7 +�����[�N�X�y�[�X�� 8 + 9 + - Noah.sln (VC++ 2010 �p���[�N�X�y�[�X) 10 + - Noah.dsw (VC++ 6.0 �p���[�N�X�y�[�X) 11 + - Noah.dsp ('Noah.exe' �p�v���W�F�N�g) 12 + - stdafx.h/cpp (pre-complied header�����p) 13 + - NoahXt/ 14 + - NoahXt.dsp ('NoahXt.dll' �p�v���W�F�N�g) 15 + - NoahXt.def (Export����API�ꗗ) 16 + - stdafx.h/cpp (pre-complied header�����p) 17 + - uninst/ 18 + - kinst.dsp ('uninst.exe' �p�v���W�F�N�g) 19 + - stdafx.h/cpp (pre-complied header�����p) 20 + 21 + 22 +�����\�[�X 23 + 24 + - Noah.rc (���\�[�X�X�N���v�g) 25 + - resource.h (���\�[�XID��`�w�b�_) 26 + - *.ico (�A�C�R���f�[�^) 27 + 28 + 29 +���\�[�X�R�[�h 30 + 31 + - / 32 + - NoahApp.h|Noah.cpp (Noah���C�����[�`��) 33 + - NoahCM.h|cpp (�ݒ�W�S��) 34 + - NoahAM.h|cpp (���k�𓀏����̏�ʃ��[�`��) 35 + - SubDlg.h|cpp (���ɓ��e�{��/�p�X���[�h/�\���_�C�A���O) 36 + - Archiver.h|cpp (���k�𓀃��[�`����interface) 37 + - ArcDLL.h|cpp (DLL���p���[�`��) 38 + - ArcB2e.h|cpp (B2E�X�N���v�g���p���[�`��) 39 + - ArcACE.h|cpp (UnaceV2.dll���p���[�`��) 40 + - ArcMSC.h|cpp (MS-Compress�Ή����[�`��) 41 + - ArcCPT.h|cpp (CompactPro�Ή����[�`��) 42 + 43 + - NoahXt/ 44 + - NoahXt.cpp (�֘A�t���E�V�F���G�N�X�e���V����) 45 + 46 + - uninst/ 47 + - kinst.cpp (�C���X�g�[��) 48 + 49 + - kilib/ 50 + - kilib.h (K.I.LIB�̃��C���w�b�_) 51 + - kilibext.h (K.I.LIB�̊g���@�\�p�w�b�_) 52 + 53 + - kl_app.h|cpp (�X�^�[�g�A�b�v�|�C���g�B�A�v���P�[�V�����S�̂̏��Ǘ�) 54 + - kl_wnd.h|cpp (�E�C���h�E�A�_�C�A���O�A�v���p�e�B�V�[�g�Ǘ�) 55 + - kl_reg.h|cpp (���W�X�g���Aini�t�@�C���̓��o��) 56 + - kl_dnd.h|cpp (OLE�h���b�O���h���b�v����) 57 + - kl_find.h|cpp (�t�@�C������) 58 + - kl_wcmn.h|cpp (���Windows-Shell����֗̕����Q) 59 + 60 + - kl_cmd.h|cpp (�R�}���h���C���p�[�T) 61 + - kl_str.h|cpp (���������p�X������) 62 + - kl_file.h|cpp (�t�@�C�����o��) 63 + - kl_misc.h|cpp (�ėp�N���X�B�z���template�Ȃ�) 64 + 65 + - kl_carc.h|cpp (�����A�[�J�C�oDLL���b�p) 66 + - kl_rythp.h|cpp (Rythp�X�N���v�g����) 67 + 68 + 69 +���\�� 70 + 71 + - CNoahApp : kiApp 72 + - (ArcMan��CnfMan�ƘA�������A�s�����������肷�鏈��) 73 + 74 + - CNoahArchiveManager 75 + - (�K��CArchiver�ֈ��k�𓀂�����) 76 + - kiArray<CArchiver*> 77 + 78 + - CNoahConfigManager 79 + - (ini�ǂݏ���������NoahXt.dll�Ƃ̘A�g) 80 + - CNoahConfigDialog : kiPropSheet 81 + - CCmprPage : kiPropSheetPage 82 + - CInfoPage : kiPropSheetPage 83 + - CMeltPage : kiPropSheetPage 84 + - CWinXPage : kiPropSheetPage 85 + 86 + - CArchiver 87 + - (���ɑ���p�̋��ʃC���^�[�t�F�C�X) 88 + - (��������e��𓀃G���W����p�N���X���h������) 89 + 90 + - K.I.LIB 91 + - (�ėp���̋ɂ߂ĒႢWin32�p���C�u����)
Added Release/Noah.exe version [2f4ce4031d5a9425]
cannot compute difference between binary files
Added Release/NoahXt.dll version [ff9dc9c2de986967]
cannot compute difference between binary files
Added Release/ReadMe.txt version [c7545d612c6202bb]
1 + 2 +�� Noah 3.199 3 +�� 2010/11/25 4 + 5 + 6 +�@���̕����́AWindows95/98/Me/NT4/2000/XP/2003/Vista/7�p���k�𓀃\�t�g 7 +"Noah"�̏㋉�Ҍ����p�b�P�[�W�̐������ł��BWindows�p���k�𓀃\�t�g�� 8 +��x�͎g�������Ƃ�����Ƃ����w��ΏۂƂ��Ă��܂��B����Ɗ��������́A 9 +���S�җp�p�b�P�[�W����肵�āA������𗘗p���邱�Ƃ������߂��܂��B 10 +�� �������ƃC���X�g�[�����Ⴄ�����ŁA�ǂ�����S���������\�ł��B 11 + 12 + 13 + 14 +�y�X�V���e @ 3.198->3.199�z 15 + 16 +�@�E�C���X�g�[���œY�t�� caldix �̃o�[�W������ 1.21 �ɍX�V 17 +�@�E�W���� tar.xz �� tar.lzma �̈��k�ɑΉ��i�ŐV��Tar32.dll���K�v�ł��j 18 +�@�@�i�֘A�Â��́A�ݒ��ʂň�[tar�̊֘A�Â����O���ĕۑ��I�����Ă���A 19 +�@�@�@������xtar�Ɋ֘A�Â������Ă��������B.xz �� .lzma �� Noah �� 20 +�@�@�@�֘A�Â�����܂��B�j 21 + 22 +�y�X�V���e @ 3.195->3.198�z 23 + 24 +�@�EJVNVU#707943 : Windows �v���O������ DLL �ǂݍ��݂ɐƎ㐫 25 +�@�@�@http://jvn.jp/cert/JVNVU707943/index.html 26 +�@�@�֑Ώ����܂��� 27 + 28 +�@�E�����ݒ莞�̈��k�`���� lzh ���� zip �ɕύX���܂��� 29 +�@�EACE�̎��ȉ𓀏��ɂ̔F���͈͂��L���܂��� 30 +�@�ENoah.exe �{�̂�UPX���k���Ȃ��悤�ɂ��܂��� 31 +�@�Eb2e��\��/�ɒu��������(slash A)��lj� 32 +�@�ENoah�̐ݒ��ʂւ�D&D�ł̈��k�E�W�J�@�\���}�j���A���ɋL�� 33 +�@�E���p1�����̖��O�̃t�H���_�����k�������̂�W�J����ƁA�W�J��t�H���_���J����Ȃ��o�O���C�� 34 +�@�EACE���ɂ̏��ɓ��{�����[�h�ŁA���k�����̔��肪�Ԉ���Ă����̂��C�� 35 +�@�E7-zip �`���ł̈��k��W�J�ŁA"-" �Ŏn�܂�t�@�C������������悤�ɏC�� 36 +�@�Eb2e ���g���Ă����ꍇ���o�C�g�����ŏI��閼�O�̃t�@�C�������k�ł��Ȃ������o�O�C�� 37 +�@�ED&D������ANoah�����̂܂܋N�����Ă���Əo�͐�t�H���_���폜�ł��Ȃ��o�O���C�� 38 +�@�E�o�b�t�@�I�[�o�[�t���[�ƃ��\�[�X���[�N�̊댯���������C�� 39 +�@�Eb2e�̈����Z���������������i���0�ɂȂ��Ă����j�o�O���C�� 40 +�@�EMSCompress�`���ł̈��k���Ƀ^�C���X�^���v�����t�@�C���ƍ��킹��悤�ɏC�� 41 +�@�E���k/�𓀐�f�B���N�g���ݒ�̃G�f�B�b�g�{�b�N�X��IME�œ��͂���ƕ�����������o�O���C�� 42 +�@�Eb2e��scan�Ńt�@�C�������X�g�A�b�v�����Ƃ��Ō�ɃS�~��������o�O���C�� 43 +�@�E�i�������ʂȂǂ���j�قȂ�f�B���N�g���ɂ��鏑�ɂ��ꊇ��Noah�ɓn���Ă��𓀂͂ł���悤�ɕύX 44 + 45 +�@(3.197) MSVCR100.dll ���Ȃ��Ɠ����Ȃ��Ȃ��Ă����̂��C�� 46 +�@(3.198) Windows XP SP2 �ȏ�łȂ��Ɠ����Ȃ��Ȃ��Ă����̂��C�� 47 + 48 + 49 +�y�Ή��`���z 50 + 51 +�@�E�O�����W���[���s�v 52 +�@�@�@�@���k�FMS-Compress 53 +�@�@�@�@�𓀁FMS-Compress, cpt 54 + 55 +�@�E�����A�[�J�C�oDLL( http://www.csdinc.co.jp/archiver/ )���K�v 56 +�@�@�@�@���k�Flzh, zip, cab, tar, bga, yz1, 7z�@�i��tar��SFX���k�s�j 57 +�@�@�@�@�𓀁Flzh, zip, cab, tar, bga, yz1, 7z, rar, arj, gca 58 +�@�@���������Fjak 59 + 60 +�@�EUnaceV2.dll( http://www.winace.com/ )���K�v 61 +�@�@�@�@�𓀁Face 62 + 63 + 64 + 65 +�y�g�����z 66 + 67 +�@�E�C���X�g�[�����A���C���X�g�[�� 68 +�@�@�@�֘A�t����V�F���g�������Ȃ����背�W�X�g���͎g���܂���B 69 +�@�@�@�K���ȂƂ���ɂ����āA�v��Ȃ��Ȃ����炳����������Ă��������B 70 + 71 +�@�E�𓀁����k 72 +�@�@�@Noah�̃A�C�R���Ƀt�@�C�����h���b�v�B 73 +�@�@�@���ɂȂ�𓀁A�����łȂ���Έ��k���܂��B 74 + 75 +�@�E���ɂ̒��g���{�� 76 +�@�@�@Ctrl�������Ȃ���𓀁B 77 + 78 +�@�E���ȉ𓀌`���ň��k 79 +�@�@�@Ctrl�������Ȃ��爳�k�B 80 + 81 +�@�E���ʂ̃t�@�C���Ɉ��k 82 +�@�@�@Alt�������Ȃ��爳�k�B 83 + 84 +�@�E�e���|�����ݒ� 85 +�@�@�@Shift�������Ȃ���h���b�v���ݒ�ύX��Shift�������Ȃ���L�����Z���B 86 +�@�@�@�Ō��Shift���������I������ƁA�����̐ݒ�ύX�ɂ��Ȃ�܂��B 87 + 88 + 89 + 90 +�yNoah�̓��샂�[�h�ɂ��āz 91 + 92 +�@�@�@�ݒ荀�ڂ̂قƂ�ǂ͂������������ŕ�����Ǝv���܂��̂ŁA�����ł͗B�� 93 +�@�@�킩��ɂ��� "���샂�[�h" �ɂ��Đ������܂��B����́A�t�@�C�����h���b�v 94 +�@�@�����Ƃ��� Noah ���ǂ����삷�邩�����߂Ă������̂ł��B 95 + 96 +�@�@[���k��p] �c �ǂ�ȃt�@�C����n����Ă����k�B 97 +�@�@[�𓀐�p] �c �ǂ�ȃt�@�C����n����Ă��𓀂����݂�B���k�ɉ��Ƃ͂Ȃ��B 98 + 99 +�@�@�ɂ��Ă͐��������܂ł��Ȃ��n�j�Ǝv���܂��B�c���ɂ��ẮA�ǂ���� 100 +�@�@��{���j�́u���ɂȂ�𓀁A����ȊO�͈��k�v�Ȃ�ł����A��Ⴂ������܂��B 101 + 102 +�@�@�E���ɂ��h���b�v�����ꍇ 103 +�@�@�@�@[�𓀗D��] �c ���ꂼ��𓀂��܂��B 104 +�@�@�@�@[���k�D��] �c ���k���܂��B 105 +�@�@�@�����̏��ɂ���ɂ܂Ƃ߂������͈��k�D��B 106 + 107 +�@�@�E�g���q�̂������ȏ���( lzh���ɂȂ̂ɁA�g���q��gif�A�Ȃ� )���h���b�v�����ꍇ 108 +�@�@�@�@[�𓀗D��] �c �𓀂��܂��B 109 +�@�@�@�@[���k�D��] �c ���k���܂��B 110 +�@�@�@�܂舳�k�D��̎��́A�g���q���炵�ď��ɂłȂ��A�Ɣ��肵���� 111 +�@�@�@���e�ł̃`�F�b�N�͂����ɁA�����Ɉ��k���[�`���։Ă��܂��ƌ������Ƃł��B 112 + 113 + 114 + 115 +�yNoah.ini�̉B���ݒ�z 116 + 117 +�@�@OpenBy=�f�B���N�g�����J���R�}���h 118 + 119 +�@�@�@�f�t�H���g�� explorer "%s" �ł��B 120 +�@�@�@%s�͎��s���Ƀf�B���N�g�����ɒu���������܂��B 121 +�@�@�@�Ⴆ�� explorer /e,"%s" �Ƃ���G�N�X�v���[���ŊJ���܂��B 122 + 123 +�@�@MiniBoot=1 124 + 125 +�@�@�@b2e������s�t�@�C�����N������ۂɁA�ŏ�����Ԃ� 126 +�@�@�@���s�������ꍇ�́AMiniBoot=1 �Ə����ĉ������B 127 + 128 +�@�@OldAbout=1 129 + 130 +�@�@�@�o�[�W�������\�����x���Ƃ��ɂ��������ƊȈՕ\���ɂȂ�܂��B 131 + 132 +�@�@OneExt=1 133 + 134 +�@�@�@aaa.bbb.ccc �����k�����Ƃ��̏��ɖ��� aaa.lzh �ł͂Ȃ� 135 +�@�@�@aaa.bbb.lzh �Ƃ������Ƃ��ɐݒ肵�܂��B���ɁANoExt=1 136 +�@�@�@�ɂ���� aaa.bbb.ccc.lzh �ɂȂ�܂��B 137 + 138 +�@�@MultiBootLimit=4 139 + 140 +�@�@�@Noah.exe���ꔭ���k�𓀗p�Ɉ�x�ɋN���ł���ő���𐧌����܂��B�f�t�H���g��4�B 141 + 142 + 143 + 144 +�y�A�C�R���̕ύX���@�z 145 + 146 +�@�@Noah�����Ƀt�@�C���Ɋ֘A�Â����Ƃ��ɐݒ肳���A�C�R���́A 147 +�@�@�S�� NoahXt.dll �Ɋ܂܂�Ă��܂��B����DLL�������ւ��邱�ƂŁA 148 +�@�@���̃A�C�R���Z�b�g���g�p���邱�Ƃ��ł��܂��B 149 +�@�@�@SB Room ( http://homepage3.nifty.com/scriba/ ) 150 +�@�@�ɂđ�R�̃A�C�R�������J����Ă��܂��̂ŁA�����������B 151 + 152 + 153 + 154 +�y�R�}���h���C���I�v�V�����z 155 + 156 +�@�@-a �K�����k�@-x �K���𓀁@-cx �{���@-ca SFX���k�@-w �ʈ��k 157 +�@�@-dDirName �o�͐�@-tTypeName ���k�`���@-mMethod ���k���\�b�h 158 + 159 + 160 + 161 +�y���p�����z 162 + 163 +�@--- NYSL ver 0.9982 ( http://www.kmonos.net/nysl/ ) --- 164 + 165 + A. �{�\�t�g�E�F�A�� Everyone'sWare �ł��B���̃\�t�g����ɂ�����l��l���A 166 + �������̍�������̂������̂Ɠ����悤�ɁA���R�ɗ��p���邱�Ƃ��o���܂��B 167 + 168 + A-1. �t���[�E�F�A�ł��B��҂���͎g�p������v�����܂���B 169 + A-2. �L��������}�̂̔@�����킸�A���R�ɓ]�ځE�Ĕz�z�ł��܂��B 170 + A-3. �����Ȃ��ނ� ���ρE���v���O�����ł̗��p ���s���Ă��\���܂���B 171 + A-4. �ύX�������̂╔���I�Ɏg�p�������̂́A���Ȃ��̂��̂ɂȂ�܂��B 172 + ���J����ꍇ�́A���Ȃ��̖��O�̉��ōs���ĉ������B 173 + 174 + B. ���̃\�t�g�𗘗p���邱�Ƃɂ���Đ��������Q���ɂ��āA��҂� 175 + �ӔC��Ȃ����̂Ƃ��܂��B�e���̐ӔC�ɂ����Ă����p�������B 176 + 177 + C. ����Ґl�i���� K.INABA �ɋA�����܂��B���쌠�͕������܂��B 178 + 179 + D. �ȏ�̂R���́A�\�[�X�E���s�o�C�i���̑o���ɓK�p����܂��B 180 + 181 + 182 + 183 +-------------------------------------------------------- 184 +by k.inaba( http://www.kmonos.net/ )
Added Release/b2e/aboutb2e.txt version [bc1665b745683ac3]
1 + 2 +=�� B2E(Bridge To Executables) Script �d�l�� 3 +=�� 2010/10/14 4 +=�� k.inaba ( http://www.kmonos.net/ ) 5 + 6 + 7 + 8 +�P�D�T�v ------------------------------------------------------ 9 + 10 +�@ Noah�́A��`�t�@�C����lj����邱�Ƃő���exe�̃t�����g�G���h 11 +�@�ƂȂ邱�Ƃ��o���܂��B�܂�A�u�R�}���h���C���p�̈��k�𓀃\ 12 +�@�t�g�͖ʓ|�I�v�Ǝv������ANoah�ƘA�g�����ĊȒP��GUI�ő��삪 13 +�@�ł���悤�ɂȂ�킯�ł��B 14 + 15 +�@ ��`�t�@�C���́ANoah.exe�Ɠ����K�w��b2e�t�H���_�ɓ���邱�� 16 +�@�Ŏ����ŔF������܂��B�ȉ��ł͂��̒�`�t�@�C���̏���������� 17 +�@���Ă����܂��B 18 + 19 + 20 + 21 +�Q�D�t�@�C���� ------------------------------------------------ 22 + 23 +�@�E�g���q�� b2e 24 +�@�E�t�@�C�����ɑΉ��g���q���L�q 25 + 26 +�@ex) �g���qish��uue��uu��W�J�\�ɂ��邽�߂̃X�N���v�g�Ȃ� 27 +�@�@�@�@ish.uue.uu.b2e 28 +�@ex) �ƂȂ�܂��Bzz��W�J���邽�߂̃��m�Ȃ�A�P�� 29 +�@�@�@�@zz.b2e 30 +�@ex) �ł��ˁB���k�����s��Ȃ��ꍇ�͏o����A 31 +�@�@�@�@#rar.b2e 32 +�@ex) �̂悤�ɁA���� # ��t���ĉ������B�i�K�{�ł͂���܂���j 33 + 34 + 35 + 36 +�R�D�T���v�� ------------------------------------------------------- 37 + 38 +�@| load: 39 +�@| (name Rar.exe) 40 +�@| (type rar Fast Default *Best) 41 +�@| 42 +�@| encode: 43 +�@| (if (method 1) (cmd a -m1 -r0 (arc.rar) (list\*.*))) 44 +�@| (if (method 2) (cmd a -m3 -r0 (arc.rar) (list\*.*))) 45 +�@| (if (method 3) (cmd a -m5 -mm -r0 (arc.rar) (list\*.*))) 46 +�@| 47 +�@| sfx: 48 +�@| (cmd s (arc)) 49 + 50 +�@| load: 51 +�@| (name 777.exe) 52 +�@| (type 777 777) 53 +�@| 54 +�@| encode: 55 +�@| (if (method 1) (cmd a (arc.777) (list\*) -mg)) 56 +�@| 57 +�@| decode: 58 +�@| (cmd x (arc)) 59 + 60 + 61 + 62 +�S�D�\�� ------------------------------------------------------ 63 + 64 +�@�Eload: EXE���Ȃǂ��������� 65 +�@�Edecode: �𓀃R�}���h���������� 66 +�@�Eencode: ���k�R�}���h���������� 67 +�@�Esfx: ���Ɂ�SFX�ϊ��R�}���h���������� 68 + 69 +�@�̂S�Z�N�V�����ɕ�����܂��B 70 + 71 + 72 + 73 +�T�Dload: ----------------------------------------------------- 74 + 75 +�@| load: 76 +�@| (name EXE��) 77 +�@| (type ���k�`���� ���k���x�����P ���k���x�����Q ...) 78 + 79 +�@�Ə����܂��B���k���s��Ȃ����́Atype �̕��͏����Ȃ��Ăn�j�B 80 +�@�� ���k���x�����̓��� * ��t����ƁA���ꂪ�W�����k���x���ɂȂ�܂��B 81 + 82 + 83 + 84 +�U�Ddecode: --------------------------------------------------- 85 + 86 +�@| decode: 87 +�@| (cmd ���s����R�}���h) 88 + 89 +�@�R�}���h���̈ȉ��̕�����ɂ��Ă͎����Œu���������܂��B 90 + 91 +�@�@(arc) �c �𓀂��鏑�ɖ� 92 +�@�@(dir) �c �𓀐�t�H���_�� 93 +�@�@(arc-.xx ln) �c ���ɖ�����g���q.xx������������ 94 + 95 + 96 + 97 +�V�Dencode: --------------------------------------------------- 98 + 99 +�@| encode: 100 +�@| (if (method 1) (cmd ���k���x���P�̂Ƃ��̃R�}���h)) 101 +�@| (if (method 2) (cmd ���k���x���Q�̂Ƃ��̃R�}���h)) 102 +�@| �ȉ����l 103 + 104 +�@�����u�������͈ȉ��̒ʂ�B 105 + 106 +�@�@(arc.xxx) �c ���k�揑�ɖ�(�g���qxxx) 107 +�@�@(dir) �c ���k�������t�@�C���̂���t�H���_�� 108 +�@�@(arc d) �c ���k��t�H���_�� 109 +�@�@(list) �c ���k�������t�@�C���̃��X�g 110 +�@�@(list\*) �c ���k�������t�@�C���̃��X�g 111 +�@�@(list\*.*) �c ���k�������t�@�C���̃��X�g 112 + { ���t�H���_����n���Ƃ��Ɏg�����C���h�J�[�h���Ⴂ�܂� } 113 + { ���ꂼ��A"dir" "dir\*" "dir\*.*" �Ƃ����`�����g���܂� } 114 + { �ǂ���g���悢���킩��Ȃ�������A�Ƃ肠���� } 115 + { (list\*) �Ə����Ă����Ă��������B } 116 + 117 + 118 + 119 +�W�Dsfx: ------------------------------------------------------ 120 + 121 +�@| sfx: 122 +�@| (cmd ���ɂ���SFX�֕ϊ�����R�}���h) 123 + 124 +�@�����u�������͈ȉ��̒ʂ�B 125 + 126 +�@�@(arc) �c �����ɖ� 127 +�@�@(arc.exe) �c SFX���ɖ� 128 +�@�@(dir) �c ��ƃt�H���_�� 129 + 130 + 131 + 132 +�X�Dencode1: sfxd: -------------------------------------------- 133 + 134 +�@ ���ɉ��@�\���Ȃ����k�\�t�g��e�L�X�g�G���R�[�_�ȂǁA���k�� 135 +�@�ɂ͈�����t�@�C�������Ȃ��\�t�g������܂��B���̂悤 136 +�@�ȃ\�t�g�ɑΉ�����Ƃ��́Aencode: �̑���ɁAencode1: �� 137 +�@�����Ă����Ă��������B���������Noah���œK���ɂ��܂����Ə��� 138 +�@���܂��B 139 + 140 +�@ ���Ɂ�SFX�ϊ��@�\���Ȃ��A���ڈ�C��SFX�Ɉ��k���邵���Ȃ� 141 +�@�\�t�g������܂��B����ȂƂ��ɂ� sfx: �̑���� sfxd: �� 142 +�@�g���܂��BSFX���k���ɂ�Noah�͒��� sfxd: ���g���悤�ɂȂ�܂��B 143 + 144 +�@ encode1: �� sfxd: ���A�����u�������� encode: �ƑS�������ł��B 145 + 146 + 147 + 148 +10�D�x�e ------------------------------------------------------- 149 + 150 +�@ �����ς�킩��Ȃ����`��Ԃ̐l�́A���ۂɊ��������t�@�C���� 151 +�@���߂Ă݂�ƁA������������邩������܂���B 152 + 153 +�@�@http://b2efile.tripod.co.jp/ 154 +�@�@�@( yc���̃T�C�g�B100�ȏ��b2e�����J����Ă��܂��B ) 155 + 156 +�@ �d�l���Ȃ�Ă���Ȍł����Ă��킩�邩�I��Ԃ̐l�́A 157 +�@���ۂǂ�Ȏ菇�ŏ����Ă����悢���A����������T�C�g�� 158 +�@�����Ɩ��ɗ����Ƃł��傤�B 159 + 160 +�@�@http://homepage3.nifty.com/scriba/manu/ 161 +�@�@�@( SB���̃T�C�g�̈�p�BNoah�t���̂��̂�肸���ƒ��J�� 162 +�@�@�@�@�}�j���A���ƂȂ��Ă��܂��B ) 163 + 164 + 165 +�@���āA�������牺�́A���\���e���Z���ł��B�m��Ȃ��Ă����ʂ� 166 +�@b2e���������ɂ͑S������Ȃ��m��������ł��B(^^; 167 +�@����ł��ǂ�ł݂�������Ȑl�����ǂ����c�c 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177 + 178 + 179 + 180 + 181 + 182 + 183 + 184 + 185 + 186 + 187 + 188 + 189 +=�� 190 +=�� ��� 191 +=�� 192 + 193 + 194 + 195 +11�D�p�ꃂ�[�h��exe�����s����Z ------------------------------- 196 + 197 +�@���{���Windows��DOS���œ������ƁA�Ȃ� ����� �Əo�Ă��� 198 +�@�i�D����������A�ň��̏ꍇ�S�������Ȃ��c�Ƃ����A�[�J�C�o�� 199 +�@�o��������Ƃ͂���܂��H 200 +�@�����́A"us���[�h" �ɐ�ւ��Ă�����s����Ə�肭���� 201 +�@���Ƃ������ł��BNoah�ł��̐�ւ����s���ɂ́A�ŏ��� name �ŁA 202 + 203 +�@�@(name EXE�� us) 204 + 205 +�@�ƁA���� us ��t���ĉ������B����ŁA����b2e�ɏ����ꂽ(cmd)�� 206 +�@(xcmd)�̎��s�̍ۂɂ́A������us���[�h�ɂȂ�悤�ɂȂ�܂��B 207 + 208 + 209 + 210 +12�D�����A�[�J�C�oDLL�p�X�N���v�g ----------------------------- 211 + 212 +�@load: �̂Ƃ���� (name DLL��) �Ƃ���n�j�ł����A���ꂾ�� 213 +�@�@�E�t�@�C�����e�ɂ�鏑�ɔ��� 214 +�@�@�E���ɉ{���������� 215 +�@���o���܂���B�v���I�ł��B 216 + 217 +�@�O�҂�L���ɂ���ɂ́A 218 +�@�@check: 219 +�@���Ĉ�s�ǂ����ɏ����Ă��������B���g�͗v��܂���B 220 + 221 +�@��҂�L���ɂ���ɂ́Adecode1: �Z�N�V�����������܂��B 222 +�@�����u�������� decode: �Z�N�V�����Ɠ������̂ɉ����A 223 +�@(list) �Ə����Ƃ����ɉ𓀃t�@�C�������X�g������悤�ɂȂ�܂��B 224 +�@decode1: �Z�N�V�����ł́A�o���邾���O���t��G���[���b�Z�[�W�� 225 +�@�}�~����悤�ȃI�v�V���������� cmd ���ĉ������B 226 + 227 +�@DLL������API�����Z�o���邽�߁A�啶���������͊ԈႦ�Ȃ��悤�ɁB 228 +�@��{�I�ɂ�[�ŏ��ꕶ����A���Ə�]�ő��v�ł����AUnZip �� Z �� 229 +�@�啶���ɁBUnGCA ���v���ӁB 230 + 231 +�@�܂��A���XNoah�ɓ�������Ă��郋�[�`����b2e���D�悳��邽�߁A 232 +�@����b2e�t�@�C����lj����������ł́A�Ⴆ��Unlha32.dll�p�̓���� 233 +�@�u�������邱�Ƃ͏o���܂���Bnoah.ini �t�@�C���Ɏ��̌`���� 234 +�@�B���ݒ���L�q���邱�ƂŁA�������[�`�����g��Ȃ��悤�ɂł��܂��B 235 + 236 +�@�@Kill=�g�������Ȃ��������[�`�� 237 + 238 +�@�@�@�Ⴆ�� Kill=LCT �Ȃ�AUnlha32,Cab32,Tar32 ���g�p���Ȃ��Ȃ�܂��B 239 +�@�@�@�@�@L �c Unlha32�@Z �c UnZip32�@z �c Zip32j 240 +�@�@�@�@�@R �c Unrar32�@C �c Cab32�@�@T �c Tar32 241 +�@�@�@�@�@B �c Bga32�@�@G �c UnGCA32�@A �c Unarj32j 242 +�@�@�@�@�@a �c UnaceV2�@Y �c Yz1�@�@�@c �c Cpt 243 +�@�@�@�@�@7 �c 7-zip32�@M �c MS-Compress 244 + 245 + 246 + 247 +13�D��ʂ�b2e������� --------------------------------------- 248 + 249 +�@�o�[�W�������̕\�����x���Ȃ�������邻���ł��B 250 +�@����ȏꍇ�� Noah.ini �t�@�C���� 251 +�@�@OldAbout=1 252 +�@�ƈ�s�t�������Ă��������B 253 + 254 + 255 + 256 +14. As a Script Language -------------------------------------- 257 + 258 +�@ ��ł���[�����u������]�Ƃ��� (arc) �Ƃ����Љ�܂������A 259 +�@�C���I�ɂ͑S�R�Ⴂ�܂��B( �@�\�� ����1 ����2 ... ) �̌`�� 260 +�@function���Ђ�����g�ݍ��킹�ď����ALisp�̂܂������̂悤�� 261 +�@�X�N���v�g����̂���B 262 + 263 +�@�@�� (+ 25 8) �@�@ = 33 264 +�@�@�@ (* 3 7)�@�@�@ = 21 265 +�@�@�@ (+ 11 (* 3 4)) = 23 266 + 267 +�@����Ȋ����Ōv�Z���ł��܂��B+ ���������ڂ̐��Ɠ�ڂ̐��� 268 +�@���������ʂ�Ԃ�[��]�ƍl������̂Ɠ��l�A(arc) ���A�K���� 269 +�@�I�v�V�������Ƃ��ď��ɖ���Ԃ�[��]�Ƃ��Ď������Ă��܂��B 270 + 271 +==================================================== 272 +���ϐ����� 273 + 274 +�@�ϐ����̓A���t�@�x�b�g�ꕶ���Aa-z, A-Z ��52���g���܂��B 275 + 276 +�@�@�� (let a 25) 277 +�@�@�@ (let b 10) 278 +�@�@�@ (+ %a %b) 279 + 280 +�@�Ō�̑����Z�̌v�Z���ʂ� 35 �ɂȂ�܂��B 281 +�@let�ŕϐ��ɒl�������āA%�ϐ����A�œ��ꂽ�l�����o���܂��B 282 + 283 +�@�@�� (let d (arc d)) 284 +�@�@�@ (cmd a -d%d (list\*.*)) 285 + 286 +�@�ϐ��ɂ͕����������̂ŁA��̂悤�Ȏg�������\�ł��B 287 + 288 +==================================================== 289 +���g���Ƃ��ɒ��ӂ��K�v�ȕ��� 290 + 291 +�@���肽���R�}���h�∳�k���x�����Ȃǂ� %"() �̂S��ނ̎��� 292 +�@���̂܂����ƃo�O��܂��B 293 +�@���ꂼ�� %%, %", %(, %) �Ƃ����悤�ɑO�� % ��t���ĉ������B 294 + 295 +==================================================== 296 +���Sfunction���t�@�����X 297 + 298 +�@�����s����n 299 + 300 +�@�@(exec ...) 301 + 302 + �@�\�F�����珇�ɁA�P���Ɉ��������s���Ă��� 303 + �Ԓl�F�Ō�̈����̒l 304 + 305 +�@�@(if �` �a �b) 306 + 307 + �@�\�F�`���^�Ȃ�a�����s�B�b������ꍇ,�`���U�Ȃ�b�����s 308 + �Ԓl�F���s�������̕�(�a���b)�̒l 309 + 310 +�@�@(while �` �a) 311 + 312 + �@�\�F�`���^�ł���ԁA�a���J��Ԃ����s 313 + �Ԓl�F���� 314 + 315 +�@������n 316 + 317 +�@�@(let �` �a) 318 + 319 + �@�\�F�ϐ��`�ɁA�a�����B 320 + ���`�ɂ́A�ϐ�������%������������������B 321 + �Ԓl�F�`�ɓ������l 322 + 323 +�@�����Z�n 324 + 325 +�@�@( + �` �a)�@�c�@�`�{�a 326 +�@�@( - �` �a)�@�c�@�`�|�a 327 +�@�@( * �` �a)�@�c�@�`�~�a 328 +�@�@( / �` �a)�@�c�@�`���a 329 +�@�@(mod �` �a)�@�c�@�`���a�Ŋ������]�� 330 + 331 +�@�@( = �` �a)�@�c�@�`�Ƃa����������ΐ^�A�������Ȃ���U 332 +�@�@( ! �` �a)�@�c�@�`�Ƃa����������U�A�������Ȃ���ΐ^ 333 +�@�@( ! �`) �@�@�c�@�`���U�Ȃ�A�^�Ȃ�U 334 +�@�@( < �` �a)�@�c�@�` < �a �Ȃ�^�A�łȂ���U 335 +�@�@( > �` �a)�@�c�@�` > �a �Ȃ�^�A�łȂ���U 336 +�@�@(between �` �a �b)�@�c�@A <= B <= C �Ȃ�^�A����ȊO�Ȃ�U 337 + 338 +�@�@( + �` �a)�@�c�@�` or �a �i�����Z�́A�_���a�ɂ��g���܂��j 339 +�@�@( * �` �a)�@�c�@�` and �a�i�|���Z�́A�_���ςɂ��g���܂��j 340 + 341 +�@��load: �n 342 + 343 + (name �`) 344 + (type �` �a �b �c ...) 345 + 346 + ��̐����ʂ�B 347 + 348 +�@�@(use �` �a �b �c ...) 349 + 350 +�@�@�@�@����b2e�ŁAname�Ŏw�肵��exe�ȊO�ɗ��p����t�@�C��������Ȃ� 351 +�@�@�@�@����use�ɂ���Đݒ肵�܂��B�Ⴆ�� 352 +�@�@�@�@�@ex) (use sfx32gui.dat zcrypt23.dll) 353 +�@�@�@�@�ȂǂƏ����Ă����ƁANoah�̃o�[�W�������ɁAsfx32gui.dat�Ȃǂ� 354 +�@�@�@�@�\�������悤�ɂȂ�܂��B�������A�����ɏ���������ƌ����� 355 +�@�@�@�@���ۂ̈��k�𓀍�Ƃɕω��͂���܂���B 356 + 357 +�@�����̑��̃Z�N�V�����Ŏg������́i�P���j 358 + 359 + (dir) 360 + 361 + ��t�H���_�����u�V���[�g�t�@�C�����E�t���p�X�v�ŕԂ��܂��B 362 + decode:���͉𓀐�Aencode:���͈��k�� sfx:���͍�ƃf�B���N�g�� 363 + �����Ԃ�Ԃ��܂��B 364 + 365 + (is_folder) 366 + 367 + �h���b�v���ꂽ���̂��t�H���_���������^�A�łȂ���U�B 368 + 369 + (is_file) 370 + 371 + �h���b�v���ꂽ���̂��t�@�C�����������^�A�łȂ���U�B 372 + 373 + (is_multiple) 374 + 375 + �h���b�v���ꂽ���̂�������������^�A�łȂ���U�B 376 + 377 + (cd �`) 378 + 379 + �J�����g�f�B���N�g�����`�ɐݒ肵�܂��B 380 + 381 + (method �`) 382 + 383 + encode: encode1: sfxd: �̎��݈̂Ӗ�������܂��B 384 + �P�� (method) �Ə����ƁA���[�U�[���w�肵�����k���x����Ԃ��܂��B 385 + (method 1) �ȂǂƏ����ƁA�w�肵�����x���� 1 ���ǂ����̐^�U��Ԃ��܂��B 386 + 387 + (size �`) 388 + 389 + �t�@�C���`�̃T�C�Y���o�C�g�P�ʂŕԂ��܂��B 390 + 391 +�@�@(slash �`) 392 + 393 +�@�@�@�@������`�̒��� \ �� / �ɒu���������������Ԃ��܂��B 394 +�@�@�@�@Unix�n�̃R�}���h�� \ ���f�B���N�g���ƔF�����Ă���Ȃ����̌����ɁB 395 + 396 +�@�@(find �`) 397 + 398 +�@�@�@�@���O���`�̃t�@�C����PATH�̒ʂ����f�B���N�g������T���A 399 +�@�@�@�@����������t���p�X�A������Ȃ���U��Ԃ��܂��B 400 +�@�@�@�@�@ex) (if (find notepad.exe) (....)) 401 +�@�@�@�@notepad.exe�����鎞�����������s�B 402 +�@�@�@�@�@ex) (let s (find stubwin.sfx)) (cmd s %s (arc)) 403 +�@�@�@�@stubwin.sfx���V�X�e���t�H���_�Ȃǂ���T���Ă���s�ɂ��̃t���p�X������B 404 + 405 + (cmd ARG1 ARG2 ARG3 ...) 406 + 407 + (name)�Ŏw�肵�����s�t�@�C���փR�}���h�𑗂�܂��B 408 + ��ł�(arc)�͎����u�������c�Ƃ������܂������A 409 + function���g���Ă���̂œ��R�̔@�� 410 + (cmd ##(arc)##) 411 + �Ƃ�����Ă� ##c:\windows\install.cab## �Ƃ����R�}���h������ꂽ��͂��܂���B 412 + �܂�A�X�y�[�X�ŗ����ꂽ��p�����[�^�̏ꍇ�����u�������͌����Ȃ��킯�ł��B 413 + �����łȂ��u���������������Ƃ��ɂ́A(let) �ň�U�ϐ��ɑ�����Ă��� 414 + �ϐ����ߍ��߂n�j�ł��B 415 +�@�@�@�@(cmd)���ߎ��̂̒l�́A���s�̏I���R�[�h�ƂȂ�܂��B 416 +�@�@�@�@�@ex) (if (! 0 (cmd ...)) �G���[����) 417 +�@�@�@�@xcmd�ɂ��Ă����l�B 418 + 419 + (xcmd �` ARG1 ARG2 ...) 420 + 421 + �O���R�}���h�Ăяo���B 422 + �ŏ��Ɏ��s�t�@�C�����������āA�ȍ~�̃p�����[�^�ŃR�}���h�������܂��B 423 + (xcmd del A) �Ƃ� (xcmd copy B C) �ȂǁADOS�̓����R�}���h�̋N�����\�B 424 + 425 +�@�����̑��̃Z�N�V�����Ŏg������́i���G�j 426 + 427 + (input MESSAGE DEFAULT) 428 + 429 + ���[�U�[�ɕ��������͂�����Ƃ��Ɏg���܂��B���͂𑣂����b�Z�[�W�� 430 + �������ɁA�f�t�H���g�̓��͒l��������ɏ����ĉ������i�ȗ��\�j�B 431 + ���͂��ꂽ�����l�Ƃ��ĕԂ���܂��B 432 + (let p (input "�p�X���[�h�����Ă�")) 433 + (cmd x -p%p (arc)) 434 + �Ƃ�����Ȋ����ɗ��p�B 435 + 436 + (arc[+-].ext [slfnd]) 437 + 438 + ���ɖ��w��BNoah �͓����ϐ��Ƃ��āA 439 + �@�E���ɂ̂���t�H���_�� <-- ���ɂ̑��݂���Dir(��SFX) or �o�͐�Dir(��) 440 + �@�E���ɖ�(LongFileName) <-- ���ɖ�(��SFX) or drop������ڂ̃t�@�C����(��) 441 + �@�E���ɖ�(ShortFileName) <-- ���ɖ�(��SFX) or drop������ڂ̃t�@�C����(��) 442 + �������Ă��܂��B 443 + 444 + �܂��E��[slfnd]�͒u���Ƃ��č��̕���������B 445 + 446 + �@(arc �c ���ɖ������̂܂܃X�g���[�g�� 447 + �@(arc. �c ���ɖ�����g���q��S�ď��������� 448 + �@(arc.lzh �c ���ɖ�����g���q��S�ď����āA.lzh �ɂ����������� 449 + �@(arc+.lzh �c ���ɖ��̊g���q�͎�炸�A���� .lzh �������������� 450 + �@(arc-.szip �c szip�Ƃ����g���q�������炻����Ƃ�̂��������́A 451 + �@�@�@�@�@�@�@�@ # �����łȂ�������A���� .decompressed �������������� 452 + 453 + ���ꂼ�� 454 + �@===�𓀁ESFX�ϊ����̏��ɖ��w�� 455 + �@===CPShrink�� (--;) 456 + �@===���k���̕��ʂ̏��ɖ��w�� 457 + �@===aaa.txt �����k����Ƃ����ɖ��� aaa.txt.gz �ɂ������Ƃ��֗� 458 + �@===aaa.txt.gz ���𓀂���Ƃ����O�� aaa.txt �ɖ߂������Ƃ��֗� 459 + �ł��B 460 + 461 + ���A[slfnd] �̉���B�P�Ԗڂ̃p�����[�^�ɂ����̕���������ƁA 462 + �@s �c ���ɖ��ɂ�ShortFileName���g�� 463 + �@l �c ���ɖ��ɂ�LongFileName���g�� 464 + �@f �c ���ɖ��̓f�B���N�g���{���O�iFullPath�j�ŁB 465 + �@n �c ���ɖ��͖��O�iNameOnly�j�ŁB 466 + �@d �c ���ɖ��̓f�B���N�g���iDirecotry�j�ŁB 467 + �Ƃ����w��ɂȂ�܂��B 468 + 469 + �@s === �Z���t�@�C���������ʂ��Ȃ��A�[�J�C�o�ɕ֗��B 470 + �@d === ���ɖ��ڎw��ł��Ȃ��ŁA�o�͐悵���w��ł��Ȃ����̂ɕ֗��B 471 + 472 + �f�t�H���g�I�v�V����( �P�� (arc) �Ə������Ƃ��̃I�v�V���� �j�́A 473 + �@decode: lf 474 + �@encode: lf 475 + �@sfx: ln 476 + 477 + ���B���ɖ��� "c:\programs\����������.lzh" �̏ꍇ�A 478 + 479 + �@1) (arc d) 480 + �@2) (arc-.lzh sn) 481 + �@3) (arc.cab lf) 482 + �@4) (arc+.txt ln) 483 + 484 + �͂��ꂼ��ǂ��Ȃ�ł��傤�H 485 + 486 + (list[r|\*|\*.*] [slfn]) 487 + 488 + ���k���ɁA�t�@�C�������X�g��Ԃ��܂��B 489 + slfn �� (arc) �Ɠ����B�f�t�H���g�� ln�B 490 + \* ���ɂ��ẮA�f�B���N�g������n���Ƃ��̓n�����w��ɂȂ�܂��B 491 + �Ⴆ�� (listr) �R�}���h���g���ƁA�f�B���N�g�������C���h�J�[�h�� 492 + �n������Noah�����͂œW�J���Ă���exe�ɓn���܂��B 493 + 494 + ���B"c:\file\" �̒��� "����������.txt" "abcde.bmp" "xxx"(�f�B���N�g��) ��n���ꍇ�A 495 + 496 + �@5) (list) 497 + �@6) (list\* s) 498 + �@7) (list\*.* lf) 499 + �@8) (list sf) 500 + 501 + �͂��ꂼ��ǂ��Ȃ�ł��傤�H 502 + 503 + (resp �`) 504 + (resq �`) 505 + 506 + �����̓��e�����s�ŋ���ăe���|�����t�@�C���ɏo�͂��A���̃e���|���� 507 + �t�@�C���̃t�@�C������Ԃ��܂��Bresp�́A�����`���̓�d���p���������܂���B 508 + resq�́A�ϐ��`���̓�d���p�����������܂��B 509 + (resp@ �`) �Ƃ���� "@tempfilename"�A(resp-o �`) �Ƃ���� "-otempfilename" 510 + �̂悤�ȕԂ������\�ł��B 511 + 512 + �����Ă��܂��A 513 + (cmd -a -mz (arc.cab) (resp@ (listr))) 514 + �Ƃ����g������z�肵�Ă��܂��B 515 + 516 + 517 + 518 +15.���̓��� ------------------------------------------------- 519 + 520 + 1) c:\programs\ 521 + 2) ������~1 522 + 3) c:\programs\����������.cab 523 + 4) ����������.lzh.txt 524 + 5) ����������.txt abcde.bmp xxx 525 + 6) ������~1.txt abcde.bmp xxx\* 526 + 7) c:\file\����������.txt c:\file\abcde.bmp c:\file\xxx\*.* 527 + 8) c:\file\������~1.txt c:\file\abcde.bmp c:\file\xxx 528 + 529 + 530 + 531 + 532 + 533 + 534 + 535 + 536 + 537 + 538 +=�� 539 +=�� ��O�� 540 +=�� 541 + 542 +16.list:�Z�N�V�����A(scan) ----------------------------------- 543 + 544 +�@�O�q�� decode1: �Z�N�V�����ƁA������������� list: �Z�N�V������ 545 +�@�lj����邱�ƂŁA�O��exe�𗘗p����^�C�v��b2e�ł����ɓ��e�{���� 546 +�@�s����悤�ɂȂ�܂��B���\�ł͂���܂���B���܂��s���Ζׂ����m�B(^^; 547 + 548 +�@list: �Z�N�V�����ł͕��ʁA����function���g���Ċi�[�t�@�C������ 549 +�@���X�g����ɓ���܂��B 550 + 551 +�@�@(scan A B C D E command...) 552 + 553 +�@�܂� command... �Ƃ����R�}���h�����s���A���̏o�͂���͂��܂��B 554 +�@�܂�Acommand... �ɂ̓��X�g�\���R�}���h���������ƂɂȂ�܂��B 555 + 556 +�@��̓I�v�V���� A,B,C,D,E �͎��̂悤�ȈӖ��ł��B 557 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 558 +�@�`�Ŏn�܂�s�́@�a�s��납��@�b�Ŏn�܂�s�̒��O�܂Ł@�c�s���ǂ݁A 559 +�@�擪�d��������ăt�@�C�����Ƃ��ēǂݍ��݁B 560 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 561 + 562 +�@��̗�����čs���܂��傤�B 563 + 564 + 565 + 566 + 567 +��P�j7za.exe �̏o�͌��� ++++++++++++++++++++++++++++++++++++++++++++++++++++ 568 + 569 +7-Zip (A) 2.30 Beta 10 Copyright (c) 1999-2002 Igor Pavlov 2002-01-11 570 + 571 +Listing archive: b2e.7z 572 + 573 + Date Time Attr Size Compressed Name 574 +------------------- ----- ------------ ------------ ------------ 575 +2002-01-19 00:20:48 ....A 459 103732 b2e\7z.b2e 576 +2002-01-19 11:39:38 ....A 212 0 b2e\bh.b2e 577 +2002-01-19 00:37:34 ....A 193 0 b2e\bix.b2e 578 +2002-01-19 12:04:52 ....A 200 0 b2e\j.b2e 579 +2002-01-19 00:19:46 ....A 215 0 b2e\rk.b2e 580 +2002-01-19 12:04:32 ....A 231 0 b2e\sbc.b2e 581 +2002-01-19 00:54:16 ....A 199 0 b2e\uha.b2e 582 +2002-01-19 12:10:44 ....A 426044 0 Noah.exe 583 +------------------- ----- ------------ ------------ ------------ 584 + 427753 103732 8 files 585 + 586 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 587 + 588 +"---"�Ŏn�܂�s�̂P�s��납��A"---"�Ŏn�܂�s�̒��O�܂łP�s���ǂ݁A 589 +�擪53��������āA�c�肪�t�@�C�����ƂȂ��Ă��܂��B�]���āAb2e�̏������� 590 + 591 +list: 592 + (scan "---" 1 "---" 1 53 l (arc)) 593 + 594 +�ƂȂ�܂��B 595 + 596 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 597 + 598 + 599 + 600 +��Q�jimp.exe �̏o�͌��� ++++++++++++++++++++++++++++++++++++++++++++++++++++ 601 + 602 +IMP 1.12 High-Performance Archiver. Copyright 1998-2000 Technelysium Pty Ltd. 603 + 604 +Name/Comment 605 + Size Created Modified Attr OS Unit 606 +---------- ------------------- ------------------- ----- ----- --------- 607 +b2e\j.b2e 608 + 196 Jan 19 2002 12:22am Jan 19 2002 12:12pm A.... Win32 1 609 +b2e\uha.b2e 610 + 199 Jan 19 2002 12:38am Jan 19 2002 12:54am A.... Win32 1 611 +b2e\bix.b2e 612 + 195 Jan 19 2002 12:34am Jan 19 2002 12:12pm A.... Win32 1 613 +b2e\bh.b2e 614 + 214 Jan 19 2002 12:58am Jan 19 2002 12:13pm A.... Win32 1 615 +b2e\7z.b2e 616 + 461 Jan 18 2002 06:11pm Jan 19 2002 12:12pm A.... Win32 1 617 +b2e\sbc.b2e 618 + 233 Jan 19 2002 11:52am Jan 19 2002 12:14pm A.... Win32 1 619 +b2e\rk.b2e 620 + 217 Nov 26 2001 09:52am Jan 19 2002 12:13pm A.... Win32 1 621 +b2e\imp.b2e 622 + 235 Jan 19 2002 12:21pm Jan 19 2002 12:24pm A.... Win32 1 623 +Noah.exe 624 + 426044 Nov 25 2001 10:08pm Jan 19 2002 12:19pm A.... Win32 1 625 + 626 +Total: 427994 bytes in 9 files 627 +Compressed size: 104730 bytes (24% of original) 628 +Newest file modified Jan 19 2002 12:24pm 629 + 630 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 631 + 632 +"---"�Ŏn�܂�s�̂P�s��납��A��s�̒��O�܂łQ�s���ǂ݁A 633 +�擪0����������Ƃ��낪�t�@�C�����ƂȂ��Ă��܂��B�]���āAb2e�̏������� 634 + 635 +list: 636 + (scan "---" 1 "" 2 0 v (arc)) 637 + 638 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 639 + 640 + 641 + 642 +�d�́u�擪�d��������āv�̈Ӗ��Ə����܂������A����ł͕s�\���ȏꍇ������܂��B 643 +�t�@�C�������E�����ɂȂ��Ă��āA���[�����ł͂Ȃ��ꍇ�ȂǁB���̂悤�ȂƂ��ɂ́A 644 +�u�����灛�Ԗڂ̌ł܂�v�Ƃ����`�Ŏw�肵�����Ȃ�܂��B 645 + 646 + 647 + 648 +��R�jsbc.exe �̏o�͌��� ++++++++++++++++++++++++++++++++++++++++++++++++++++ 649 + 650 +������������������������������������������������������������������������������� 651 +�� SBC v0.910 beta Copyright (c) 2000-2001 Sami J. M�Einen (sjm@pp.inet.fi) �� 652 +UNREGISTERED VERSION! Evaluate 30 days, then please register! See the docs! 653 +������������������������������������������������������������������������������� 654 +Listing archive: "b2e.SBC"... 655 + Filename Size Date Time Attr. 656 + -------- ---- ---- ---- ----- 657 + b2e/j.b2e 199 01/19/2002 00:33:16 A 658 + b2e/uha.b2e 199 01/19/2002 00:54:16 A 659 + b2e/bix.b2e 193 01/19/2002 00:37:34 A 660 + b2e/7z.b2e 459 01/19/2002 00:20:48 A 661 + b2e/rk.b2e 215 01/19/2002 00:19:46 A 662 + b2e/bh.b2e 212 01/19/2002 11:39:38 A 663 + b2e/sbc.b2e 210 01/19/2002 11:59:50 A 664 + Noah.ilk 807600 01/19/2002 00:17:50 A 665 + UNACEV2.DLL 75264 12/27/2001 02:00:00 A 666 + Noah.exe 426044 01/19/2002 00:17:52 A 667 + 668 +Archive contains 10 files, 1310595 bytes of original data. 669 + 670 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 671 + 672 +" --------"�Ŏn�܂�s�̂P�s��납��A��s�̒��O�܂� 673 +�P�s���ǂ݁A�擪����P�ڂ̌ł܂肪�t�@�C�����ł��B�Ƃ����킯�� 674 + 675 +list: 676 + (scan " --------" 1 "" 1 -1 l (arc)) 677 + 678 +�ƂȂ�܂��B�u���b�N�P�ʂŎw�肵�����Ƃ��́A�}�C�i�X�����Ďw�肵�܂��B 679 + 680 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 681 + 682 + 683 +(scan A B C D E command...) 684 +�@�@�@�`�Ŏn�܂�s�́@�a�s��납��@�b�Ŏn�܂�s�̒��O�܂Ł@�c�s���ǂ݁A 685 +�@�@�@�擪�d��������ăt�@�C�����Ƃ��ēǂݍ��݁B 686 + 687 +�@���ʂȎd�l�B 688 +�@�@�`�� "" �ɂ����ꍇ�A�u�擪����a�s�ځv����ǂނ悤�ɂȂ�܂��B 689 +�@�@�u""�Ŏn�܂�s�̂a�s��납��v�ł͂Ȃ��āB 690 + 691 +�@�@�b�� "" �ɂ����ꍇ�A�u��s�̒��O�܂Łv�ɂȂ�܂��B 692 +�@�@�u""�Ŏn�܂�s�i�ǂ�ȍs�ɂ����Ă͂܂��Ă��܂��j�܂Łv�ł͂Ȃ��āB 693 + 694 +(xscan A B C D E command...) 695 +�@�@�@�`�Ŏn�܂�s�́@�a�s��납��@�b�Ŏn�܂�s�̒��O�܂Ł@�c�s���ǂ݁A 696 +�@�@�@�擪�d��������ăt�@�C�����Ƃ��ēǂݍ��݁B 697 +�@�@�@command... �̈�ڂɁA�O�����s�t�@�C�����w�肵�܂��B
Added Release/b2e/jak.b2e version [7b5cec1d704bffa0]
1 +load: 2 + (name Jack32.dll) 3 + (type jak 1.20MB *1.44MB) 4 + 5 +check: 6 + 7 +decode: 8 + (cmd -c (arc) (dir)) 9 + 10 +decode1: 11 + (cmd -c (arc) (dir)) 12 + 13 +encode1: 14 + (if (method 1) (cmd -r -m0 -v:1213 (list) (arc d))) 15 + (if (method 2) (cmd -r -m0 -v:1423 (list) (arc d))) 16 + 17 +sfxd: 18 + (if (method 1) (cmd -r -m1 -v:1213 (list) (arc d))) 19 + (if (method 2) (cmd -r -m1 -v:1423 (list) (arc d)))
Added Release/caldix.exe version [283b6be610acf226]
cannot compute difference between binary files
Added Release/html/cmpr.png version [97b379c3ee862c55]
cannot compute difference between binary files
Added Release/html/efaq.htm version [bd495666d3e3810a]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html><head> 3 + <meta http-equiv="Content-Type" content="text/html"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h2><a name="1">1. I can't extract Any archive by Noah!</a></h2> 9 +<p> 10 +Have you <a href="eusage.htm#DLL">installed the DLLs</a> ? 11 +</p> 12 + 13 +<h2><a name="2">2. Where to get DLL?</a></h2> 14 +<p> 15 +<a href="eusage.htm#DLL">Here</a>. 16 +</p> 17 + 18 +</body></html>
Added Release/html/eindex.htm version [c6448e140b68aa3d]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html><head> 3 + <meta http-equiv="Content-Type" content="text/html"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="index.css"> 6 +</head><body> 7 + 8 +<div class="navi"><a href="jmanual.htm" target="_parent">Japanese</a> | English</div> 9 + 10 +<ol> 11 + <li><a href="etop.htm" target="Main">TOP</a><ul></ul></li> 12 + <li>TO RUN NOAH...<ul> 13 + <li><a href="eusage.htm#DLL" target="Main">Get DLLs</a></li> 14 + </ul></li> 15 + <li>USAGE<ul> 16 + <li><a href="eusage.htm#cmpr" target="Main">Compression</a></li> 17 + <li><a href="eusage.htm#extr" target="Main">Extraction</a></li> 18 + <li><a href="eusage.htm#view" target="Main">View</a></li> 19 + <li><a href="eusage.htm#conf" target="Main">Configuration</a></li> 20 + </ul></li> 21 + <li>FAQ<ul> 22 + <li><a href="efaq.htm#1" target="Main">I can't extract Any archive by Noah!</a></li> 23 + <li><a href="efaq.htm#2" target="Main">Where to get DLL?</a></li> 24 + </ul></li> 25 + <li>INFOMATION<ul> 26 + <li><a href="esonota.htm#nysl" target="Main">license</a></li> 27 + <li><a href="esonota.htm#address" target="Main">about us</a></li> 28 + </ul></li> 29 +</ol> 30 + 31 +</body></html>
Added Release/html/emanual.htm version [0c11afbfc0c74426]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html><head> 3 + <meta http-equiv="Content-Type" content="text/html"> 4 + <title>Noah User's Manual</title> 5 +</head><frameset cols="200,*"> 6 + 7 +<frame src="eindex.htm" name="Menu" frameborder="0"> 8 +<frame src="etop.htm" name="Main" frameborder="0"> 9 + 10 +<noframes><body><p> 11 +<a href="eindex.html">INDEX</a> 12 +</p><p> 13 +You should view this manual using the browser which supports 'FRAME' ... 14 +</p></body></noframes> 15 + 16 +</frameset></html>
Added Release/html/esonota.htm version [aa33baeb81b75ef6]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html><head> 3 + <meta http-equiv="Content-Type" content="text/html"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h2><a name="nysl">License( NYSL version 0.9982en )</a></h2> 9 +<pre> 10 + A. This software is "Everyone'sWare". It means: 11 + Anybody who has this software can use it as if you're 12 + the author. 13 + 14 + A-1. Freeware. No fee is required. 15 + A-2. You can freely redistribute this software. 16 + A-3. You can freely modify this software. And the source 17 + may be used in any software with no limitation. 18 + 19 + B. The author is not responsible for any kind of damages or loss 20 + while using or misusing this software, which is distributed 21 + "AS IS". No warranty of any kind is expressed or implied. 22 + You use AT YOUR OWN RISK. 23 +</pre> 24 + 25 +<h2><a name="address">About Us</a></h2> 26 +<address><dl> 27 +<dt>K.INABA ( <a href="http://www.kmonos.net/index.en.html" target="_top">kMonos.NET</a> )</dt><dd> 28 +Program. 29 +</dd><dt>SB ( <a href="http://homepage3.nifty.com/scriba/" target="_top">SB Room</a> )</dt><dd> 30 +Icon Design. 31 +</dd></dl></address> 32 + 33 +</body></html>
Added Release/html/etop.htm version [89e511bda5a9f2fb]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html><head> 3 + <meta http-equiv="Content-Type" content="text/html"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h1>Noah User's Manual</h1> 9 +<p class="intro"> 10 +Thank you for downloading Noah! 11 +</p><p class="intro"> 12 +This document is a manual for "Noah" 13 +- a tiny archiver for Windows 95/98/Me/NT4/2000/XP/2003. 14 +</p> 15 + 16 +</body></html>
Added Release/html/eusage.htm version [95ac972b9757f5f2]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html><head> 3 + <meta http-equiv="Content-Type" content="text/html"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h2><a name="DLL">DLLs you need</a></h2> 9 +<p> 10 +Most of Noah's compression/decompression engine is offered as DLL file. 11 +You must install those DLLs to '/windows/system' directory to handle corresponding archives. 12 +</p> 13 +<p> 14 +Here is all formats that Noah supports by default. 15 +</p> 16 +<ul> 17 +<li>ace-extract ( <a href="http://www.winace.com/" target="_blank">UnaceV2.dll</a> )</li> 18 +<li>arj-extract ( <a href="http://www.csdinc.co.jp/archiver/lib/unarj32.html">Unarj32j.dll</a> )</li> 19 +<li>bza,gza ( <a href="http://www.csdinc.co.jp/archiver/lib/bga32.html">Bga32.dll</a> )</li> 20 +<li>cab ( <a href="http://www.csdinc.co.jp/archiver/lib/cab32.html">Cab32.dll</a> )</li> 21 +<li>cpt-extract ( No Need for DLL )</li> 22 +<li>gca-extract ( <a href="http://www.csdinc.co.jp/archiver/lib/ungca32.html">UnGCA32.dll</a> )</li> 23 +<li>lzh ( <a href="http://www.csdinc.co.jp/archiver/lib/main-e.html">Unlha32.dll</a> )</li> 24 +<li>MSCompress ( No Need for DLL )</li> 25 +<li>rar-extract ( <a href="http://www.csdinc.co.jp/archiver/lib/unrar32.html">Unrar32.dll & Unrar.dll</a> )</li> 26 +<li>tar,gzip,bzip2,compress,cpio ( <a href="http://www.csdinc.co.jp/archiver/lib/tar32.html">Tar32.dll</a> )</li> 27 +<li>yz1 ( <a href="http://www.csdinc.co.jp/archiver/lib/yz1.html">Yz1.dll</a> )</li> 28 +<li>zip-compress ( <a href="http://www.csdinc.co.jp/archiver/lib/zip32j.html">Zip32j.dll</a> & <a href="http://www.info-zip.org/pub/infozip/Zip.html" target="_blank">Zip32.dll</a> )</li> 29 +<li>zip-extract ( <a href="http://www.csdinc.co.jp/archiver/lib/main-e.html">UnZip32.dll</a> - not InfoZip's UnZip )</li> 30 +</ul> 31 +<p> 32 +many of these DLLs are take parts in <a href="http://archiver.wakusei.ne.jp/index-e.html" target="_blank">Common Archivers Library Project</a>. 33 +</p> 34 +<p> 35 +You can use 'DLL Download' in StartMenu->Noah to download and 36 +install these DLLs automatically. Try it. 37 +</p> 38 + 39 +<h2><a name="cmpr">Compression</a></h2> 40 +<p> 41 +Drag-and-Drop files to Noah's icon. Then you'll have an archive at the direcotry 42 +you specified in the configure dialog. 43 +</p> 44 +<p> 45 +If you drop files with 'Ctrl' key pressed, then you can archive them to 46 +an SFX archive (executable and self-extractable archive.)<br> 47 +*) for lzh, cab, bga archives only. 48 +</p> 49 +<p> 50 +When you drop multiple files, normally Noah will pack them to one archive. 51 +But if you drop files with 'Alt' key pressed, then each files is compressed to 52 +different archives. 53 +</p> 54 + 55 +<h2><a name="extr">Extraction</a></h2> 56 +<p> 57 +Drag-and-Drop archives to Noah's icon. Noah automatically decides which operation 58 +(compress, or extract) to do by analyzing dropped files. 59 +</p> 60 + 61 +<h2><a name="view">View</a></h2> 62 +<p> 63 +When you drop archives with 'Ctrl' key pressed, Noah will go into 'Arc-View-Mode'. 64 +In this mode, you can directly open files inside the archive, etc. 65 +</p> 66 + 67 +<h2><a name="conf">Configuration</a></h2> 68 + 69 +<h4>Compress Tab</h4> 70 +<p> 71 +<b>Destination Folder:</b> specify where to put the arhive.<br> 72 +<b>Method:</b> the type of archive you want to create. 'zip' - 'normal' is recommended.<br> 73 +<b>Which-To-Do:</b> 74 +Noah automatically decides whick operation - Compress or Extract - to do. 75 +You can change this decision's rule here.<br> 76 +mode-1 = gives priority to 'Compress' operation.<br> 77 +mode-2 = gives priority to 'Extract' operation. (default)<br> 78 +</p> 79 + 80 +<h4>Extract Tab</h4> 81 +<p> 82 +<b>Destination Folder:</b> specify where to put the extracted files.<br> 83 +<b>Create Directory etc:</b> automatically create a directory with same name of the archive at the Destination Folder, or not.<br> 84 +</p> 85 + 86 +<h4>Windows Tab</h4> 87 +<p> 88 +<b>Association:</b> After checking these boxes, you can extract archives by Double-Clicking.<br> 89 +<b>D&D Shell Extension:</b> On the menu shown at D&D in explorer by right mouse key.<br> 90 +<b>Shortcut:</b> Shortcut.<br> 91 +</p> 92 + 93 +<h4>About Tab</h4> 94 +<p> 95 +Show the version of Noah and installed DLLs. 96 +</p> 97 + 98 +</body></html>
Added Release/html/extr.png version [38b56a686467a884]
cannot compute difference between binary files
Added Release/html/faq.htm version [a10680a2232cfddd]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html lang="ja"><head> 3 + <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h2>�p�FDLL�����_�E�����[�h�����̂ɁAUnaceV2.dll �������Ă��܂���B</h2> 9 +<p> 10 +����DLL�Ɋւ��ẮA�����_�E�����[�h���o���܂���B 11 +�\����܂��AUnaceV2.dll���K�v�ȕ��͎蓮�ŃC���X�g�[�����ĉ������B 12 +</p> 13 + 14 +<h2>�p�F���k���ĉ��H���ɂ��āHSFX���āH�h���b�O���h���b�v���āH</h2> 15 +<p> 16 +�u�p��W�v�����Ă��������B 17 +</p> 18 + 19 +<h2>�p�F15���炢�̃t�@�C�������k���悤�Ƃ�����A 20 +�u�A�N�Z�X�͋��ۂ���܂����v�Əo�Ĉ��k�ł��܂���B</h2> 21 +<p> 22 +����́AWindows �̃o�O�ł��BNoah �ł����������Ĉ��k����ɂ́A 23 +[ �ݒ�_�C�A���O���J���Ă����Ƀh���b�O���h���b�v ] �Ƃ������@���Ƃ��ĉ������B 24 +</p> 25 + 26 +<h2>�p�F���k���Ă��قƂ�Ǐ������Ȃ�܂���B<br> 27 +�p�F���k����ƃT�C�Y�������܂��B</h2> 28 +<p> 29 +���̒��ɂ́A<em>���͊��Ɉ��k���Ă���</em>�t�@�C������������܂��B�悭 30 +�g������̂̒��ł́A�f�W�J���ŎB�����ʐ^�iJPEG�`���j��A�z�[���y�[�W�̉摜 31 +�t�@�C���iGIF,PNG�`���j�A���y�t�@�C���iMP3,WMA�`���j�Ȃǂ��Y�����܂��B������ 32 +�t�@�C���́A�������Ɉ��k���Ă��邽�߁ANoah�ł���ȏ�ɏ��������鎖�͕s�\�ł��B 33 +�ނ���A�t�ɑ傫���Ȃ��Ă��܂����Ƃ����蓾�܂��B 34 +</p> 35 +<p> 36 +�T�C�Y�������Ă��܂��_�ɂ��ẮA�����u���k�v�Ƃ����p�ꂪ 37 +�p�\�R���̘b�ɂȂ�ƕ��ʂƂ�����ƈ���ē���Ȃ̂������̌�������m��܂���B 38 +�Ⴆ��Noah�� sample.html �Ƃ��� 100KB �̃t�@�C�������k����ƁA 39 +sample.html �̃T�C�Y�������� 50KB �Ɂc��<em>�Ȃ�܂���</em>�B 40 +</p> 41 +<p> 42 +sample.html �t�@�C���͂��̂܂c���Ēu���āAsample.lzh �Ƃ��� 43 +�ʂ̃t�@�C�������܂��B���� sample.lzh �� sample.html �� 44 +���k�������̂ɂȂ�܂��̂ŁAsample.lzh �̕��������[���ő���Ȃ� 45 +����A���������������𓀂��� sample.html ����ɓ��邱�Ƃ� 46 +�Ȃ�܂��B 47 +</p> 48 +<p> 49 +���̃t�@�C���͂��̂܂܂ŁA�ʂɈ��k�����t�@�C��������̂ŁA 50 +������ƌ��ɂ́A�T�C�Y�͑����Ă��܂��킯�ł��ˁB 51 +�ǂ��炩�Ƃ����Ɓu���k�v�ƌ������́u<em>�k���R�s�[</em>�v�Ƃ������o�ł��B 52 +</p> 53 + 54 +<h2>�p�F[abc].txt �� -def-.doc �Ƃ������O�̃t�@�C�������k�ł��Ȃ�</h2> 55 +<p> 56 +'[' �� ']' ���܂�ł�����A'-' �Ŏn�܂�t�@�C�����������悤�Ƃ���ƁA 57 +�듮�삷�邱�Ƃ������ł��B�\����܂��A�t�@�C������ύX���邩 58 +�K���ȃt�H���_�Ɉڂ��Ă���A�t�H���_���ƈ��k���Ă��������B 59 +</p> 60 + 61 +<h2>�p�F���k���Ă���JAK�������悤�Ǝv�����̂�Noah�ɑ�������𓀂���Ă��܂��܂��B</h2> 62 +<p> 63 +�����̎������A�ݒ���u��Ɉ��k�v�ɕς��Ĉ��k���ĉ������B 64 +�łȂ��Ə��ɂ�����𓀂��Ă��܂��܂��B 65 +��x�����ݒ��ς���ς����́A<br> 66 +�P�DShift�������Ȃ���h���b�O���h���b�v<br> 67 +�Q�D�o�Ă���_�C�A���O�Łu���k��p�v�ujak�v��I��<br> 68 +�R�DShift�������Ȃ���L�����Z��������<br> 69 +</p> 70 + 71 +<h2>�p�FShift�ő������烁�������J���܂��B</h2> 72 +<p> 73 +���̎�Ȃǂ̃J�X�^�}�C�Y�\�t�g�ŁA 74 +�u���o�^�t�@�C���͂Ƃ肠�����������ŊJ���v�I�ݒ�ɂ��Ă���� 75 +���̖�肪�������܂��BNoah�ł͂ǂ����悤���Ȃ��̂ł��̃J�X�^�}�C�Y�� 76 +��߂邩�ANoah�̐ݒ�͕��ʂ̃_�u���N���b�N�ōs���ĉ�����悤���肢���܂��B 77 +</p> 78 + 79 +<h2>�p�F���ɃA�C�R���𑼂̂��̂ɕς������B</h2> 80 +<p> 81 +<a href="http://homepage3.nifty.com/scriba/manu/icon.html">Noah�̃A�C�R����ς���</a> 82 +�ɃA�C�R���ύX���@��������Ă��܂��B�܂��A���̃y�[�W����̃����N�����ǂ�ƁA 83 +Noah�p�A�C�R���Z�b�g�������ɓ���܂��B���D���ȕ����ǂ����B 84 +��҂�K.INABA�͕W���̃A�C�R�����D���Ȃ�ł����ǂˁ[�B(^^; 85 +</p> 86 + 87 +</body></html>
Added Release/html/icon.htm version [5cd97c2814d58cbd]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html lang="ja"><head> 3 + <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h2>���ɃA�C�R���ύX�ɂ���</h2> 9 +<p> 10 +2004/08/04 �����[�X�� Noah version 3.194 �ɂāA 11 +Noah�ň������Ƀt�@�C���i���k�t�@�C���j�̃A�C�R����ύX���܂����B 12 +����܂� 13 +</p> 14 +<p> 15 +<img src="old_lzh.gif"> 16 +<img src="old_zip.gif"> 17 +</p> 18 +<p> 19 +�̂悤�ȁu���Ɛ��v�̊G�ň��k�t�@�C�����\������Ă��܂������A�V�����o�[�W�����ł́A 20 +</p> 21 +<p> 22 +<img src="new_lzh.gif"> 23 +<img src="new_zip.gif"> 24 +</p> 25 +<p> 26 +�̂悤�ȁu�莆�ƉH�y���v�̊G�ɂȂ�܂��B��낵�����肢���܂��B 27 +</p> 28 + 29 +<h2>�p���`�F 3.194�����Ă��A�C�R�����ς��܂���B</h2> 30 +<p> 31 +��xNoah�̐ݒ��ʂ��J����[Windows�g��]��I�сA[�֘A�Â�]�̘g���� 32 +�`�F�b�N��S�ĊO���A[�K�p]�������Ă��������B���̌�A������x 33 +�`�F�b�N��S�ĕt�������āA�ēx[�K�p]�������܂��B����ŁA 34 +�V�����A�C�R���摜�ɒu�������Ǝv���܂��B 35 +</p> 36 + 37 +<h2>�p���`�F ���̃A�C�R���ɕς�����</h2> 38 +<p> 39 +<a href="http://homepage3.nifty.com/scriba/">SB Room</a>�ɁA 40 +Noah�p�A�C�R���Z�b�g���������J����Ă��܂��B�����������B 41 +</p> 42 + 43 + 44 +<h2>�p���`�F 7z�`������Ȃ����ɂ�7z�̃A�C�R���ɂȂ����Ⴂ�܂����B</h2> 45 +<p> 46 +���萔�ł����A������xNoah�̐ݒ��ʂ��J���āA�֘A�Â��̂�蒼�������肢���܂��B 47 +�菇�́A����"�p���`�F 3.194�����Ă��A�C�R�����ς��܂���B"�ɏ����Ă��� 48 +�ʂ�ł��B 49 +</p> 50 + 51 + 52 +</body></html>
Added Release/html/index.css version [78a560ccca7ad577]
1 + 2 +body { 3 + color: #330; 4 + background: #f5fff5; 5 + margin: 0.5em; 6 +} 7 + 8 +div.navi { 9 + font-size: smaller; 10 + text-align: center; 11 + font-weight: bolder; 12 + margin-bottom: 1em; 13 +} 14 + 15 +a { 16 + color: blue; 17 + text-decoration: none; 18 +} a:hover { 19 + color: #090; 20 + background: transparent url("niji.gif") repeat-x bottom; 21 +} 22 + 23 +ol { 24 + margin-left: 1.5em; 25 + padding: 0; 26 +} 27 +ul { 28 + margin: 1em 0 1em 0.5em; 29 + list-style-type: square; 30 + padding: 0; 31 +} 32 +li { 33 + margin-bottom: 0.1em; 34 +}
Added Release/html/index.htm version [a885357b95170201]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html lang="ja"><head> 3 + <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="index.css"> 6 +</head><body> 7 + 8 +<div class="navi">Japanese | <a href="emanual.htm" target="_parent">English</a></div> 9 + 10 +<ol> 11 + <li><a href="top.htm" target="Main">�\��</a><ul></ul></li> 12 + <li>�g�����F��b��<ul> 13 + <li><a href="usage0.htm" target="Main">Noah���g��������</a></li> 14 + <li><a href="usage1.htm#cmpr" target="Main">���k����</a></li> 15 + <li><a href="usage1.htm#extr" target="Main">�𓀂���</a></li> 16 + <li><a href="usage1.htm#sfx" target="Main">���ȉ𓀌`�����k</a></li> 17 + <li><a href="usage1.htm#conf" target="Main">�ݒ�ύX</a></li> 18 + <li><a href="usage0.htm#uninst" target="Main">�A���C���X�g�[��</a></li> 19 + </ul></li> 20 + <li>�g�����F���W��<ul> 21 + <li><a href="usage2.htm#each" target="Main">�ʈ��k</a></li> 22 + <li><a href="usage2.htm#view" target="Main">���ɓ��{�����[�h</a></li> 23 + <li><a href="usage2.htm#format" target="Main">Noah�ň�����`��</a></li> 24 + <li><a href="usage2.htm#mode" target="Main">���샂�[�h�ɂ���</a></li> 25 + <li><a href="usage2.htm#cmdline" target="Main">�R�}���h���C��</a></li> 26 + <li><a href="usage2.htm#iniconfig" target="Main">�B���ݒ�</a></li> 27 + </ul></li> 28 + <li>�p��W<ul> 29 + <li><a href="yougo.htm#cmpr" target="Main">���k�E��</a></li> 30 + <li><a href="yougo.htm#arc" target="Main">���ɁE�A�[�J�C�u</a></li> 31 + <li><a href="yougo.htm#sfx" target="Main">���ȉ𓀌`��</a></li> 32 + <li><a href="yougo.htm#dnd" target="Main">�h���b�O���h���b�v</a></li> 33 + </ul></li> 34 + <li><a href="faq.htm" target="Main">�悭���鎿��</a><ul> 35 + </ul></li> 36 + <li>���̑�<ul> 37 + <li><a href="sonota.htm#history" target="Main">�X�V����</a></li> 38 + <li><a href="sonota.htm#nysl" target="Main">���p����</a></li> 39 + <li><a href="sonota.htm#link" target="Main">�Q�l�T�C�g</a></li> 40 + <li><a href="sonota.htm#address" target="Main">�A����</a></li> 41 + </ul></li> 42 +</ol> 43 + 44 +</body></html>
Added Release/html/jmanual.htm version [ff729b89c6d9e4f4]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html><head> 3 + <meta http-equiv="Content-Type" content="text/html"> 4 + <title>Noah User's Manual</title> 5 +</head><frameset cols="200,*"> 6 + 7 +<frame src="index.htm" name="Menu" frameborder="0"> 8 +<frame src="top.htm" name="Main" frameborder="0"> 9 + 10 +<noframes><body><p> 11 +<a href="index.html">INDEX</a> 12 +</p><p> 13 +You should view this manual using the browser which supports 'FRAME' ... 14 +</p></body></noframes> 15 + 16 +</frameset></html>
Added Release/html/new_lzh.gif version [8ea25d28eed6a0ef]
cannot compute difference between binary files
Added Release/html/new_zip.gif version [502c1b5198b47cff]
cannot compute difference between binary files
Added Release/html/niji.gif version [6b7500f1fcb9a0bc]
cannot compute difference between binary files
Added Release/html/noahman.css version [ba993fdb0954e0a7]
1 + 2 +body { 3 + color: #330; 4 + background: #fff5ff; 5 + margin: 1em; 6 + padding: 0; 7 +} 8 + 9 +a:link, a:visited, a:active { 10 + color: blue; 11 + text-decoration: none; 12 +} a:hover { 13 + color: #090; 14 + background: transparent url("niji.gif") repeat-x bottom; 15 +} 16 + 17 +h1 { 18 + font-size: 300%; 19 + font-family: fantasy; 20 + font-weight: bolder; 21 + text-align: center; 22 + color: #090; 23 + margin-top: 1em; 24 + margin-bottom: 2em; 25 +} 26 +h2 { 27 + color: black; 28 + background: #eeeed0; 29 + font-size: 120%; 30 + margin-top: 2em; 31 +} 32 +h3 { 33 + color: black; 34 + background: #eeeed0; 35 + font-size: 120%; 36 +} 37 +h4 { 38 + color: #040; 39 + font-size: 80%; 40 + margin-left: 2em; 41 +} 42 + 43 +p { 44 + margin-left: 1em; 45 +} 46 +p.intro { 47 + text-align: center; 48 +} 49 +div.down1 { 50 + margin-left: 2em; 51 + margin-bottom: 1em; 52 +} 53 + 54 +address { 55 + font-style: normal; 56 + margin-left: 1em; 57 +} 58 + 59 +dl { 60 + margin-left: 1em; 61 +} 62 +dd { 63 + margin-left: 2em; 64 + margin-bottom: 1em; 65 + font-size: smaller; 66 +} 67 +ul { 68 + margin-left: 2em; 69 +} 70 + 71 +em { 72 + color: #933; 73 + font-weight: bolder; 74 + font-style: normal; 75 + text-decoration: none; 76 +}
Added Release/html/old_lzh.gif version [1e609520d75a70cc]
cannot compute difference between binary files
Added Release/html/old_zip.gif version [600b4c7ad7768e3f]
cannot compute difference between binary files
Added Release/html/sonota.htm version [c9f99691b6f7fd6d]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html lang="ja"><head> 3 + <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h2><a name="history">�X�V����</a></h2> 9 +<dl> 10 +<dt>3.199</dt><dd><ul> 11 +<li>�C���X�g�[���œY�t�� caldix �̃o�[�W������ 1.21 �ɍX�V</li> 12 +<li>�W���� tar.xz �� tar.lzma �̈��k�ɑΉ��i�ŐV��Tar32.dll���K�v�ł��j�B 13 +�i�֘A�Â��́A�ݒ��ʂň�[tar�̊֘A�Â����O���ĕۑ��I�����Ă���A 14 +������xtar�Ɋ֘A�Â������Ă��������B.xz �� .lzma �� Noah �� 15 +�֘A�Â�����܂��B�j</li> 16 +</ul></dd> 17 +<dt>3.198</dt><dd><ul> 18 +<li>Windows XP SP2 �ȏ�łȂ��Ɠ����Ȃ��Ȃ��Ă��������C��</li> 19 +</ul></dd> 20 +<dt>3.197</dt><dd><ul> 21 +<li>MSVCR100.dll ���Ȃ��Ɠ����Ȃ��Ȃ��Ă��������C��</li> 22 +</ul></dd> 23 +<dt>3.196</dt><dd><ul> 24 +<li><a href="http://jvn.jp/cert/JVNVU707943/index.html">JVNVU#707943 25 + : Windows �v���O������ DLL �ǂݍ��݂ɐƎ㐫</a> �ւ̑Ώ�</li> 26 +<li>�����ݒ莞�̈��k�`���� lzh ���� zip �ɕύX���܂���</li> 27 +<li>ACE�̎��ȉ𓀏��ɂ̔F���͈͂��L���܂���</li> 28 +<li>Noah.exe �{�̂�UPX���k���Ȃ��悤�ɂ��܂���</li> 29 +<li>b2e��\��/�ɒu��������(slash A)��lj�</li> 30 +<li>Noah�̐ݒ��ʂւ�D&D�ł̈��k�E�W�J�@�\���}�j���A���ɋL��</li> 31 +<li>���p1�����̖��O�̃t�H���_�����k�������̂�W�J����ƁA�W�J��t�H���_���J����Ȃ��o�O���C��</li> 32 +<li>ACE���ɂ̏��ɓ��{�����[�h�ŁA���k�����̔��肪�Ԉ���Ă����̂��C��</li> 33 +<li>7-zip �`���ł̈��k��W�J�ŁA"-" �Ŏn�܂�t�@�C������������悤�ɏC��</li> 34 +<li>b2e ���g���Ă����ꍇ���o�C�g�����ŏI��閼�O�̃t�@�C�������k�ł��Ȃ������o�O�C��</li> 35 +<li>D&D������ANoah�����̂܂܋N�����Ă���Əo�͐�t�H���_���폜�ł��Ȃ��o�O���C��</li> 36 +<li>�o�b�t�@�I�[�o�[�t���[�ƃ��\�[�X���[�N�̊댯���������C��</li> 37 +<li>b2e�̈����Z���������������i���0�ɂȂ��Ă����j�o�O���C��</li> 38 +<li>MSCompress�`���ł̈��k���Ƀ^�C���X�^���v�����t�@�C���ƍ��킹��悤�ɏC��</li> 39 +<li>���k/�𓀐�f�B���N�g���ݒ�̃G�f�B�b�g�{�b�N�X��IME�œ��͂���ƕ�����������o�O���C��</li> 40 +<li>b2e��scan�Ńt�@�C�������X�g�A�b�v�����Ƃ��Ō�ɃS�~��������o�O���C��</li> 41 +<li>�i�������ʂȂǂ���j�قȂ�f�B���N�g���ɂ��鏑�ɂ��ꊇ��Noah�ɓn���Ă��𓀂͂ł���悤�ɕύX</li> 42 +</ul></dd> 43 +<dt>3.195</dt><dd><ul> 44 +<li>7z�̏��ɃA�C�R����lj��B</li> 45 +<li>7z���ɂ̈��k���[�h�� LZMA(fast), LZMA(std) ��lj��B</li> 46 +<li>ace����,cpt���ɓ��̐�p�X��".."���܂܂�Ă��閼�O�̃t�@�C����<br/> 47 +�@�@ �W�J���悤�Ƃ����Ƃ��Ɋm�F���b�Z�[�W���o���悤�ɕύX�B</li> 48 +<li>jar����(Java Archive)��7-zip32.DLL�œW�J����悤�ɂ��܂����B</li> 49 +<li>Noah�Ɠ����t�H���_��caldix.ini�t�@�C��������Ƃ��ɂ́A<br/> 50 +�@�@ DLL��caldix�̃C���X�g�[���悩�����������悤�ɂ��܂����B<br/> 51 +�@�@�i�������A�V�X�e���t�H���_�̕����D��ł��B�j</li> 52 +<li>���ɂ̑��݂���f�B���N�g�����Ǎ���p���ǂ�����<br/> 53 +�@�@ ���胋�[�`����ύX�i�܂��e�X�g���j</li> 54 +</ul></dd> 55 +<dt>3.194</dt><dd><ul> 56 +<li>���ɃA�C�R���ύX�B</li> 57 +<li>GCA�̎��ȉ𓀏��ɂ��W�J�ł��Ȃ��Ȃ��Ă����o�O�C���B</li> 58 +<li>zip�̓W�J��7-zip32.DLL��D�悵�Ďg���悤�ɂ��܂����B</li> 59 +<li>7z.sfx�����ŁA7-zip32.DLL�݂̂�7z�`���̎��ȉ𓀏��ɂ�<br/> 60 +�@�@�쐬�ł���悤�ɂ��܂����B</li> 61 +<li>b2e: xscan�R�}���h��lj�</li> 62 +<li>b2e: �[��������(cmd)�̌`������</li> 63 +<li>b2e: +���_��OR�A*���_��AND�Ƃ��Ă��g����悤�ɂ��܂����B</li> 64 +<li>���A�ׂ��ȃo�O�t�B�b�N�X�����</li> 65 +</ul></dd> 66 +<dt>3.193</dt><dd><ul> 67 +<li>Win9x �n�ŁA�������ʂ��s��Ȃ��ꍇ�Ɉ��k�𓀂��S���ł��Ȃ��Ȃ��Ă����o�O�̏C��</li> 68 +<li>zip - 7zip�`���̐ݒ�����k���ŗD��ɂ���</li> 69 +<li>���ɉ{�����[�h�ŁA[�t�@�C����][���v���k��][���Ɍ`��] ��\������悤�ɂ���</li> 70 +<li>ini�t�@�C���ɉB���ݒ荀��NoExt��lj�</li> 71 +</ul></dd> 72 +<dt>3.192</dt><dd><ul> 73 +<li>���Ƀt�@�C������"explorer.exe"�Ƃ����t�@�C�������݂����ꍇ��<br /> 74 +�@�@�𓀌�ɂ�����������s���Ă��܂��Z�L�����e�B�z�[���̏C��</li> 75 +<li>�t�@�C�����擪��'.'�͊g���q�̎n�܂�Ƃ݂Ȃ��Ȃ��ŏ��ɖ������悤�ɂ���<br /> 76 +�@�i�Ⴆ�A".htaccess"�����k����Ƃ���܂ł�".lzh"�Ƃ������ɂ��j<br /> 77 +�@�i�o���܂������A�V�o�[�W�����ł�".htaccess.lzh"�ɂȂ�܂��B�j</li> 78 +<li>ini�t�@�C���ɐݒ荀��MultiBootLimit��lj�</li> 79 +</ul></dd> 80 +<dt>3.191</dt><dd><ul> 81 +<li>b2e�X�N���v�g�Ɋւ���ׁX�Ƃ����o�O�t�B�b�N�X</li> 82 +<li>���[���A�h���X�AURL�ύX�ɔ����t�������̍X�V</li> 83 +</ul></dd> 84 +<dt>3.19</dt><dd><ul> 85 +<li>aaa.bbb.ccc �����k������ aaa.lzh �ł͂Ȃ� aaa.bbb.lzh �Ƃ��邽�߂̐ݒ荀�ڂ�ini�t�@�C���ɒlj��B</li> 86 +</ul></dd> 87 +<dt>3.18</dt><dd><ul> 88 +<li>���k�`�����Ȃǂ̂Ƃ���Ƀ}�E�X�Ă�ƃc�[���`�b�v�\������悤�ɂ���</li> 89 +<li>b2e �� (cmd), (xcmd) �ŏI���R�[�h��Ԃ��悤�ɕύX</li> 90 +</ul></dd> 91 +<dt>3.17</dt><dd><ul> 92 +<li>7-zip32.dll�Ή��Ɋւ���F�X</li> 93 +<li>NT�n�ŁA���ɉ{�����[�h����t�@�C�����h���b�v�o���Ȃ����Ƃ����������o�O�C��</li> 94 +</ul></dd> 95 +<dt>3.16</dt><dd><ul> 96 +<li>MS-Compress�`����b2e���p�`���ł̈��k���\�����ς������̂��C��</li> 97 +<li>ini�t�@�C���ɐݒ荀�� MiniBoot ��lj�</li> 98 +<li>UnaceV2.dll�Ȃǂ̃o�[�W�����ԍ����\�Ȃ�\������悤�ɂ���</li> 99 +<li>b2e: (find) (use) �lj�</li> 100 +</ul></dd> 101 +<dt>3.15</dt><dd><ul> 102 +<li>caldix.ini�������Y��Ȃ��悤�ɃA���C���X�g�[�����C��</li> 103 +<li>[�{�����[�h] ���k��T�C�Y��42MB�ȏ�̃t�@�C���ɂ��Ĉ��k���\�����ς������̂��C��</li> 104 +<li>[�{�����[�h] ���ڂ̃\�[�g���\�ɂ����B</li> 105 +<li>[�{�����[�h] ����蔲���E�N���b�N���j���[</li> 106 +<li>[b2e] size, <, > �̂R�R�}���h�lj�</li> 107 +<li>[b2e] ���l�łȂ��l�ɑ��Ă� = �� ! �ł̔�r���s����悤�ɂ���</li> 108 +</ul></dd> 109 +<dt>3.14</dt><dd><ul> 110 +<li>�p��Ń��[�h�̒����F�X�iThanks! �� ardry����</li> 111 +<li>�t�H���_���h���b�v�����Ƃ��̏��ɖ��́A�s���I�h�ȍ~�������Ȃ��悤�ɕύX</li> 112 +<li>b2e �� input �R�}���h�lj�</li> 113 +<li>�C���X�g�[���łɓ�����caldix��Ver 1.10��</li> 114 +</ul></dd> 115 +<dt>3.131</dt><dd><ul> 116 +<li>'%' �̍����������O�̃t�@�C����b2e�X�N���v�g�ň����Ȃ��o�O�C��</li> 117 +</ul></dd> 118 +<dt>3.13</dt><dd><ul> 119 +<li>'@' �Ŏn�܂�t�@�C���̈��k�ւ̑Ή�������</li> 120 +<li>���ɓ��t�@�C�����X�g�ɗ]�v�ȃS�~���\������邱�Ƃ��������o�O�C��</li> 121 +</ul></dd> 122 +<dt>3.12</dt><dd><ul> 123 +<li>�𓀐�t�H���_�����A�u���ɖ��̍ŏ��� . �ȍ~��S�����������́v�ł͂Ȃ��u���ɖ��̍Ō�� . �ȍ~��S�����������́v�ɂ���悤�ύX�B</li> 124 +</ul></dd> 125 +<dt>3.11</dt><dd><ul> 126 +<li>'-'�Ŏn�܂�����'['���܂肷�閼�O�̃t�@�C����zip���k���\�ɂ���</li> 127 +<li>zip�����k���ɂ̍쐬�ɑΉ�</li> 128 +</ul></dd> 129 +<dt>3.10+</dt><dd><ul> 130 +<li>�Y�t����caldix�̃o�[�W������1.06�ɕύX��������</li> 131 +</ul></dd> 132 +<dt>3.10</dt><dd><ul> 133 +<li>���k�`���̐ݒ�𐳂������[�h�o���Ȃ����Ƃ��������o�O�C��</li> 134 +<li>b2e�ɁAscan �R�}���h�lj�</li> 135 +</ul></dd> 136 +<dt>3.06</dt><dd><ul> 137 +<li>NT�n��ace�̕������ɂ��𓀂ł��Ȃ������o�O�C��</li> 138 +<li>b2e�ɁAresp, resq, listr �R�}���h�lj�</li> 139 +</ul></dd> 140 +<dt>3.05</dt><dd><ul> 141 +<li>Windows XP �����Ή��łł�</li> 142 +<li>XP �� VisualStyle �ɑΉ�</li> 143 +<li>NT�n��US���[�hb2e�������Ȃ������o�O�C��</li> 144 +</ul></dd> 145 +<dt>3.04</dt><dd><ul> 146 +<li>Yz1���ɂ̓��e�{�����\�ɂ��� (YZ1.DLL ver 0.20�ȏオ�K�v)</li> 147 +<li>�R�}���h���C���I�v�V���� -cx, -ca �lj�</li> 148 +<li>b2e�ɁAUS���[�h�ŊO���A�v�����N������@�\��lj�</li> 149 +<li>���C�Z���X��NYSL 0.99�ɕύX</li> 150 +</ul></dd> 151 +<dt>3.031</dt><dd><ul> 152 +<li>�{�����[�h�Ń_�u���N���b�N���Ă��t�@�C�����e��\���ł��Ȃ��Ȃ��Ă��o�O�C��</li> 153 +<li>���C�Z���X��NYSL 0.03�ɕύX</li> 154 +</ul></dd> 155 +<dt>3.03</dt><dd><ul> 156 +<li>DLL�ŃG���[�����������Ƃ����̎|�\������悤�ɂ�������</li> 157 +<li>64KB�ȏ��Ace���ɂ��𓀂���Ƃ��O���t���ς������o�O�C��</li> 158 +<li>GCA�̋�t�H���_���t�@�C���ƌ�F�����Ă��o�O���C��</li> 159 +<li>�{�����[�h��.hlp���_�u���N���b�N�����Ƃ��A��Ɨp��.cnt���𓀂��Ă����d�l�ɕύX</li> 160 +<li>manual.htm�������Ƃ��Ƀw���v�{�^���������ꂽ��readme.txt���J���悤�ɕύX</li> 161 +<li>b2e�t�@�C���ɔ������Ċ֘A�Â����ڂ𑝂₷�悤�ɂ���</li> 162 +<li>b2e�I�v�V�����lj��F(arc.)</li> 163 +</ul></dd> 164 +<dt>3.02</dt><dd><ul> 165 +<li>�ݒ�Ɛݒ�_�C�A���O����v���Ȃ����Ƃ�����o�O�C��</li> 166 +<li>SFX��APassword�t����GCA���ɂ̓W�J�ɑΉ�</li> 167 +<li>CPT���ɓW�J���AResourceFork�݂̂̃t�@�C�����W�J����悤�ύX</li> 168 +<li>CPT�̔��ʋ����B�ȏ�Q�_�AThanks�I �� �m�Q����</li> 169 +<li>b2e�R�}���h�lj��F(del filename)</li> 170 +</ul></dd> 171 +<dt>3.01</dt><dd><ul> 172 +<li>�֘A�t���̃`�F�b�N�{�b�N�X�O���[�A�E�g�����𐳏퉻</li> 173 +<li>b2e�ł̂O���Z���֎~</li> 174 +<li>���ɔ���D�揇�ʂ�ύX�i�g���q�D��C���j</li> 175 +<li>lh6��lh7�ň��k�ł��Ȃ������o�O�C��</li> 176 +</ul></dd> 177 +</dl> 178 +<dl> 179 +<dt>3.00</dt><dd><ul> 180 +<li>�t�����j���[�A��</li> 181 +</ul></dd> 182 +</dl> 183 + 184 +<h2><a name="nysl">���p������</a>( <a href="http://www.kmonos.net/nysl/">NYSL</a> version 0.9982 )</h2> 185 +<pre> 186 + A. �{�\�t�g�E�F�A�� Everyone'sWare �ł��B���̃\�t�g����ɂ�����l��l���A 187 + �������̍�������̂������̂Ɠ����悤�ɁA���R�ɗ��p���邱�Ƃ��o���܂��B 188 + 189 + A-1. �t���[�E�F�A�ł��B��҂���͎g�p������v�����܂���B 190 + A-2. �L��������}�̂̔@�����킸�A���R�ɓ]�ځE�Ĕz�z�ł��܂��B 191 + A-3. �����Ȃ��ނ� ���ρE���v���O�����ł̗��p ���s���Ă��\���܂���B 192 + A-4. �ύX�������̂╔���I�Ɏg�p�������̂́A���Ȃ��̂��̂ɂȂ�܂��B 193 + ���J����ꍇ�́A���Ȃ��̖��O�̉��ōs���ĉ������B 194 + 195 + B. ���̃\�t�g�𗘗p���邱�Ƃɂ���Đ��������Q���ɂ��āA��҂� 196 + �ӔC��Ȃ����̂Ƃ��܂��B�e���̐ӔC�ɂ����Ă����p�������B 197 + 198 + C. ����Ґl�i���� K.INABA �ɋA�����܂��B���쌠�͕������܂��B 199 + 200 + D. �ȏ�̂R���́A�\�[�X�E���s�o�C�i���̑o���ɓK�p����܂��B 201 +</pre> 202 + 203 +<h2><a name="link">�Q�l�T�C�g</a></h2> 204 + 205 +<dl> 206 +<dt>�����A�[�J�C�o�E�v���W�F�N�g�i<a href="http://www.csdinc.co.jp/archiver/" target="_top">http://www.csdinc.co.jp/archiver/</a>�j</dt><dd> 207 +���ɑ���W�̋��ʎd�lDLL����낤�I�Ƃ����v���W�F�N�g�ł��B 208 +���k�E�𓀂Ɋւ����ڂȂ̂ŁA�N�ł���x�͖ڂ�ʂ��Ă������Ƃ������߂��܂��B 209 +</dd><dt>�s�����������i<a href="http://www.tomozo.ne.jp/" target="_top">http://www.tomozo.ne.jp/</a>�j</dt><dd> 210 +�X�V��m�点�T�C�g�ł��B�����Ń��[���A�h���X��o�^����ƁA 211 +Noah���o�[�W�����A�b�v�����Ƃ��ɒʒm���[��������悤�ɂȂ�܂��B 212 +</dd></dl> 213 + 214 +<h2><a name="address">�J����</a></h2> 215 +<address><dl> 216 +<dt>K.INABA�i <a href="http://www.kmonos.net/" target="_top">kMonos.NET</a> �j</dt><dd> 217 +�v���O���~���O�B 218 +</dd><dt>�r�a�i <a href="http://homepage3.nifty.com/scriba/" target="_top">SB Room</a> �j</dt><dd> 219 +�A�C�R������B 220 +</dd></dl></address> 221 + 222 +</body></html>
Added Release/html/top.htm version [c3a0bdf7c9b50a6c]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html lang="ja"><head> 3 + <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h1>Noah User's Manual</h1> 9 +<p class="intro"> 10 +Noah�_�E�����[�h���肪�Ƃ��������܂��B 11 +</p><p class="intro"> 12 +"Noah"�́AWindows 95/98/Me/NT4/2000/XP/2003 ���<br> 13 +�t�@�C���̈��k�E�𓀂��s�����߂̃\�t�g�ł��B<br><br> 14 +�g�p����O�ɕK���u�g�����F��b�ҁv�ɂ�<br> 15 +�ڂ�ʂ��Ă����ĉ������B 16 +</p><p class="intro"> 17 +<strong>�d�v�I</strong> 18 +2004/08/04 : <em><a href="icon.htm">���ɃA�C�R���ύX�ɂ���</a></em> 19 +</p> 20 + 21 +</body></html>
Added Release/html/usage0.htm version [abc7a62ad33f523e]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html lang="ja"><head> 3 + <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h2><a name="dll">Noah���g�������� - DLL���C���X�g�[�����悤�I -</a></h2> 9 +<p> 10 +�����̍�Ƃ́ANoah���C���X�g�[������Ƃ���<em>DLL�̎����C���X�g�[���� 11 +�I��点�����ɂ͕K�v����܂���</em>�B��������Noah�͎g����悤�ɂȂ��Ă��܂��B 12 +</p> 13 +<h3>�C���^�[�l�b�g�ڑ��ł���ꍇ�i�����߁j</a></h3> 14 +<p> 15 +�X�^�[�g���j���[��Noah�̂Ƃ��납��u<em>DLL�����C���X�g�[��</em>�v��I��Ŏ��s���ĉ������B 16 +���Ƃ͉�ʂ̎w���ɏ]���đ��������A������DLL�̃C���X�g�[���͊����ł��I 17 +</p> 18 + 19 +<h3>�蓮�ł��ꍇ</a></h3> 20 +<h4>DLL����</h4> 21 +<p> 22 +<a href="http://archiver.wakusei.ne.jp/" target="_blank">�����A�[�J�C�o�v���W�F�N�g</a>���� 23 +�_�E�����[�h���邩�A�G���̕t�^���Ŏ�ɓ���Ă��������B 24 +<em>Unlha32.dll �� UnZip32.dll</em> ������Ƃ肠�����͏\���ł��B 25 +</p> 26 +<h4>�C���X�g�[��</h4> 27 +<p> 28 +��ɓ��ꂽDLL�́A�ŏ��͓d�q�����W�̊G�̃t�@�C���ɂȂ��Ă���͂��ł��B 29 +��������s���āA��ʂ̎w���ɏ]���Ă����A���Ƃ͎����ŃC���X�g�[������܂��B 30 +�����Noah���g�������͊����ł��B 31 +</p> 32 + 33 +<h3>Noah�Ŏg����SDLL�i�Q�l�����j</a></h3> 34 + <li><a href="http://www.winace.com/" target="_blank">UnaceV2.dll</a></li> 35 + <li><a href="http://www.csdinc.co.jp/archiver/lib/unarj32.html">Unarj32j.dll</a></li> 36 + <li><a href="http://www.csdinc.co.jp/archiver/lib/bga32.html">Bga32.dll</a></li> 37 + <li><a href="http://www.csdinc.co.jp/archiver/lib/cab32.html">Cab32.dll</a></li> 38 + <li><a href="http://www.csdinc.co.jp/archiver/lib/jack32.html">Jack32.dll</a></li> 39 + <li><a href="http://www.csdinc.co.jp/archiver/lib/ungca32.html">UnGCA32.dll</a></li> 40 + <li><a href="http://www.csdinc.co.jp/archiver/lib/unlha32.html">Unlha32.dll</a></li> 41 + <li><a href="http://www.csdinc.co.jp/archiver/lib/unrar32.html">Unrar32.dll & Unrar.dll</a></li> 42 + <li><a href="http://www.csdinc.co.jp/archiver/lib/tar32.html">Tar32.dll</a></li> 43 + <li><a href="http://www.csdinc.co.jp/archiver/lib/yz1.html">Yz1.dll</a></li> 44 + <li><a href="http://www.csdinc.co.jp/archiver/lib/zip32j.html">Zip32j.dll & Zip32.dll</a></li> 45 + <li><a href="http://www.csdinc.co.jp/archiver/lib/unzip32.html">UnZip32.dll</a></li> 46 +</ul> 47 + 48 +<h3>�A���C���X�g�[��</h3> 49 +<p> 50 +Noah�̎g�p���~�߂�ꍇ�́AWindows�́u�R���g���[���p�l���v�́u<em>�A�v���P�[�V������ 51 +�lj��ƍ폜</em>�v����u���k�𓀃\�t�g Noah�v��I��ō폜���Ă��������B 52 +</p> 53 +<p> 54 +�܂��A�X�^�[�g���j���[��Noah�̃O���[�v����u<em>Noah �A���C���X�g�[��</em>�v�� 55 +�I��ł�Noah�̍폜���\�ł��B 56 +</p> 57 + 58 + 59 +</body></html>
Added Release/html/usage1.htm version [094ae0b24c7976f8]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html lang="ja"><head> 3 + <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h2><a name="cmpr">���k����</a></h2> 9 +<ul> 10 +<li>���k�������t�@�C�����E�N���b�N���u����v���j���[��Noah</li> 11 +<li>���k�������t�@�C����Noah�̃A�C�R���Ƀh���b�O���h���b�v</li> 12 +<li>���k�������t�@�C�����E�{�^���Ńh���b�O���h���b�v�������Ɉ��k</li> 13 +<li>���k�������t�@�C����Noah�̐ݒ��ʂɃh���b�O���h���b�v</li> 14 +</ul> 15 +<p> 16 +�̂S�̂����A�ǂ�ł��\�ł��B�D�݂̕��@�łǂ����B 17 +</p> 18 + 19 +<h2><a name="extr">�𓀂���</a></h2> 20 +<ul> 21 +<li>�𓀂������t�@�C�����_�u���N���b�N</li> 22 +<li>�𓀂������t�@�C�����E�N���b�N���u����v���j���[��Noah</li> 23 +<li>�𓀂������t�@�C����Noah�̃A�C�R���Ƀh���b�O���h���b�v</li> 24 +<li>�𓀂������t�@�C�����E�{�^���Ńh���b�O���h���b�v�������ɉ�</li> 25 +<li>�𓀂������t�@�C����Noah�̐ݒ��ʂɃh���b�O���h���b�v</li> 26 +</ul> 27 +<p> 28 +�̂T�̂����A�ǂ�ł��\�ł��B�D�݂̕��@�łǂ����B 29 +���k�ƑS�������菇�̂��̂���ł����A���k���ׂ����𓀂��ׂ����� 30 +Noah�������Ŕ��f����̂Ŗ�肠��܂���B 31 +</p> 32 + 33 +<h2><a name="sfx">���ȉ𓀌`���ň��k����</a></h2> 34 +<p> 35 +<a href="#cmpr">���k</a>�̑�����A�uCtrl�v�L�[�������Ȃ���s���Ă��������B 36 +����ƁA<em>���ȉ𓀌`��</em>�ň��k�ł��܂��B�r���ʼn������낢����͂𑣂� 37 +��ʂ��o�邱�Ƃ�����܂����A�������Ăn�j�{�^���Ȃǂ������Ă��܂��đ��v�ł��B 38 +</p> 39 + 40 +<h2><a name="conf">�ݒ�ύX</a></h2> 41 +<ul> 42 +<li>Noah�̃A�C�R�����_�u���N���b�N</li> 43 +<li>�X�^�[�g���j���[��Noah��Noah</li> 44 +<li>Shift�������Ȃ���K���ȃt�@�C����[����]��[�h���b�O���h���b�v]</li> 45 +</ul> 46 +<p> 47 +�̂R�̂����A�ǂ�ł��ݒ�ύX��ʂ��N�����邱�Ƃ��\�ł��B 48 +</p> 49 +<p> 50 +���Z�Ƃ��āA�uShift�������Ȃ���K���ȃt�@�C����[����]��[�h���b�O���h���b�v]�v�̂��ƁA 51 +�uShift�������Ȃ���OK�v�Łu�ݒ��ς��Ȃ���ύX��̐ݒ�ň��k/�𓀁v�A 52 +�uShift�������Ȃ���L�����Z���v�ŁA�u�ݒ�͕ς��Ȃ�����Ǎ����͉�ʂɎc���Ă���ݒ�ň��k/�𓀁v 53 +���\�ł��B�Ⴆ�A���i��lzh������Ǎ�������zip�ň��k�������A�Ƃ����Ƃ���Shift�L�����Z�����֗��ł��B 54 +</p> 55 +<p> 56 +�ȉ��͊e�X�̐ݒ荀�ڂ̐����B 57 +</p> 58 +<h4>[���k]�^�u</h4> 59 +<p> 60 +<img src="cmpr.png" alt="���k�^�u�̉��"> 61 +</p> 62 +<ul> 63 +<li>�u���k��t�H���_�v�ł́ANoah�ō�������Ƀt�@�C����u���ꏊ���w�肵�܂��B</li> 64 +<li>�u���k�`���v�́A�ǂ̈��k�@�ň��k���邩���w�肷�闓�ł��B 65 +<em>�悭������Ȃ��Ƃ���lzh lh5</em>�ɂ��Ă����܂��傤�B</li> 66 +<li>�u���샂�[�h�v�́A�M�������k�Ɖ𓀂̂ǂ�����悭�g�����l���đI��ł��������B 67 +���k�������Ȃ��Ȃ�u���k��p�v�B���i�͉𓀂��������ǁA���܂Ɉ��k������Ȃ�u�𓀗D��v 68 +�Ƃ�������ł��B�K�Ȑݒ�ɂ����Noah�̋N�����x�����������邱�Ƃ�����܂����A 69 +��{�I�ɂ͑債�ĕς��Ȃ��̂ŁA<em>�𓀗D��</em>�������߂��܂��B 70 +�i��<a href="usage2.htm#mode">���샂�[�h�ɂ���</a>�j</li> 71 +</ul> 72 +<h4>[��]�^�u</h4> 73 +<p> 74 +<img src="extr.png" alt="�𓀃^�u�̉��"> 75 +</p> 76 +<ul> 77 +<li>�u�𓀐�t�H���_�v�ł́ANoah�ʼn𓀂����t�@�C����u���ꏊ���w�肵�܂��B</li> 78 +<li>�u�t�H���_���������v��ON�ɂ��Ă����ƁA�𓀐�ɏ��ɂƓ������O�̃t�H���_�� 79 +����āA���̒��ɐ������ăt�@�C�����𓀂��܂��B���̂R�ׂ͍����ݒ�ł��B</li> 80 +</ul> 81 +<h4>[Windows�g��]�^�u</h4> 82 +<p> 83 +<img src="win.png" alt="Windows�g���^�u�̉��"> 84 +</p> 85 +<ul> 86 +<li>�u�֘A�t���v�ł́A�_�u���N���b�N�����Ƃ���Noah�ʼn𓀂��鏑�Ɍ`�����w�肵�܂��B</li> 87 +<li>�u�E�h���b�O���h���b�v�v�ł�Windows�Ńt�@�C�����E�h���b�v�����Ƃ��ɏo�� 88 +���j���[�ŁANoah�ň��k�𓀏o����悤�ɂ��邩�ۂ����w�肵�܂��B</li> 89 +<li>�u�V���[�g�J�b�g�v�͑��郁�j���[��f�X�N�g�b�v��Noah�̃A�C�R����u�����ǂ����̐ݒ�ł��B</li> 90 +</ul> 91 +<h4>[About]�^�u</h4> 92 +<p> 93 +Noah��A�g���Ă���DLL�̃o�[�W��������\�����܂��B 94 +</p> 95 + 96 +</body></html>
Added Release/html/usage2.htm version [4084f15aca58916a]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html lang="ja"><head> 3 + <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h2><a name="each">�ʈ��k</a></h2> 9 +<p> 10 +��������̃t�@�C�����܂Ƃ߂�<a href="usage1.htm#cmpr">���ʂ̕��@</a>�ň��k����ƁA 11 +�S����̏��ɂɌł߂Ă��܂��܂��B���̏ꍇ�͈�ɂ܂Ƃ܂��������֗��Ȃ̂ł����A 12 +���܂ɁA���o���o���Ɉ��k���������Ƃ����邩�Ǝv���܂��B 13 +</p> 14 +<p> 15 +����ȂƂ���<em>�uAlt�v�L�[�������Ȃ��爳�k</em>����A���ꂼ��ʁX�Ɉ��k����悤�ɂȂ�܂��B 16 +</p> 17 + 18 +<h2><a name="view">���ɓ��{�����[�h</a></h2> 19 +<p> 20 +<a href="usage1.htm#cmpr">���ʂ̕��@</a>�ʼn𓀂���ƁA���ɂ̒��ɂ���t�@�C���� 21 +�݂�Ȉ�x�ɑS���𓀂��Ă��܂��킯�ł����A���ɂ̒��̈ꕔ�̃t�@�C������������� 22 +���Ă݂����A�Ƃ����Ƃ��͂��́u���ɉ{�����[�h�v�����ɗ����܂��B 23 +���̃��[�h�ł́A���ɂ̒��ɂ���t�@�C���̈ꗗ��\�����āA�K�v�Ȃ��̂����𓀁A 24 +�Ƃ����悤�ȑ��삪�\�ł��B 25 +</p> 26 +<p> 27 +���ɉ{�����[�h�ɂ���ɂ́A<em>�uCtrl�v�L�[�������Ȃ����</em>���ĉ������B 28 +</p> 29 + 30 +<h2><a name="format">Noah�ň�����`��</a></h2> 31 +<h4>���k�A�𓀂Ƃ��\�Ȃ���</h4> 32 +<dl> 33 + <dt><em>lzh</em> (Unlha32.dll)</dt> 34 + <dd>���{�ň�Ԃ悭�g���Ă��鈳�k�@�ł��Blh5,6,7 �́A�������傫���������k�����悭�Ȃ�܂����A�܂��e�X�g���̂��߁Alh5 �ȊO�̏��ɂ����I�ȏ�ŗ��p���邱�Ƃ͋֎~����Ă��܂��B</dd> 35 + 36 + <dt><em>zip</em> (UnZip32.dll Zip32j.dll Zip32.dll)</dt> 37 + <dd>���E�ň�Ԃ悭�g���Ă��鈳�k�@�ł��B�C�O�̕��֓n���Ƃ��͂���ŁBpassword��I�ԂƉ𓀂Ƀp�X���[�h���K�v�ȏ��ɂ��쐬�ł��܂��Bstore��I�ԂƁA���k�͍s�킸��̃t�@�C���ɂ܂Ƃ߂��Ƃ������s���܂��B</dd> 38 + 39 + <dt><em>cab</em> (Cab32.dll)</dt> 40 + <dd>Microsoft�Ђ̊J���������k�`���ł��B���� LZX21 �͍ŋ��̈��k�����Œm���Ă��܂��B</dd> 41 + 42 + <dt><em>tar</em> (Tar32.dll)</dt> 43 + <dd>UNIX �Ŏ�Ɏg���܂��B�m�[�}����tar�͈��k�@�\�͂Ȃ��̂ŁAgzip �� bzip2 �Ƃ������k���@��g�ݍ��킹��̂���ʓI�ł��B</dd> 44 + 45 + <dt><em>yz1</em> (Yz1.dll)</dt> 46 + <dd>�������ƁA�e�L�X�g�t�@�C���̈��k�����悢���ƂŒm������{�Y�̈��k�@�ł��B</dd> 47 + 48 + <dt><em>bga</em> (Bga32.dll)</dt> 49 + <dd>����gzip��bzip2���g���̂ň��k���͓����ł����Atar��[���ɉ������k]�Ȃ̂ɑ��������[���k�����ɉ�]�Ƃ��������ŏ������邽�߁A���ɓ��̈ꕔ�̃t�@�C�����������悤�ȂƂ��͍����ł��B</dd> 50 + 51 + <dt><em>??_</em></dt> 52 + <dd>��ɁA�\�t�g�̃C���X�g�[���ɂ��Ă��邱�Ƃ�����܂��B���ʂ͂܂��g��Ȃ��ł��傤�B</dd> 53 +</dl> 54 +<h4>�𓀂̂݉\�Ȃ���</h4> 55 +<dl> 56 + <dt><em>rar</em> (Unrar32.dll Unrar.dll)</dt> 57 + <dd>�V�i�̈��k�@�̒��ł͈�ԍL�܂��Ă���`���ł��ˁB</dd> 58 + 59 + <dt><em>ace</em> (UnaceV2.dll)</dt> 60 + <dd>������V�������k�@�̈�B���\�ł�rar���z�������ȁB</dd> 61 + 62 + <dt><em>gca</em> (Ungca32.dll)</dt> 63 + <dd>cab���z���鈳�k���ł��������Ȃ荂���ȁA���҂̈��k�@�ł��B�����߁c�������Ƃ���ł����A�c�O�Ȃ���Noah�ł͈��k�ł��܂���B(^^;</dd> 64 + 65 + <dt><em>arj</em> (Unarj32.dll)</dt> 66 + <dd>�Â����k�`���ł��B���X�O����FTP�T�[�o���Ō���������x�B</dd> 67 + 68 + <dt><em>cpt</em></dt> 69 + <dd>Macintosh�����̈��k�`���ł��B������ŋ߂͂��܂茩�܂���B</dd> 70 +</dl> 71 +<h4>�����E����</h4> 72 +<dl> 73 + <dt><em>jak</em> (Jack32.dll)</dt> 74 + <dd>Noah�ł́u���k�`���v���ɓ���Ă��܂����̂ł����A����͎��͊ԈႢ�ŁAjak�́A�t�@�C�������܂����T�C�Y�ɕ������܂��B1.44MB ���ƁA���x�t���b�s�[�f�B�X�N�̃T�C�Y�ɂȂ�܂��B</dd> 75 +</dl> 76 + 77 +<h2><a name="mode">���샂�[�h�ɂ���</a></h2> 78 +<p> 79 +Noah�́A���k�Ɖ𓀂̂����K�ȕ�������ɔ��f���Ď��s���܂��B 80 +�����Ă��̏ꍇ�͔��f�ɖ������Ƃ͖����̂ł����A���X 81 +�u���k���ׂ����𓀂��ׂ����H�v�������Ȃ��Ƃ�����܂��B 82 +����Ȏ��ɂ͂ǂ���̓�����s���̂��ANoah�Ɏw�����Ă������Ƃ��ł��܂��B 83 +���ꂪ�A�u���샂�[�h�v�̐ݒ�ł��B 84 +</p> 85 +<p> 86 +�����ȏꍇ�Ƃ����̂́A<em>���ɂ�������Ƀh���b�v�����Ƃ�</em>�ł��B 87 +�S�����ꂼ��𓀂������̂��A����Ƃ���R�̏��ɂ���ɂ܂Ƃ߂Ă��������̂��A 88 +�ʂ����Ăǂ���Ȃ̂��� Noah �ɂ͔��f����ł��B����ȏꍇ�ǂ�����悢���́A 89 +���[�U�[�̊F���D���ȕ���Noah�Ɏw�����Ă����Ă��������B�܂�c�A 90 +</p> 91 +<ul> 92 +<li>[<em>�𓀗D��</em>] �ɐݒ肵�Ă�����A���ꂼ����𓀂��܂��B</li> 93 +<li>[<em>���k�D��</em>] �ɐݒ肵�Ă�����A��̏��ɂɂ܂Ƃ߂Ĉ��k���܂��B</li> 94 +</ul> 95 +<p> 96 +�Ȃ� [���k��p] �� [�𓀐�p] �́ANoah�Ɏ�������������Ȃ��ŁA 97 +�ǂ�ȂƂ������k/�𓀂���I�Ǝw������Ƃ��Ɏg�����[�h�ł��B 98 +</p> 99 + 100 +<h2><a name="cmdline">�R�}���h���C���I�v�V����</a></h2> 101 +<ul> 102 +<li><em>-a</em> �K�����k</li> 103 +<li><em>-x</em> �K����</li> 104 +<li><em>-w</em> ���k�̎��͌ʈ��k��</li> 105 +<li><em>-ca</em> ���k�̎��͎��ȉ𓀌`����</li> 106 +<li><em>-cx</em> �𓀂̎��͏��ɓ��{����</li> 107 +<li><em>-dDirName</em> �o�͐�</li> 108 +<li><em>-tTypeName</em> ���k�`��</li> 109 +<li><em>-mMethod</em> ���k���\�b�h</li> 110 +</ul> 111 + 112 +<h2><a name="iniconfig">�B���ݒ�</a></h2> 113 +<p> 114 +Noah�̃C���X�g�[����t�H���_�ɍ쐬�����noah.ini�t�@�C���� 115 +�ȉ��̂悤�ȍs��lj����邱�ƂŁA�X�ɍׂ����ݒ���s�����Ƃ��o���܂��B 116 +�ʏ�͕K�v����܂���B 117 +</p> 118 +<dl> 119 +<dt><em>OpenBy=�f�B���N�g�����J���R�}���h</em></dt> 120 +<dd> 121 +�f�t�H���g�� explorer "%s" �ł��B 122 +%s�͎��s���Ƀf�B���N�g�����ɒu���������܂��B 123 +�Ⴆ�� explorer /e,"%s" �Ƃ���G�N�X�v���[���ŊJ���܂��B 124 +</dd> 125 +<dt><em>MiniBoot=1</em></dt> 126 +<dd> 127 +b2e������s�t�@�C�����N������ۂɁA�ŏ�����Ԃ� 128 +���s�������ꍇ�́AMiniBoot=1 �Ə����ĉ������B 129 +</dd> 130 +<dt><em>OldAbout=1</em></dt> 131 +<dd> 132 +�o�[�W�������\�����x���Ƃ��ɂ��������ƊȈՕ\���ɂȂ�܂��B 133 +</dd> 134 +<dt><em>OneExt=1</em></dt> 135 +<dd> 136 +aaa.bbb.ccc �����k�����Ƃ��̏��ɖ��� aaa.lzh �ł͂Ȃ� 137 +aaa.bbb.lzh �Ƃ������Ƃ��ɐݒ肵�܂��B 138 +</dd> 139 +<dt><em>NoExt=1</em></dt> 140 +<dd> 141 +aaa.bbb.ccc �����k�����Ƃ��̏��ɖ��� aaa.lzh �ł͂Ȃ� 142 +aaa.bbb.ccc.lzh �Ƃ������Ƃ��ɐݒ肵�܂��B���̐ݒ�����A 143 +OneExt=1�̕����D�悳��܂��B 144 +</dd> 145 +<dt><em>MultiBootLimit=4</em></dt> 146 +<dd> 147 +Noah.exe���ꔭ���k�𓀗p�Ɉ�x�ɋN���ł���ő���𐧌����܂��B�f�t�H���g��4�B 148 +</dd> 149 + 150 + 151 +</dl> 152 + 153 +</body></html>
Added Release/html/win.png version [14c4e73076be0b97]
cannot compute difference between binary files
Added Release/html/yougo.htm version [b8e8caffb8253cc6]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html lang="ja"><head> 3 + <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 4 + <meta http-equiv="Content-Style-Type" content="text/css"> 5 + <link rel="stylesheet" media="all" href="noahman.css"> 6 +</head><body> 7 + 8 +<h2><a name="cmpr">���k�E��</a></h2> 9 +<p> 10 +�p�\�R���ɕ��͂�G���L�^����Ƃ��A���ʂɁu�ۑ��v����ƁA�Ⴆ��100�����������Ƃ��Ȃ� 11 +100�������A5000�����������Ƃ��Ȃ�5000�������̑傫���́u�t�@�C���v�Ƃ��ċL�^����܂��B 12 +�Ƃ��낪���̃t�@�C���́A���܂���������ƁA�����Ƃ����Ə����ȃt�@�C���ɕۑ����邱�Ƃ� 13 +�o���Ă��܂��̂ł��I�����ȃt�@�C���ɏo����A���[���ɂ��đ���Ƃ��̓d�b����ߖ�ł���ȂǁA 14 +�������Ƃ����߂ł��B���̖��@�̂悤�ȋZ���A<em>���k</em>�ł��B 15 +</p> 16 +<p> 17 +�c�ƁA���ꂾ���ł͂��܂�ɂ��������ł��ˁB�����������k�̌����ɂ��Đ������܂��傤�B 18 +�u�������������������̂����v�Ƃ������͂��L�^���邱�Ƃ��l���Ă݂܂��B���ʂɋL�^����ƁA 19 +�P�Q�������ɂȂ�܂��B�Ƃ��낪�A�u�����~�W�̂����v�ƁA[��] ���W����ł邱�Ƃ� [���~�W] 20 +�ƕ\���悤�ɂ���A�Ȃ�ƂV�����ōςނ��ƂɂȂ�܂��B 21 +</p> 22 +<p> 23 +�� ���ۂɂ͂����肩�Ȃ蕡�G�Ȍv�Z���s���āA���k�̌������グ�Ă��܂��B 24 +</p> 25 +<p> 26 +���k�����t�@�C���́u�����~�W�̂����v�݂����ɁA����Ӗ���̋L���̕��ԃt�@�C���� 27 +�Ȃ��Ă��܂��Ă��܂��̂ŁA�c�O�Ȃ��炻�̂܂g�����Ƃ͏o���܂���B���k�������͂� 28 +������x���[�v���ŊJ�������Ƃ��́A���̏�Ԃɖ߂��Ă��K�v������܂��B 29 +���̖߂���Ƃ̂��Ƃ��u<em>��</em>�v�Ƃ����܂��B 30 +</p> 31 +<p> 32 +�����āANoah�́A���̈��k�Ɖ𓀂����邽�߂̃\�t�g�Ȃ킯�ł��B 33 +</p> 34 + 35 +<h2><a name="arc">���ɁE�A�[�J�C�u</a></h2> 36 +<p> 37 +�u�����̃t�@�C������ɂ܂Ƃ߂��t�@�C���v�̂��ƁB 38 +<em>����</em>�ł�<em>�A�[�J�C�u</em>�ł��ǂ���������Ӗ��ł��B 39 +���͈�ɂ܂Ƃ߂�Ɠ����Ɉ��k���s����̂ŁA 40 +��������Ĉ��k�����t�@�C���̂��Ƃ����ɂƌĂԂ��Ƃ����X����܂��B 41 +</p> 42 + 43 +<h2><a name="sfx">���ȉ𓀌`������</a></h2> 44 +<p> 45 +���k�͕֗��Ȃ̂ł����A��x���k���Ă��܂��ƁA 46 +�𓀃\�t�g�������Ă��Ȃ��Ɖ𓀂ł��Ȃ��A�Ƃ����s�ւȓ_������܂��B 47 +�����ŁA�𓀃\�t�g�Ȃ��ł�<em>�����Ŏ������𓀂ł��Ă��܂�</em>�悤�� 48 +���Ɉ��k���Ă��܂��ƌ����肪����܂��B���ꂪ���ȉ𓀌`������ 49 +�i�ʏ̂r�e�w�j�ł��B 50 +</p> 51 + 52 +<h2><a name="dnd">�h���b�O���h���b�v</a></h2> 53 +<p> 54 +�a��ƁA�u�������藎�Ƃ��v���Ƃł��B�c���ĉ��̐����ɂ��Ȃ��ĂȂ��ł��ˁB<br> 55 +�t�@�C�����}�E�X�̖��Ŏw���A�}�E�X�̃{�^���������A�������܂܃t�@�C������������A 56 +�ǂ����iNoah�̏�Ƃ��j�Ń{�^��������ė��Ƃ���A�̍�Ƃ̂��Ƃ������܂��B 57 +���������ł͂悭�킩��Ȃ��A�Ƃ������́A�{���Ńp�\�R�����发�𗧂��ǂ݂��邩�A 58 +�m�荇���̕��Ƀh���b�O���h���b�v�̎��������Ă�����Ă݂ĉ������B(^^; 59 +</p> 60 +<p> 61 +<em>�c���c�A�c���c�A�h���b�v</em>�ȂǂƏȗ����ď�����邱�Ƃ������ł��B 62 +�܂����́A�}�E�X�̉E�{�^���ł̂c���c�̂��Ƃ�[�E�h���b�O���h���b�v]�ƌ����Ă��܂��B 63 +</p> 64 + 65 +</body></html>
Added Release/manual-e.htm version [24a4792e53a4a34b]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html><head> 3 + <meta http-equiv="Content-Type" content="text/html"> 4 + <title>Noah User's Manual</title> 5 +</head><frameset cols="200,*"> 6 + 7 +<frame src="html/eindex.htm" name="Menu" frameborder="0"> 8 +<frame src="html/etop.htm" name="Main" frameborder="0"> 9 + 10 +<noframes><body><p> 11 +<a href="html/eindex.htm">INDEX</a> 12 +</p><p> 13 +�o����A�t���[���Ή��̃u���E�U�ł����������B 14 +</p></body></noframes> 15 + 16 +</frameset></html>
Added Release/manual.htm version [2977d38cd2581e57]
1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> 2 +<html><head> 3 + <meta http-equiv="Content-Type" content="text/html"> 4 + <title>Noah User's Manual</title> 5 +</head><frameset cols="200,*"> 6 + 7 +<frame src="html/index.htm" name="Menu" frameborder="0"> 8 +<frame src="html/top.htm" name="Main" frameborder="0"> 9 + 10 +<noframes><body><p> 11 +<a href="html/index.htm">INDEX</a> 12 +</p><p> 13 +�o����A�t���[���Ή��̃u���E�U�ł����������B 14 +</p></body></noframes> 15 + 16 +</frameset></html>
Added Release/uninst.exe version [eb14369955eec8a5]
cannot compute difference between binary files
Added Resource.h version [d152fc34c77af086]
1 +//{{NO_DEPENDENCIES}} 2 +// Microsoft Developer Studio generated include file. 3 +// Used by Noah.rc 4 +// 5 +#define IDS_M_ERROR 1 6 +#define IDS_C_ERROR 2 7 +#define IDS_CHOOSEDIR 3 8 +#define ID_ALLYES 3 9 +#define IDS_FNAME 4 10 +#define ID_ALLNO 4 11 +#define IDS_SIZE 5 12 +#define IDS_DATETIME 6 13 +#define IDS_RATIO 7 14 +#define IDS_METHOD 8 15 +#define IDS_PATH 9 16 +#define IDS_EXECUTING 10 17 +#define IDS_NOLIST 11 18 +#define IDS_ARCVIEW_MSG 12 19 +#define IDI_MAIN 101 20 +#define IDI_B2E 102 21 +#define IDR_ACCEL 115 22 +#define IDD_ARCVIEW 116 23 +#define IDD_CMPCFG 117 24 +#define IDD_MLTCFG 118 25 +#define IDD_WINCFG 119 26 +#define IDD_INFCFG 120 27 +#define IDD_PROGRESS 121 28 +#define IDD_PASSWORD 122 29 +#define IDD_ANYASS 123 30 +#define IDR_DEFAULT1 124 31 +#define IDD_PATHCHECK 126 32 +#define IDC_FILELIST 1000 33 +#define IDC_MELTEACH 1001 34 +#define IDC_SHOW 1002 35 +#define IDC_SELECTINV 1003 36 +#define IDC_MODE1 1004 37 +#define IDC_MODE2 1005 38 +#define IDC_MODE3 1006 39 +#define IDC_MODE4 1007 40 +#define IDC_ODIR 1008 41 +#define IDC_DDIR 1009 42 +#define IDC_DDIR1 1010 43 +#define IDC_DDIR2 1011 44 +#define IDC_REF 1012 45 +#define IDC_CMPEXT 1013 46 +#define IDC_CMPMHD 1014 47 +#define IDC_MKDIR 1015 48 +#define IDC_MKDIR1 1016 49 +#define IDC_MKDIR2 1017 50 +#define IDC_MKDIR3 1018 51 +#define IDC_VERSION 1019 52 +#define IDC_LZH 1030 53 +#define IDC_ZIP 1031 54 +#define IDC_CAB 1032 55 +#define IDC_RAR 1033 56 +#define IDC_TAR 1034 57 +#define IDC_YZ1 1035 58 +#define IDC_GCA 1036 59 +#define IDC_ARJ 1037 60 +#define IDC_BGA 1038 61 +#define IDC_ACE 1039 62 +#define IDC_CPT 1040 63 +#define IDC_JAK 1041 64 +#define IDC_7Z 1042 65 +#define IDC_CMP 1043 66 +#define IDC_MLT 1044 67 +#define IDC_SND 1045 68 +#define IDC_DSK 1046 69 +#define IDC_BAR 1047 70 +#define IDC_FNAME 1048 71 +#define IDC_EDIT 1049 72 +#define IDC_MASK 1050 73 +#define IDC_ASS 1051 74 +#define IDC_NASSOC 1052 75 +#define IDC_ASSOC 1053 76 +#define IDC_ADD 1054 77 +#define IDC_DEL 1055 78 +#define IDC_MESSAGE 1057 79 +#define IDC_NOADMIN 1058 80 +#define IDC_STATUSBAR 1059 81 +#define IDC_PATHNAME 1060 82 +#define IDA_MYDIR 40001 83 +#define IDA_HELP 40002 84 + 85 +// Next default values for new objects 86 +// 87 +#ifdef APSTUDIO_INVOKED 88 +#ifndef APSTUDIO_READONLY_SYMBOLS 89 +#define _APS_NEXT_RESOURCE_VALUE 127 90 +#define _APS_NEXT_COMMAND_VALUE 40003 91 +#define _APS_NEXT_CONTROL_VALUE 1062 92 +#define _APS_NEXT_SYMED_VALUE 101 93 +#endif 94 +#endif
Added SubDlg.cpp version [fcaa4b48ba621d24]
1 + 2 +#include "stdafx.h" 3 +#include "NoahApp.h" 4 +#include "SubDlg.h" 5 + 6 +int CArcViewDlg::st_nLife; 7 + 8 +BOOL CArcViewDlg::onInit() 9 +{ 10 + char cstr[100]; 11 + kiStr str; 12 + kiPath path; 13 + SHFILEINFO sfi,lfi; 14 + HIMAGELIST hImS,hImL; 15 + kiListView ctrl( this, IDC_FILELIST ); 16 + __int64 filesize_sum = 0; 17 + 18 + //-- �_�C�A���O������̈� 19 + hello(); 20 + m_bSmallFirst[0] = m_bSmallFirst[1] = m_bSmallFirst[2] = 21 + m_bSmallFirst[3] = m_bSmallFirst[4] = m_bSmallFirst[5] = true; 22 + 23 + //-- �^�Ɂ��O�� 24 + setCenter( hwnd(), app()->mainhwnd() ); 25 + setFront( hwnd() ); 26 + 27 + //-- �A�C�R�� 28 + path = m_fname.basedir, path += m_fname.sname; 29 + hImS = (HIMAGELIST)::SHGetFileInfo( path, 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_SMALLICON ); 30 + hImL = (HIMAGELIST)::SHGetFileInfo( path, 0, &lfi, sizeof(lfi), SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_LARGEICON ); 31 + sendMsg( WM_SETICON, ICON_BIG, (LPARAM)lfi.hIcon ); 32 + sendMsg( WM_SETICON, ICON_SMALL, (LPARAM)sfi.hIcon ); 33 + 34 + //-- �^�C�g�� 35 + sendMsg( WM_SETTEXT, 0, (LPARAM)kiPath(m_fname.lname).name() ); 36 + 37 + //-- �𓀐� 38 + sendMsgToItem( IDC_DDIR, WM_SETTEXT, 0, (LPARAM)(const char*)m_ddir ); 39 + 40 + //-- ���X�g 41 + if( !m_pArc->list( m_fname, m_files ) || m_files.len()==0 ) 42 + { 43 + m_bAble = false; 44 + ctrl.insertColumn( 0, "", 510 ); 45 + ctrl.insertItem( 0, str.loadRsrc(IDS_NOLIST) ); 46 + } 47 + else 48 + { 49 + m_bAble = ( 0 != (m_pArc->ability() & aMeltEach) ); 50 + 51 + ctrl.setImageList( hImL, hImS ); 52 + ctrl.insertColumn( 0, str.loadRsrc(IDS_FNAME), 110 ); 53 + ctrl.insertColumn( 1, str.loadRsrc(IDS_SIZE), 70, LVCFMT_RIGHT ); 54 + ctrl.insertColumn( 2, str.loadRsrc(IDS_DATETIME),100, LVCFMT_RIGHT ); 55 + ctrl.insertColumn( 3, str.loadRsrc(IDS_RATIO), 55, LVCFMT_RIGHT ); 56 + ctrl.insertColumn( 4, str.loadRsrc(IDS_METHOD), 50, LVCFMT_RIGHT ); 57 + ctrl.insertColumn( 5, str.loadRsrc(IDS_PATH), 130 ); 58 + 59 + FILETIME ftm; 60 + SYSTEMTIME stm; 61 + 62 + //-- �A�C�e�� 63 + for( unsigned int i=0,k=0; i!=m_files.len(); i++ ) 64 + if( m_files[i].isfile ) 65 + { 66 +#define usiz (m_files[i].inf.dwOriginalSize) 67 +#define csiz (m_files[i].inf.dwCompressedSize) 68 +#define method (m_files[i].inf.szMode) 69 +#define date (m_files[i].inf.wDate) 70 +#define time (m_files[i].inf.wTime) 71 + path = m_files[i].inf.szFileName; 72 + 73 + // �t�@�C���� 74 + ctrl.insertItem( k, path.name(), 75 + (LPARAM)(&m_files[i]), kiSUtil::getSysIcon(path.ext()) ); 76 + 77 + // �T�C�Y 78 + if( usiz == 0xffffffff ) 79 + ctrl.setSubItem( k, 1, "????" ); 80 + else 81 + ctrl.setSubItem( k, 1, str.setInt( usiz,true ) ); 82 + 83 + // ���� 84 + if( ::DosDateTimeToFileTime( date, time, &ftm ) 85 + && ::FileTimeToSystemTime( &ftm, &stm ) ) 86 + { 87 + *cstr=0; 88 + ::GetDateFormat( LOCALE_USER_DEFAULT, 0, &stm, 89 + "yy/MM/dd", cstr, sizeof(cstr) ); 90 + str=cstr; 91 + ::GetTimeFormat( LOCALE_USER_DEFAULT, 0, &stm, 92 + " HH:mm", cstr, sizeof(cstr) ); 93 + str+=cstr; 94 + ctrl.setSubItem( k, 2, str ); 95 + } 96 + 97 + // ���k�� 98 + filesize_sum += usiz; 99 + if( usiz==0 ) ctrl.setSubItem( k, 3, "100%" ); 100 + else if( csiz==0 ) ctrl.setSubItem( k, 3, "????" ); 101 + else ctrl.setSubItem( k, 3, str.setInt( (int)(((__int64)csiz)*100/usiz) )+='%' ); 102 + 103 + // ���\�b�h 104 + ctrl.setSubItem( k, 4, method ); 105 + 106 + // �p�X 107 + path.beDirOnly(); 108 + ctrl.setSubItem( k, 5, path ); 109 + 110 + k++; 111 + 112 +#undef usiz 113 +#undef csiz 114 +#undef method 115 +#undef date 116 +#undef time 117 + } 118 + 119 + //-- �h���b�O���h���b�v�t�H�[�}�b�g�o�^ 120 + FORMATETC fmt; 121 + fmt.cfFormat = CF_HDROP; 122 + fmt.ptd = NULL; 123 + fmt.dwAspect = DVASPECT_CONTENT; 124 + fmt.lindex = -1; 125 + fmt.tymed = TYMED_HGLOBAL; 126 + addFormat( fmt ); 127 + } 128 + 129 + //-- ��� -- 130 + char tmp[255]; 131 + kiStr full_filename = m_fname.basedir + m_fname.lname; 132 + __int64 filesize_arc = kiFile::getSize64(full_filename); 133 + if( filesize_sum==0 ) filesize_sum = 1; 134 + wsprintf( tmp, kiStr().loadRsrc(IDS_ARCVIEW_MSG), 135 + m_files.len(), 136 + (int)(filesize_arc*100 / filesize_sum), 137 + (const char*)m_pArc->arctype_name(full_filename) 138 + ); 139 + sendMsgToItem( IDC_STATUSBAR, WM_SETTEXT, 0, (long)tmp ); 140 + 141 + if( !m_bAble ) 142 + { 143 + static const UINT items[] = { IDC_SELECTINV,IDC_REF,IDC_MELTEACH,IDC_SHOW,IDC_DDIR }; 144 + for( int i=0; i!=sizeof(items)/sizeof(UINT); i++ ) 145 + ::EnableWindow( item(items[i]), FALSE ); 146 + } 147 + 148 + return FALSE; 149 +} 150 + 151 +bool CArcViewDlg::onOK() 152 +{ 153 + setdir(); 154 + m_pArc->melt( m_fname, m_ddir ); 155 + myapp().open_folder( m_ddir, 1 ); 156 + kiSUtil::switchCurDirToExeDir(); // �O�̂��� 157 + return onCancel(); 158 +} 159 + 160 +bool CArcViewDlg::onCancel() 161 +{ 162 + ::SetCurrentDirectory( m_fname.basedir ); 163 + m_tdir.remove(); 164 + if( kiSUtil::exist(m_tdir) ) 165 + { 166 + kiStr tmp(600); 167 + if( IDNO==app()->msgBox( tmp.loadRsrc(IDS_EXECUTING), NULL, MB_YESNO|MB_DEFBUTTON2 ) ) 168 + return false; 169 + } 170 + 171 + kiListView(this,IDC_FILELIST).setImageList( NULL, NULL ); 172 + byebye(); 173 + return true; 174 +} 175 + 176 +bool CArcViewDlg::giveData( const FORMATETC& fmt, STGMEDIUM* stg, bool firstcall ) 177 +{ 178 + if( firstcall ) 179 + if( 0x8000<=m_pArc->melt( m_fname, m_tdir, &m_files ) ) 180 + return false; 181 + 182 + unsigned int i; 183 + BOOL fWide = (app()->osver().dwPlatformId==VER_PLATFORM_WIN32_NT); 184 + kiArray<kiPath> lst; 185 + kiPath tmp; 186 + int flen = 0; 187 + wchar_t wbuf[600]; 188 + 189 + for( i=0; i!=m_files.len(); i++ ) 190 + if( m_files[i].selected ) 191 + { 192 + tmp = m_tdir; 193 + tmp += m_files[i].inf.szFileName; 194 + 195 + lst.add( tmp ); 196 + if( fWide ) 197 + flen += (::MultiByteToWideChar( CP_ACP, 0, tmp, -1, wbuf, 600 )+1)*2; 198 + else 199 + flen += (tmp.len()+1); 200 + } 201 + 202 + HDROP hDrop = (HDROP)::GlobalAlloc( GHND, sizeof(DROPFILES)+flen+1 ); 203 + 204 + DROPFILES* dr = (DROPFILES*)::GlobalLock( hDrop ); 205 + dr->pFiles = sizeof(DROPFILES); 206 + dr->pt.x = dr->pt.y = 0; 207 + dr->fNC = FALSE; 208 + dr->fWide = fWide; 209 + 210 + char* buf = (char*)(&dr[1]); 211 + for( i=0; i!=lst.len(); i++ ) 212 + { 213 + if( fWide ) 214 + { 215 + flen = ::MultiByteToWideChar( CP_ACP, 0, lst[i], -1, wbuf, 600 ); 216 + ki_memcpy( buf, wbuf, flen*2 ); 217 + for( int k=0; k!=flen; k++ ) 218 + if( ((wchar_t*)buf)[k] == '/' ) 219 + ((wchar_t*)buf)[k] = '\\'; 220 + buf += flen*2; 221 + } 222 + else 223 + { 224 + ki_strcpy( buf,lst[i] ); 225 + for( int k=0; k!=lst[i].len(); k++ ) 226 + if( buf[k] == '/' ) 227 + buf[k] = '\\'; 228 + buf += lst[i].len() + 1; 229 + } 230 + } 231 + *buf=0; 232 + if( fWide ) 233 + buf[1]='\0'; 234 + 235 + ::GlobalUnlock( hDrop ); 236 + 237 + stg->hGlobal = hDrop; 238 + stg->tymed = TYMED_HGLOBAL; 239 + stg->pUnkForRelease = NULL; 240 + return true; 241 +} 242 + 243 +BOOL CALLBACK CArcViewDlg::proc( UINT msg, WPARAM wp, LPARAM lp ) 244 +{ 245 + switch( msg ) 246 + { 247 + //-- ���C���E�C���h�E�w�� --------------------- 248 + case WM_ACTIVATE: 249 + if( LOWORD(wp)==WA_ACTIVE || LOWORD(wp)==WA_CLICKACTIVE ) 250 + { 251 + app()->setMainWnd( this ); 252 + return TRUE; 253 + } 254 + break; 255 + 256 + //-- ���T�C�Y�֘A�̏��� --------------------- 257 + case WM_GETMINMAXINFO: 258 + { 259 + RECT self,child; 260 + ::GetWindowRect( hwnd(), &self ); 261 + ::GetWindowRect( item(IDC_REF), &child ); 262 + POINT& sz = ((MINMAXINFO*)lp)->ptMinTrackSize; 263 + sz.x = child.right - self.left + 18; 264 + sz.y = child.bottom - self.top + 100; 265 + } 266 + return TRUE; 267 + case WM_SIZE: 268 + if( wp!=SIZE_MAXHIDE && wp!=SIZE_MINIMIZED ) 269 + { 270 + RECT self,ref,child,sbar; 271 + ::GetWindowRect( hwnd(), &self ); 272 + ::GetWindowRect( item(IDC_REF), &ref ); 273 + ::GetWindowRect( item(IDC_FILELIST), &child ); 274 + ::GetClientRect( item(IDC_STATUSBAR), &sbar ); 275 + 276 + ::SetWindowPos( item(IDC_FILELIST), NULL, 0, 0, 277 + LOWORD(lp), 278 + (self.bottom-ref.bottom)-(child.top-ref.bottom) 279 + -(sbar.bottom-sbar.top)-10, 280 + SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER ); 281 + 282 + ::GetClientRect( hwnd(), &self ); 283 + ::SetWindowPos( item(IDC_STATUSBAR), NULL, sbar.left, 284 + self.bottom - (sbar.bottom-sbar.top), 285 + 0, 0, SWP_NOSIZE|SWP_NOOWNERZORDER|SWP_NOZORDER ); 286 + } 287 + break; 288 + 289 + case WM_NOTIFY: 290 + if( wp==IDC_FILELIST && m_bAble ) 291 + { 292 + NMHDR* phdr=(NMHDR*)lp; 293 + if( phdr->code==LVN_BEGINDRAG || phdr->code==LVN_BEGINRDRAG ) 294 + { 295 + if( setSelection() ) 296 + kiDropSource::DnD( this, DROPEFFECT_COPY ); 297 + return TRUE; 298 + } 299 + else if( phdr->code==LVN_COLUMNCLICK ) 300 + DoSort( ((NMLISTVIEW*)lp)->iSubItem ); 301 + else if( phdr->code==NM_DBLCLK ) 302 + sendMsg( WM_COMMAND, IDC_SHOW ); 303 + else if( phdr->code==NM_RCLICK ) 304 + { 305 + if( setSelection() ) 306 + DoRMenu(); 307 + } 308 + } 309 + break; 310 + 311 + case WM_COMMAND: 312 + switch( LOWORD(wp) ) 313 + { 314 + case IDC_SELECTINV: // �I�] 315 + { 316 + LVITEM item; 317 + item.mask = LVIF_STATE; 318 + item.stateMask = LVIS_SELECTED; 319 + int j,m=sendMsgToItem( IDC_FILELIST, LVM_GETITEMCOUNT ); 320 + for( j=0; j!=m; j++ ) 321 + { 322 + item.state = ~sendMsgToItem( IDC_FILELIST, LVM_GETITEMSTATE, j, LVIS_SELECTED ); 323 + sendMsgToItem( IDC_FILELIST, LVM_SETITEMSTATE, j, (LPARAM)&item ); 324 + } 325 + ::SetFocus( this->item(IDC_FILELIST) ); 326 + } 327 + return TRUE; 328 + 329 + case IDC_REF: // �𓀐�ݒ� 330 + kiSUtil::getFolderDlgOfEditBox( item(IDC_DDIR), hwnd(), kiStr().loadRsrc(IDS_CHOOSEDIR) ); 331 + return TRUE; 332 + 333 + case IDC_MELTEACH: // �ꕔ�� 334 + if( setSelection() ) 335 + { 336 + setdir(); 337 + int result = m_pArc->melt( m_fname, m_ddir, &m_files ); 338 + if( result<0x8000 ) 339 + myapp().open_folder( m_ddir, 1 ); 340 + else if( result != 0x8020 ) 341 + { 342 + char str[255]; 343 + wsprintf( str, "%s\nError No: [%x]", 344 + (const char*)kiStr().loadRsrc( IDS_M_ERROR ), result ); 345 + app()->msgBox( str ); 346 + } 347 + kiSUtil::switchCurDirToExeDir(); // �O�̂��� 348 + } 349 + return TRUE; 350 + 351 + case IDC_SHOW: // �\�� 352 + if( setSelection() ) 353 + { 354 + int assocCnt = hlp_cnt_check(); 355 + if( 0x8000 > m_pArc->melt( m_fname, m_tdir, &m_files ) ) 356 + { 357 + if( assocCnt != -1 ) 358 + m_files[assocCnt].selected = false; 359 + for( unsigned i=0; i!=m_files.len(); i++ ) 360 + if( m_files[i].selected ) 361 + { 362 + kiPath tmp(m_tdir); 363 + char yen[MAX_PATH]; 364 + ki_strcpy( yen, m_files[i].inf.szFileName ); 365 + for( char* p=yen; *p; p=kiStr::next(p) ) 366 + if( *p=='/' ) 367 + *p = '\\'; 368 + tmp += yen; 369 + ::ShellExecute( hwnd(), NULL, tmp, NULL, m_tdir, SW_SHOWDEFAULT ); 370 + } 371 + } 372 + kiSUtil::switchCurDirToExeDir(); // �O�̂��� 373 + } 374 + return TRUE; 375 + } 376 + } 377 + return FALSE; 378 +} 379 + 380 +int CArcViewDlg::hlp_cnt_check() 381 +{ 382 + // ��ڂ̑I���ς݃t�@�C���� .hlp ���ۂ� 383 + for( unsigned i=0; i!=m_files.len(); i++ ) 384 + if( m_files[i].selected ) 385 + break; 386 + if( i==m_files.len() ) 387 + return -1; 388 + int x = kiPath::ext(m_files[i].inf.szFileName)-m_files[i].inf.szFileName; 389 + if( 0!=ki_strcmpi( "hlp", m_files[i].inf.szFileName+x ) ) 390 + return -1; 391 + 392 + // .cnt �̃t�@�C���� 393 + char cntpath[FNAME_MAX32]; 394 + ki_strcpy( cntpath, m_files[i].inf.szFileName ); 395 + cntpath[x]='c', cntpath[x+1]='n', cntpath[x+2]='t'; 396 + 397 + // .cnt���ꎞ�I�ɑI������ 398 + for( i=0; i!=m_files.len(); i++ ) 399 + if( 0==ki_strcmpi( cntpath, m_files[i].inf.szFileName ) ) 400 + { 401 + if( m_files[i].selected ) 402 + return -1; 403 + m_files[i].selected = true; 404 + return i; 405 + } 406 + return -1; 407 +} 408 + 409 +int CALLBACK CArcViewDlg::lv_compare( LPARAM p1, LPARAM p2, LPARAM type ) 410 +{ 411 + bool rev = false; 412 + if( type>=10000 ) 413 + rev=true, type-=10000; 414 + int ans = 0; 415 + 416 + INDIVIDUALINFO *a1=&((arcfile*)p1)->inf, *a2=&((arcfile*)p2)->inf; 417 + switch( type ) 418 + { 419 + case 0: //NAME 420 + ans = ::lstrcmp( kiPath::name(a1->szFileName), 421 + kiPath::name(a2->szFileName) ); 422 + break; 423 + case 1: //SIZE 424 + ans = (signed)a1->dwOriginalSize - (signed)a2->dwOriginalSize; 425 + break; 426 + case 2: //DATE,TIME 427 + ans = (signed)a1->wDate - (signed)a2->wDate; 428 + if( ans==0 ) 429 + ans = (signed)a1->wTime - (signed)a2->wTime; 430 + break; 431 + case 3:{//RATIO 432 + int cr1, cr2; 433 + if( a1->dwOriginalSize==0 ) cr1=100; 434 + else if( a1->dwCompressedSize==0 ) cr1=-1; 435 + else cr1 = (a1->dwCompressedSize*100)/(a1->dwOriginalSize); 436 + if( a2->dwOriginalSize==0 ) cr2=100; 437 + else if( a2->dwCompressedSize==0 ) cr2=-1; 438 + else cr2 = (int)((((__int64)a2->dwCompressedSize)*100)/(a2->dwOriginalSize)); 439 + ans = cr1 - cr2; 440 + }break; 441 + case 4: //METHOD 442 + ans = ::lstrcmp( a1->szMode, a2->szMode ); 443 + break; 444 + case 5:{//PATH 445 + kiPath pt1(a1->szFileName), pt2(a2->szFileName); 446 + pt1.beDirOnly(), pt2.beDirOnly(); 447 + ans = ::lstrcmp( pt1, pt2 ); 448 + }break; 449 + } 450 + 451 + return rev ? -ans : ans; 452 +} 453 + 454 +void CArcViewDlg::DoSort( int col ) 455 +{ 456 + WPARAM p = col + (m_bSmallFirst[col] ? 0 : 10000); 457 + sendMsgToItem( IDC_FILELIST, LVM_SORTITEMS, p, (LPARAM)lv_compare ); 458 + m_bSmallFirst[col] = !m_bSmallFirst[col]; 459 +} 460 + 461 +void CArcViewDlg::GenerateDirMenu( HMENU m, int& id, StrArray* sx, const kiPath& pth ) 462 +{ 463 + // �t�H���_�����X�g�A�b�v 464 + kiFindFile ff; 465 + ff.begin( kiPath(pth)+="*" ); 466 + for( WIN32_FIND_DATA fd; ff.next(&fd); ) 467 + if( fd.cFileName[0]!='.' 468 + && !(fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) ) 469 + { 470 + kiPath fullpath(pth); fullpath+=fd.cFileName; 471 + const int pID=id; 472 + MENUITEMINFO mi = { sizeof(MENUITEMINFO) }; 473 + 474 + if( fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) 475 + { 476 + // �ċA�I�� 477 + mi.fMask = MIIM_SUBMENU | 0x00000040;// (MIIM_STRING) 478 + mi.hSubMenu = ::CreatePopupMenu(); 479 + GenerateDirMenu( mi.hSubMenu, id, sx, 480 + kiPath(kiPath(fullpath)+="\\") ); 481 + } 482 + else 483 + { 484 + const char* ext = kiPath::ext(fd.cFileName); 485 + if( ::lstrlen(ext) > 4 ) continue; 486 + if( 0==::lstrcmpi(ext,"lnk") ) 487 + *const_cast<char*>(ext-1) = '\0'; 488 + mi.fMask = MIIM_ID | 0x00000040;// (MIIM_STRING) 489 + mi.wID = id++; 490 + sx->add( fullpath ); 491 + } 492 + 493 + mi.dwTypeData = const_cast<char*>((const char*)fd.cFileName); 494 + mi.cch = ::lstrlen(fd.cFileName); 495 + ::InsertMenuItem( m, pID, FALSE, &mi ); 496 + } 497 +} 498 + 499 +void CArcViewDlg::DoRMenu() 500 +{ 501 + // ���j���[�쐬 502 + HMENU m = ::CreatePopupMenu(); 503 + POINT pt; ::GetCursorPos( &pt ); 504 + const int IDSTART = 128; 505 + 506 + // �t�H���_�̒��g�����X�g�A�b�v�����j���[�ɒlj� 507 + int id = IDSTART; 508 + StrArray lst; 509 + GenerateDirMenu( m, id, &lst, kiPath(CSIDL_SENDTO) ); 510 + 511 + // ���j���[�\�� 512 + id = ::TrackPopupMenu( m, 513 + TPM_LEFTALIGN|TPM_TOPALIGN|TPM_RETURNCMD|TPM_NONOTIFY, 514 + pt.x, pt.y, 0, hwnd(), NULL ); 515 + ::DestroyMenu( m ); 516 + 517 + // ���ʏ��� 518 + if( id != 0 ) 519 + { 520 + kiStr cmd; 521 + if( 0x8000>m_pArc->melt( m_fname, m_tdir, &m_files ) ) 522 + { 523 + for( UINT i=0; i!=m_files.len(); i++ ) 524 + if( m_files[i].selected ) 525 + { 526 + cmd += "\""; 527 + cmd += m_tdir; 528 + const char* buf = m_files[i].inf.szFileName; 529 + for( int k=0; buf[k]; ++k ) 530 + cmd += ( buf[k]=='/' ? '\\' : buf[k] ); 531 + cmd += "\" "; 532 + } 533 + ShellExecute(hwnd(),NULL,lst[id-IDSTART],cmd,NULL,SW_SHOW); 534 + } 535 + } 536 +} 537 +
Added SubDlg.h version [f3e6b8304ab28f87]
1 +#ifndef AFX_ARCVIEWDLG_H__91EDF9F6_142E_4E25_BCE3_448E937E29D9__INCLUDED_ 2 +#define AFX_ARCVIEWDLG_H__91EDF9F6_142E_4E25_BCE3_448E937E29D9__INCLUDED_ 3 + 4 +#include "NoahApp.h" 5 +#include "Archiver.h" 6 +#include "resource.h" 7 + 8 +class CArcViewDlg : public kiDialog, kiDataObject 9 +{ 10 +public: 11 + CArcViewDlg( CArchiver* ptr,arcname& fnm,const kiPath& ddir ) 12 + : kiDialog( IDD_ARCVIEW ), m_pArc( ptr ), 13 + m_fname( fnm ), m_ddir( ddir ) 14 + { 15 + AddRef(); 16 + myapp().get_tempdir( m_tdir ); 17 + } 18 + 19 +private: //-- �_�C�A���O�Ƃ��Ă̏��� 20 + 21 + BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ); 22 + BOOL onInit(); 23 + bool onOK(); 24 + bool onCancel(); 25 + void setdir() 26 + { 27 + char str[MAX_PATH]; 28 + sendMsgToItem( IDC_DDIR, WM_GETTEXT, MAX_PATH, (LPARAM)str ); 29 + m_ddir = str; 30 + m_ddir.beBackSlash( true ); 31 + m_ddir.mkdir(); 32 + m_ddir.beShortPath(); 33 + } 34 + bool setSelection() 35 + { 36 + bool x=false; 37 + LVITEM it; 38 + it.mask = (LVIF_PARAM | LVIF_STATE); 39 + it.iSubItem = 0; 40 + it.stateMask = LVIS_SELECTED; 41 + for( it.iItem=0; sendMsgToItem( IDC_FILELIST, LVM_GETITEM, 0, (LPARAM)&it ); it.iItem++ ) 42 + if( ((arcfile*)it.lParam)->selected = (0!=(LVIS_SELECTED&it.state)) ) 43 + x = true; 44 + return x; 45 + } 46 + int hlp_cnt_check(); 47 + bool m_bAble; 48 + 49 +private: //-- �h���b�O���h���b�v���� 50 + 51 + bool giveData( const FORMATETC& fmt, STGMEDIUM* stg, bool firstcall ); 52 + 53 +private: //-- �\�[�g���� 54 + 55 + void DoSort( int col ); 56 + static int CALLBACK lv_compare( LPARAM p1, LPARAM p2, LPARAM type ); 57 + bool m_bSmallFirst[6]; 58 + 59 +private: //-- �E�N���b�N 60 + 61 + void DoRMenu(); 62 + void GenerateDirMenu( HMENU m, int& id, StrArray* sx, const kiPath& pth ); 63 + 64 +private: //-- �𓀍�� 65 + 66 + CArchiver* m_pArc; 67 + arcname m_fname; 68 + kiPath m_ddir, m_tdir; 69 + aflArray m_files; 70 + 71 +//-- ���݂��Ă���E�C���h�E���Ǘ��B 72 +public: static void clear() { st_nLife=0; } 73 +private:static void hello() { st_nLife++; } 74 + static void byebye() { if(--st_nLife==0) kiWindow::loopbreak(); } 75 + static int st_nLife; 76 +}; 77 + 78 + 79 +class CArcPwdDlg : public kiDialog 80 +{ 81 + char *buf; 82 + const char *nam; 83 + int siz; 84 +public: 85 + CArcPwdDlg( HWND h, char* x, int s, const char* n ) : kiDialog( IDD_PASSWORD ), buf(x), siz(s), nam(n) 86 + { 87 + doModal( h ); 88 + } 89 + BOOL onInit() 90 + { 91 + sendMsgToItem( IDC_MASK, BM_SETCHECK, BST_CHECKED ); 92 + sendMsgToItem( IDC_EDIT, EM_SETLIMITTEXT, siz ); 93 + sendMsgToItem( IDC_EDIT, EM_SETPASSWORDCHAR, '*' ); 94 + sendMsg( WM_SETTEXT, 0, (LPARAM)nam ); 95 + ::SetFocus( item(IDC_EDIT) ); 96 + return TRUE; 97 + } 98 + BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ) 99 + { 100 + if( msg==WM_COMMAND && LOWORD(wp)==IDC_MASK ) 101 + { 102 + if( BST_CHECKED==sendMsgToItem( IDC_MASK, BM_GETCHECK ) ) 103 + sendMsgToItem( IDC_EDIT, EM_SETPASSWORDCHAR, '*' ); 104 + else 105 + sendMsgToItem( IDC_EDIT, EM_SETPASSWORDCHAR ); 106 + ::InvalidateRect( item(IDC_EDIT), NULL, TRUE ); 107 + } 108 + return FALSE; 109 + } 110 + bool onOK() 111 + { 112 + sendMsgToItem( IDC_EDIT, WM_GETTEXT, siz, (LPARAM)buf ); 113 + return true; 114 + } 115 +}; 116 + 117 +class CArcProgressDlg : public kiDialog 118 +{ 119 + unsigned int bl; 120 +public: 121 + CArcProgressDlg( unsigned int barlimit, bool packing=false ) 122 + : kiDialog( IDD_PROGRESS ), bl( barlimit ) 123 + { 124 + createModeless(); 125 + if( bl<0x10000 ) 126 + sendMsgToItem( IDC_BAR, PBM_SETRANGE, 0, MAKELPARAM(0,bl) ); 127 + if( packing ) 128 + sendMsg( WM_SETTEXT, 0, (LPARAM)"Compressing..." ); 129 + kiWindow::setFront( hwnd() ); 130 + msgloop(); 131 + } 132 + ~CArcProgressDlg() 133 + { 134 + if( isAlive() ) 135 + end( IDCANCEL ); 136 + } 137 + bool msgloop() 138 + { 139 + kiWindow::msg(); 140 + return isAlive(); 141 + } 142 + void change( const char* name=NULL, unsigned int pos=0xffffffff ) 143 + { 144 + if( name ) sendMsgToItem( IDC_FNAME, WM_SETTEXT, 0, (LPARAM)name ); 145 + if( pos!=0xffffffff ) 146 + if( bl<0x10000 )sendMsgToItem( IDC_BAR, PBM_SETPOS, pos ); 147 + else sendMsgToItem( IDC_BAR, PBM_SETPOS, pos*100/bl ); 148 + } 149 +}; 150 + 151 + 152 +class CArcPathCheckDlg 153 +{ 154 +private: 155 + class TheDlg : public kiDialog 156 + { 157 + public: 158 + TheDlg( const char* path, HWND h ) 159 + : kiDialog(IDD_PATHCHECK), result(CANCEL), path(path) { doModal(h); } 160 + enum { YES, ALL_YES, CANCEL } result; 161 + private: 162 + const char* path; 163 + BOOL onInit() 164 + { 165 + sendMsgToItem( IDC_PATHNAME, WM_SETTEXT, 0, (LPARAM)path ); 166 + return TRUE; 167 + } 168 + BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ) 169 + { 170 + if( msg==WM_COMMAND ) 171 + switch( LOWORD(wp) ) 172 + { 173 + case IDYES: result = YES; end(IDOK); return TRUE; 174 + case ID_ALLYES: result = ALL_YES; end(IDOK); return TRUE; 175 + case ID_ALLNO: result = CANCEL; end(IDCANCEL); return TRUE; 176 + } 177 + return FALSE; 178 + } 179 + }; 180 + 181 +private: 182 + bool all_yes; 183 + 184 +public: 185 + CArcPathCheckDlg() : all_yes(false) {} 186 + 187 + bool is_ok_to_extract( const char* path, kiWindow* wnd ) 188 + { 189 + if( all_yes ) 190 + return true; 191 + switch( TheDlg(path,wnd?wnd->hwnd():NULL).result ) 192 + { 193 + case TheDlg::ALL_YES: all_yes = true; 194 + case TheDlg::YES: return true; 195 + } 196 + return false; 197 + } 198 +}; 199 + 200 + 201 +#endif
Added b2e.ico version [9d46d146eeea42a5]
cannot compute difference between binary files
Added kilib/kilib.h version [c66ea8b266dd9f08]
1 +//--- K.I.LIB --- 2 +// kilib.h : main-header of K.I.LIB 3 + 4 +#ifndef AFX_KILIB_H__89998F34_A9FE_4A27_A159_671F85AA9383__INCLUDED_ 5 +#define AFX_KILIB_H__89998F34_A9FE_4A27_A159_671F85AA9383__INCLUDED_ 6 + 7 +#include "kl_str.h" 8 +#include "kl_misc.h" 9 +#include "kl_cmd.h" 10 +#include "kl_wnd.h" 11 +#include "kl_file.h" 12 +#include "kl_app.h" 13 +#include "kl_reg.h" 14 +#include "kl_find.h" 15 +#include "kl_wcmn.h" 16 +#include "kl_dnd.h" 17 + 18 +extern kiApp* app(); 19 +extern void kilib_create_new_app(); 20 + 21 +#ifdef KILIB_LOG 22 +#define Log(_s_) app()->log((const char*)(_s_)) 23 +#else 24 +#define Log(_s_) 25 +#endif 26 + 27 +#endif
Added kilib/kilibext.h version [4783cacefbe06bfc]
1 +//--- K.I.LIB --- 2 +// kilibext.h : extra-classes of K.I.LIB 3 + 4 +#ifndef AFX_KILIBEXT_H__89998F34_A9FE_4A27_A159_671F85AA9383__INCLUDED_ 5 +#define AFX_KILIBEXT_H__89998F34_A9FE_4A27_A159_671F85AA9383__INCLUDED_ 6 + 7 +#include "kilib.h" 8 +#include "kl_carc.h" 9 +#include "kl_rythp.h" 10 + 11 +#endif
Added kilib/kl_app.cpp version [c970fd44dc7139a9]
1 +//--- K.I.LIB --- 2 +// kl_app.h : application class for K.I.LIB 3 + 4 +#include "stdafx.h" 5 +#include "kilib.h" 6 + 7 +//------------ �B��̃A�v���P�[�V�����I�u�W�F�N�g�̊Ǘ� ------------// 8 + 9 +kiApp* kiApp::st_pApp = NULL; 10 + 11 +kiApp* app() 12 +{ 13 + return kiApp::st_pApp; 14 +} 15 + 16 +//-------------------- �X�^�[�g�A�b�v�R�[�h ------------------------// 17 + 18 +void kilib_startUp() 19 +{ 20 + // �p�ꃍ�P�[���e�X�g�p 21 + //::SetThreadUILanguage(0x0409); 22 + 23 + //-- K.I.LIB ������ 24 + kiStr::init(); 25 + kiWindow::init(); 26 + 27 + //-- �L�[�{�[�h��ԃN���A 28 + ::GetAsyncKeyState( VK_SHIFT ); 29 + 30 + //-- �A�v���P�[�V�����C���X�^���X���쐬 31 + kilib_create_new_app(); 32 + if( app() ) 33 + { 34 + // �R�}���h���C������ 35 + kiCmdParser cmd( ::GetCommandLine(), true ); 36 + 37 + // ���s 38 + app()->run( cmd ); 39 + } 40 + 41 + //-- K.I.LIB �I�� 42 + kiWindow::finish(); 43 + 44 + delete app(); 45 + ::ExitProcess( 0 ); 46 +} 47 + 48 +//--------------- C-Runtime�������R�[�h�폜����̏��� ---------------// 49 + 50 +#if 0 51 + 52 +int APIENTRY WinMain( HINSTANCE, HINSTANCE, char*, int ) 53 +{ 54 + kilib_startUp(); 55 + return 0; 56 +} 57 + 58 +#else 59 + 60 +void* operator new( size_t siz ) 61 +{ 62 + return (void*)::GlobalAlloc( GMEM_FIXED, siz ); 63 +} 64 + 65 +void operator delete( void* ptr ) 66 +{ 67 + ::GlobalFree( (HGLOBAL)ptr ); 68 +} 69 + 70 +void main() 71 +{ 72 + // main ���Ȃ��Ɖ��̂� libc.lib �������N�G���[�ɂȂ�̂Ń_�~�[ 73 +} 74 + 75 +#endif 76 + 77 +//--------------------------------------------------------------//
Added kilib/kl_app.h version [45f14add3bfa4c0a]
1 +//--- K.I.LIB --- 2 +// kl_app.h : application class for K.I.LIB 3 + 4 +#ifndef AFX_KIAPP_H__AC24C8AF_2187_4873_83E8_AB4F2325017B__INCLUDED_ 5 +#define AFX_KIAPP_H__AC24C8AF_2187_4873_83E8_AB4F2325017B__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// �ėp�A�v���P�[�V�����N���X 9 + 10 +class kiApp 11 +{ 12 +friend kiApp* app(); 13 +friend void kilib_startUp(); 14 + 15 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 16 + 17 + // �C���X�^���X 18 + HINSTANCE inst() const 19 + { 20 + return m_hInst; 21 + } 22 + 23 + // ���C���E�C���h�E 24 + HWND mainhwnd() const 25 + { 26 + return m_pMainWnd ? m_pMainWnd->hwnd() : NULL; 27 + } 28 + kiWindow* mainwnd() const 29 + { 30 + return m_pMainWnd; 31 + } 32 + void setMainWnd( kiWindow* wnd ) 33 + { 34 + m_pMainWnd = wnd; 35 + } 36 + 37 + // �n�r�o�[�W���� 38 + const OSVERSIONINFO& osver() const 39 + { 40 + return m_OsVer; 41 + } 42 + 43 + // ���b�Z�[�W�{�b�N�X 44 + int msgBox( const char* msg, const char* caption=NULL, UINT type=MB_OK ) 45 + { 46 + return ::MessageBox( mainhwnd(), msg, caption, type ); 47 + } 48 + 49 + // �V�F���̃A���P�[�^�Ń�������� 50 + void shellFree( void* ptr ) const 51 + { 52 + m_pShellAlloc->Free( ptr ); 53 + } 54 + 55 + // ���z�R�[�h vKey �̃L�[�͉�����Ă��邩�H 56 + static bool keyPushed( int vKey ) 57 + { 58 + return( 0!=(::GetAsyncKeyState( vKey )>>15) ); 59 + } 60 + 61 + // CommonControl / OLE ������ 62 + void shellInit() 63 + { 64 + if( !m_bShellInit ) 65 + { 66 + ::InitCommonControls(); 67 + ::OleInitialize( NULL ); 68 + m_bShellInit = true; 69 + } 70 + } 71 + 72 +#ifdef KILIB_LOG 73 + void log( const char* str ) 74 + { 75 + if( !m_log.isOpened() ) 76 + { 77 + kiPath logtxt( kiPath::Exe ); logtxt += "log.txt"; 78 + m_log.open( logtxt, false ); 79 + } 80 + m_log.write( str, ki_strlen(str) ); 81 + m_log.write( "\r\n", 2 ); 82 + } 83 +#endif 84 + 85 +protected: //-- �h���N���X���� ----------------------------- 86 + 87 + // �N�����ɌĂ����B�K�{�B 88 + virtual void run( kiCmdParser& cmd ) = 0; 89 + 90 +protected: //-- �������� ----------------------------------- 91 + 92 + kiApp() 93 + { 94 + st_pApp = this; 95 + m_hInst = ::GetModuleHandle( NULL ); 96 + m_pMainWnd = NULL; 97 + m_bShellInit = false; 98 + m_OsVer.dwOSVersionInfoSize = sizeof( m_OsVer ); 99 + ::GetVersionEx( &m_OsVer ); 100 + ::SHGetMalloc( &m_pShellAlloc ); 101 + } 102 + 103 +protected: 104 + 105 + virtual ~kiApp() 106 + { 107 + m_pShellAlloc->Release(); 108 + if( m_bShellInit ) 109 + ::OleUninitialize(); 110 + } 111 + 112 +private: 113 + 114 + HINSTANCE m_hInst; 115 + IMalloc* m_pShellAlloc; 116 + bool m_bShellInit; 117 + OSVERSIONINFO m_OsVer; 118 + kiWindow* m_pMainWnd; 119 + static kiApp* st_pApp; 120 +#ifdef KILIB_LOG 121 + kiFile m_log; 122 +#endif 123 +}; 124 + 125 +#endif
Added kilib/kl_carc.cpp version [2cd48208f91bb969]
1 +//--- K.I.LIB --- 2 +// kl_carc.cpp : handling "common archivers' dll" 3 + 4 +#include "stdafx.h" 5 +#include "kilibext.h" 6 + 7 + 8 +//------------------------ load/unload ���� ----------------------// 9 + 10 + 11 +kiArcDLLRaw::kiArcDLLRaw( const char* dllname ) 12 + : m_DllPath( dllname ), not_loaded_yet( true ) 13 +{ 14 + ki_memzero( m_Proc, ISARC_FUNCTION_END*sizeof(FARPROC) ); 15 + f_VSb = NULL; 16 +} 17 + 18 +kiArcDLLRaw::~kiArcDLLRaw() 19 +{ 20 + unload(); 21 +} 22 + 23 +bool kiArcDLLRaw::load() 24 +{ 25 + not_loaded_yet = false; 26 + 27 + m_hDLL = kiSUtil::loadLibrary( m_DllPath ); 28 + if( !m_hDLL ) 29 + return false; 30 + 31 + // DLL�̖��O�������o�� 32 + char str[MAX_PATH], *p; 33 + const char *x, *y, *z; 34 + for( x=y=m_DllPath; *x!='\0'; x=kiStr::next(x) ) 35 + if( *x=='\\' || *x=='/' ) 36 + y = x + 1; 37 + for( p=str, z=y; (*z!='.' && *z!='3' && *z!='\0'); p++, z++ ) 38 + *p = *z; 39 + *p = '\0'; 40 + 41 + // �R�}���h����API���擾�Bcc�Ŏn�܂�API������? 42 + f_Cmd = ::GetProcAddress( m_hDLL, str ); 43 + if( f_Cmd ) 44 + m_DllNameBody = str; 45 + else 46 + { 47 + f_Cmd = ::GetProcAddress( m_hDLL, "ccCommand" ); 48 + if( f_Cmd ) 49 + m_DllNameBody = "cc"; 50 + else 51 + { 52 + if( str[0]=='7' && (f_Cmd=::GetProcAddress(m_hDLL,"SevenZip")) ) 53 + m_DllNameBody = "SevenZip"; 54 + else 55 + return false; 56 + } 57 + } 58 + 59 + return true; 60 +} 61 + 62 +void kiArcDLLRaw::unload() 63 +{ 64 + if( !not_loaded_yet && m_hDLL ) 65 + { 66 + ki_memzero( m_Proc, ISARC_FUNCTION_END*sizeof(FARPROC) ); 67 + ::FreeLibrary( m_hDLL ); 68 + not_loaded_yet = true; 69 + } 70 +} 71 + 72 +bool kiArcDLLRaw::isAlive() 73 +{ 74 + if( not_loaded_yet ) 75 + load(); 76 + 77 + return (m_hDLL != NULL); 78 +} 79 + 80 +FARPROC kiArcDLLRaw::getProc( const char* procname ) 81 +{ 82 + kiStr funcName = (const char*)m_DllNameBody; 83 + funcName += procname; 84 + return ::GetProcAddress( m_hDLL, funcName ); 85 +} 86 + 87 +//----------------------------- API�̃��b�p�Q --------------------------// 88 + 89 + 90 +int kiArcDLLRaw::command( const HWND wnd, LPCSTR cmd, LPSTR buf, const DWORD siz ) 91 +{ 92 + if( not_loaded_yet ) 93 + if( !load() ) 94 + return ERROR_NOT_SUPPORT; 95 + 96 + // �R�}���h���͕K�����[�h����Ă��� 97 + 98 + typedef int (WINAPI * CARC_CMD)(const HWND,const char*,char*,const DWORD); 99 + return ((CARC_CMD)f_Cmd)( wnd, cmd, buf, siz ); 100 +} 101 + 102 +WORD kiArcDLLRaw::getVer() 103 +{ 104 + if( not_loaded_yet ) 105 + if( !load() ) 106 + return 0; 107 + 108 + if( !f_Ver ) 109 + f_Ver = getProc( "GetVersion" ); 110 + 111 + typedef WORD (WINAPI * CARC_VER)(void); 112 + return f_Ver ? ((CARC_VER)f_Ver)() : 0; 113 +} 114 + 115 +WORD kiArcDLLRaw::getVerSub() 116 +{ 117 + if( not_loaded_yet ) 118 + if( !load() ) 119 + return 0; 120 + 121 + if( !f_VSb ) 122 + f_VSb = getProc( "GetSubVersion" ); 123 + 124 + typedef WORD (WINAPI * CARC_VER)(void); 125 + return f_VSb ? ((CARC_VER)f_VSb)() : 0; 126 +} 127 + 128 +BOOL kiArcDLLRaw::check( LPCSTR filename, const int mode ) 129 +{ 130 + if( not_loaded_yet ) 131 + if( !load() ) 132 + return FALSE; 133 + 134 + if( !f_Chk ) 135 + f_Chk = getProc( "CheckArchive" ); 136 + 137 + typedef BOOL (WINAPI * CARC_CHK)(const char*,const int); 138 + return f_Chk ? ((CARC_CHK)f_Chk)( filename, mode ) : FALSE; 139 +} 140 + 141 +int kiArcDLLRaw::getArcType( LPCSTR filename ) 142 +{ 143 + if( not_loaded_yet ) 144 + if( !load() ) 145 + return FALSE; 146 + 147 + if( !f_Gat ) 148 + f_Gat = getProc( "GetArchiveType" ); 149 + 150 + typedef BOOL (WINAPI * CARC_GAT)(const char*); 151 + return f_Gat ? ((CARC_GAT)f_Gat)( filename ) : 0; 152 +} 153 + 154 +HARC kiArcDLLRaw::openArc( const HWND wnd, LPCSTR arcname, const DWORD flag ) 155 +{ 156 + if( not_loaded_yet ) 157 + if( !load() ) 158 + return NULL; 159 + 160 + if( !f_Opn ) 161 + f_Opn = getProc( "OpenArchive" ); 162 + 163 + typedef HARC (WINAPI * CARC_OPN)(const HWND,LPCSTR,const DWORD); 164 + return f_Opn ? ((CARC_OPN)f_Opn)( wnd, arcname, flag ) : NULL; 165 +} 166 + 167 +void kiArcDLLRaw::closeArc( HARC arc ) 168 +{ 169 + if( not_loaded_yet ) 170 + if( !load() ) 171 + return; 172 + 173 + if( !f_Cls ) 174 + f_Cls = getProc( "CloseArchive" ); 175 + 176 + typedef int (WINAPI * CARC_CLS)(HARC); 177 + if( f_Cls ) 178 + ((CARC_CLS)f_Cls)( arc ); 179 +} 180 + 181 +int kiArcDLLRaw::findfirst( HARC arc, LPCSTR wildname, INDIVIDUALINFO* inf ) 182 +{ 183 + if( not_loaded_yet ) 184 + if( !load() ) 185 + return ERROR_NOT_SUPPORT; 186 + 187 + if( !f_Ffs ) 188 + f_Ffs = getProc( "FindFirst" ); 189 + 190 + typedef int (WINAPI * CARC_FFS)(HARC,LPCSTR,INDIVIDUALINFO FAR *); 191 + return f_Ffs ? ((CARC_FFS)f_Ffs)( arc, wildname, inf ) : ERROR_NOT_SUPPORT; 192 +} 193 + 194 +int kiArcDLLRaw::findnext( HARC arc, INDIVIDUALINFO* inf ) 195 +{ 196 + if( not_loaded_yet ) 197 + if( !load() ) 198 + return ERROR_NOT_SUPPORT; 199 + 200 + if( !f_Fnx ) 201 + f_Fnx = getProc( "FindNext" ); 202 + 203 + typedef int (WINAPI * CARC_FNX)(HARC,INDIVIDUALINFO FAR *); 204 + return f_Fnx ? ((CARC_FNX)f_Fnx)( arc, inf ) : ERROR_NOT_SUPPORT; 205 +} 206 + 207 +int kiArcDLLRaw::getAttr( HARC arc ) 208 +{ 209 + if( not_loaded_yet ) 210 + if( !load() ) 211 + return ERROR_NOT_SUPPORT; 212 + 213 + if( !f_GAr ) 214 + f_GAr = getProc( "GetAttribute" ); 215 + 216 + typedef int (WINAPI * CARC_GAR)(HARC); 217 + return f_GAr ? ((CARC_GAR)f_GAr)( arc ) : 0; 218 +} 219 + 220 +BOOL kiArcDLLRaw::setOwner( HWND wnd ) 221 +{ 222 + if( not_loaded_yet ) 223 + if( !load() ) 224 + return ERROR_NOT_SUPPORT; 225 + 226 + if( !f_SOw ) 227 + f_SOw = getProc( "SetOwnerWindow" ); 228 + 229 + typedef BOOL (WINAPI * CARC_SOW)(HWND); 230 + return f_SOw ? ((CARC_SOW)f_SOw)( wnd ) : FALSE; 231 +} 232 + 233 +BOOL kiArcDLLRaw::clearOwner() 234 +{ 235 + if( not_loaded_yet ) 236 + if( !load() ) 237 + return ERROR_NOT_SUPPORT; 238 + 239 + if( !f_COw ) 240 + f_COw = getProc( "ClearOwnerWindow" ); 241 + 242 + typedef BOOL (WINAPI * CARC_COW)(); 243 + return f_COw ? ((CARC_COW)f_COw)() : FALSE; 244 +} 245 +
Added kilib/kl_carc.h version [f3a830d4992fbcda]
1 +//--- K.I.LIB --- 2 +// kl_carc.h : handling "common archivers' dll" 3 + 4 +#ifndef AFX_KIARCDLLRAW_H__C94DE2A0_4292_49CE_8471_2CAA1340D216__INCLUDED_ 5 +#define AFX_KIARCDLLRAW_H__C94DE2A0_4292_49CE_8471_2CAA1340D216__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// �����A�[�J�C�oDLL���ʂ̒�` 9 + 10 +// FNAME_MAX 11 +#if !defined(FNAME_MAX32) 12 +#define FNAME_MAX32 512 13 +#define FNAME_MAX FNAME_MAX32 14 +#else 15 +#if !defined(FNAME_MAX) 16 +#define FNAME_MAX 128 17 +#endif 18 +#endif 19 + 20 +// CHECKARCHIVE 21 +#if !defined(CHECKARCHIVE_RAPID) 22 +#define CHECKARCHIVE_RAPID 0 23 +#define CHECKARCHIVE_BASIC 1 24 +#define CHECKARCHIVE_FULLCRC 2 25 +#endif 26 + 27 +// ISARC 28 +#if !defined(ISARC_FUNCTION_START) 29 +#define ISARC_FUNCTION_START 0 30 +#define ISARC 0 31 +#define ISARC_GET_VERSION 1 32 +#define ISARC_GET_CURSOR_INTERVAL 2 33 +#define ISARC_SET_CURSOR_INTERVAL 3 34 +#define ISARC_GET_BACK_GROUND_MODE 4 35 +#define ISARC_SET_BACK_GROUND_MODE 5 36 +#define ISARC_GET_CURSOR_MODE 6 37 +#define ISARC_SET_CURSOR_MODE 7 38 +#define ISARC_GET_RUNNING 8 39 + 40 +#define ISARC_CHECK_ARCHIVE 16 41 +#define ISARC_CONFIG_DIALOG 17 42 +#define ISARC_GET_FILE_COUNT 18 43 +#define ISARC_QUERY_FUNCTION_LIST 19 44 +#define ISARC_HOUT 20 45 +#define ISARC_STRUCTOUT 21 46 +#define ISARC_GET_ARC_FILE_INFO 22 47 + 48 +#define ISARC_OPEN_ARCHIVE 23 49 +#define ISARC_CLOSE_ARCHIVE 24 50 +#define ISARC_FIND_FIRST 25 51 +#define ISARC_FIND_NEXT 26 52 +#define ISARC_EXTRACT 27 53 +#define ISARC_ADD 28 54 +#define ISARC_MOVE 29 55 +#define ISARC_DELETE 30 56 +#define ISARC_SETOWNERWINDOW 31 57 +#define ISARC_CLEAROWNERWINDOW 32 58 +#define ISARC_SETOWNERWINDOWEX 33 59 +#define ISARC_KILLOWNERWINDOWEX 34 60 + 61 +#define ISARC_GET_ARC_FILE_NAME 40 62 +#define ISARC_GET_ARC_FILE_SIZE 41 63 +#define ISARC_GET_ARC_ORIGINAL_SIZE 42 64 +#define ISARC_GET_ARC_COMPRESSED_SIZE 43 65 +#define ISARC_GET_ARC_RATIO 44 66 +#define ISARC_GET_ARC_DATE 45 67 +#define ISARC_GET_ARC_TIME 46 68 +#define ISARC_GET_ARC_OS_TYPE 47 69 +#define ISARC_GET_ARC_IS_SFX_FILE 48 70 +#define ISARC_GET_ARC_WRITE_TIME_EX 49 71 +#define ISARC_GET_ARC_CREATE_TIME_EX 50 72 +#define ISARC_GET_ARC_ACCESS_TIME_EX 51 73 +#define ISARC_GET_ARC_CREATE_TIME_EX2 52 74 +#define ISARC_GET_ARC_WRITE_TIME_EX2 53 75 +#define ISARC_GET_FILE_NAME 57 76 +#define ISARC_GET_ORIGINAL_SIZE 58 77 +#define ISARC_GET_COMPRESSED_SIZE 59 78 +#define ISARC_GET_RATIO 60 79 +#define ISARC_GET_DATE 61 80 +#define ISARC_GET_TIME 62 81 +#define ISARC_GET_CRC 63 82 +#define ISARC_GET_ATTRIBUTE 64 83 +#define ISARC_GET_OS_TYPE 65 84 +#define ISARC_GET_METHOD 66 85 +#define ISARC_GET_WRITE_TIME 67 86 +#define ISARC_GET_CREATE_TIME 68 87 +#define ISARC_GET_ACCESS_TIME 69 88 +#define ISARC_GET_WRITE_TIME_EX 70 89 +#define ISARC_GET_CREATE_TIME_EX 71 90 +#define ISARC_GET_ACCESS_TIME_EX 72 91 +#define ISARC_SET_ENUM_MEMBERS_PROC 80 92 +#define ISARC_CLEAR_ENUM_MEMBERS_PROC 81 93 + 94 +#define ISARC_FUNCTION_END 81 95 +#endif 96 + 97 +// ERROR 98 +#if !defined(ERROR_START) 99 +#define ERROR_START 0x8000 100 + // warning 101 +#define ERROR_DISK_SPACE 0x8005 102 +#define ERROR_READ_ONLY 0x8006 103 +#define ERROR_USER_SKIP 0x8007 104 +#define ERROR_UNKNOWN_TYPE 0x8008 105 +#define ERROR_METHOD 0x8009 106 +#define ERROR_PASSWORD_FILE 0x800A 107 +#define ERROR_VERSION 0x800B 108 +#define ERROR_FILE_CRC 0x800C 109 +#define ERROR_FILE_OPEN 0x800D 110 +#define ERROR_MORE_FRESH 0x800E 111 +#define ERROR_NOT_EXIST 0x800F 112 +#define ERROR_ALREADY_EXIST 0x8010 113 + 114 +#define ERROR_TOO_MANY_FILES 0x8011 115 + // error 116 +#define ERROR_MAKEDIRECTORY 0x8012 117 +#define ERROR_CANNOT_WRITE 0x8013 118 +#define ERROR_HUFFMAN_CODE 0x8014 119 +#define ERROR_COMMENT_HEADER 0x8015 120 +#define ERROR_HEADER_CRC 0x8016 121 +#define ERROR_HEADER_BROKEN 0x8017 122 +#define ERROR_ARC_FILE_OPEN 0x8018 123 +#define ERROR_NOT_ARC_FILE 0x8019 124 +#define ERROR_CANNOT_READ 0x801A 125 +#define ERROR_FILE_STYLE 0x801B 126 +#define ERROR_COMMAND_NAME 0x801C 127 +#define ERROR_MORE_HEAP_MEMORY 0x801D 128 +#define ERROR_ENOUGH_MEMORY 0x801E 129 +#if !defined(ERROR_ALREADY_RUNNING) 130 +#define ERROR_ALREADY_RUNNING 0x801F 131 +#endif 132 +#define ERROR_USER_CANCEL 0x8020 133 +#define ERROR_HARC_ISNOT_OPENED 0x8021 134 +#define ERROR_NOT_SEARCH_MODE 0x8022 135 +#define ERROR_NOT_SUPPORT 0x8023 136 +#define ERROR_TIME_STAMP 0x8024 137 +#define ERROR_TMP_OPEN 0x8025 138 +#define ERROR_LONG_FILE_NAME 0x8026 139 +#define ERROR_ARC_READ_ONLY 0x8027 140 +#define ERROR_SAME_NAME_FILE 0x8028 141 +#define ERROR_NOT_FIND_ARC_FILE 0x8029 142 +#define ERROR_RESPONSE_READ 0x802A 143 +#define ERROR_NOT_FILENAME 0x802B 144 +#define ERROR_TMP_COPY 0x802C 145 +#define ERROR_EOF 0x802D 146 +#define ERROR_ADD_TO_LARC 0x802E 147 +#define ERROR_TMP_BACK_SPACE 0x802F 148 +#define ERROR_SHARING 0x8030 149 +#define ERROR_NOT_FIND_FILE 0x8031 150 +#define ERROR_LOG_FILE 0x8032 151 +#define ERROR_NO_DEVICE 0x8033 152 +#define ERROR_GET_ATTRIBUTES 0x8034 153 +#define ERROR_SET_ATTRIBUTES 0x8035 154 +#define ERROR_GET_INFORMATION 0x8036 155 +#define ERROR_GET_POINT 0x8037 156 +#define ERROR_SET_POINT 0x8038 157 +#define ERROR_CONVERT_TIME 0x8039 158 +#define ERROR_GET_TIME 0x803a 159 +#define ERROR_SET_TIME 0x803b 160 +#define ERROR_CLOSE_FILE 0x803c 161 +#define ERROR_HEAP_MEMORY 0x803d 162 +#define ERROR_HANDLE 0x803e 163 +#define ERROR_TIME_STAMP_RANGE 0x803f 164 +#define ERROR_MAKE_ARCHIVE 0x8040 165 + 166 +#define ERROR_END ERROR_MAKE_ARCHIVE 167 +#define ERROR_BUF_TOO_SMALL 0x8041 /**/ 168 +#endif 169 + 170 +// CONFIG 171 +#if !defined(UNPACK_CONFIG_MODE) 172 +#define UNPACK_CONFIG_MODE 1 173 +#define PACK_CONFIG_MODE 2 174 +#endif 175 + 176 +// OPENARCHIVE 177 +#if !defined(EXTRACT_FOUND_FILE) 178 +#define M_INIT_FILE_USE 0x00000001L 179 +#define M_REGARDLESS_INIT_FILE 0x00000002L 180 +#define M_NO_BACKGROUND_MODE 0x00000004L 181 +#define M_NOT_USE_TIME_STAMP 0x00000008L 182 +#define M_EXTRACT_REPLACE_FILE 0x00000010L 183 +#define M_EXTRACT_NEW_FILE 0x00000020L 184 +#define M_EXTRACT_UPDATE_FILE 0x00000040L 185 +#define M_CHECK_ALL_PATH 0x00000100L 186 +#define M_CHECK_FILENAME_ONLY 0x00000200L 187 +#define M_CHECK_DISK_SIZE 0x00000400L 188 +#define M_REGARDLESS_DISK_SIZE 0x00000800L 189 +#define M_USE_DRIVE_LETTER 0x00001000L 190 +#define M_NOT_USE_DRIVE_LETTER 0x00002000L 191 +#define M_INQUIRE_DIRECTORY 0x00004000L 192 +#define M_NOT_INQUIRE_DIRECTORY 0x00008000L 193 +#define M_INQUIRE_WRITE 0x00010000L 194 +#define M_NOT_INQUIRE_WRITE 0x00020000L 195 +#define M_CHECK_READONLY 0x00040000L 196 +#define M_REGARDLESS_READONLY 0x00080000L 197 +#define M_REGARD_E_COMMAND 0x00100000L 198 +#define M_REGARD_X_COMMAND 0x00200000L 199 +#define M_ERROR_MESSAGE_ON 0x00400000L 200 +#define M_ERROR_MESSAGE_OFF 0x00800000L 201 +#define M_BAR_WINDOW_ON 0x01000000L 202 +#define M_BAR_WINDOW_OFF 0x02000000L 203 +#define M_CHECK_PATH 0x04000000L 204 +#define M_RECOVERY_ON 0x08000000L 205 + 206 +#define M_MAKE_INDEX_FILE 0x10000000L 207 +#define M_NOT_MAKE_INDEX_FILE 0x20000000L 208 +#define EXTRACT_FOUND_FILE 0x40000000L 209 +#define EXTRACT_NAMED_FILE 0x80000000L 210 +#endif 211 + 212 +// ATTRIBUTE 213 +#ifndef FA_RDONLY 214 +#define FA_RDONLY 0x01 215 +#define FA_HIDDEN 0x02 216 +#define FA_SYSTEM 0x04 217 +#define FA_LABEL 0x08 218 +#define FA_DIREC 0x10 219 +#define FA_ARCH 0x20 220 +#endif 221 +#ifndef FA_ENCRYPTED 222 +#define FA_ENCRYPTED 0x40 223 +#endif 224 + 225 +// STRUCTURES 226 +#if defined(__BORLANDC__) 227 +#pragma option -a- 228 +#else 229 +#pragma pack(1) 230 +#endif 231 + 232 +typedef HGLOBAL HARCHIVE; 233 + 234 +#ifndef ARC_DECSTRACT 235 +#define ARC_DECSTRACT 236 +typedef HGLOBAL HARC; 237 + 238 +typedef struct { 239 + DWORD dwOriginalSize; 240 + DWORD dwCompressedSize; 241 + DWORD dwCRC; 242 + UINT uFlag; 243 + UINT uOSType; 244 + WORD wRatio; 245 + WORD wDate; 246 + WORD wTime; 247 + char szFileName[FNAME_MAX32 + 1]; 248 + char dummy1[3]; 249 + char szAttribute[8]; 250 + char szMode[8]; 251 +} INDIVIDUALINFO, FAR *LPINDIVIDUALINFO; 252 + 253 +typedef struct { 254 + DWORD dwFileSize; 255 + DWORD dwWriteSize; 256 + char szSourceFileName[FNAME_MAX32 + 1]; 257 + char dummy1[3]; 258 + char szDestFileName[FNAME_MAX32 + 1]; 259 + char dummy[3]; 260 +} EXTRACTINGINFO, FAR *LPEXTRACTINGINFO; 261 + 262 +typedef struct { 263 + EXTRACTINGINFO exinfo; 264 + DWORD dwCompressedSize; 265 + DWORD dwCRC; 266 + UINT uOSType; 267 + WORD wRatio; 268 + WORD wDate; 269 + WORD wTime; 270 + char szAttribute[8]; 271 + char szMode[8]; 272 +} EXTRACTINGINFOEX, *LPEXTRACTINGINFOEX; 273 +#endif 274 + 275 +#if !defined(__BORLANDC__) 276 +#pragma pack() 277 +#else 278 +#pragma option -a. 279 +#endif 280 + 281 +#if !defined(__BORLANDC__) 282 +#define _export 283 +#endif 284 + 285 +// WindowsMessage 286 +#ifndef WM_ARCEXTRACT 287 +#define WM_ARCEXTRACT "wm_arcextract" 288 +#define ARCEXTRACT_BEGIN 0 289 +#define ARCEXTRACT_INPROCESS 1 290 +#define ARCEXTRACT_END 2 291 +#define ARCEXTRACT_OPEN 3 292 +#define ARCEXTRACT_COPY 4 293 +typedef BOOL CALLBACK ARCHIVERPROC(HWND,UINT,UINT,LPEXTRACTINGINFOEX); 294 +typedef ARCHIVERPROC *LPARCHIVERPROC; 295 +#endif 296 + 297 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 298 +// �����A�[�J�C�oDLL����ɔ����������C�� 299 + 300 +class kiArcDLLRaw 301 +{ 302 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 303 + 304 + // DLL���ŏ������B 305 + kiArcDLLRaw( const char* dllname ); 306 + kiPath& name() 307 + { return m_DllPath; } 308 + 309 + // DLL�������Ă��邩�ǂ����B 310 + bool isAlive(); 311 + 312 + // API �̃��b�p [ DLL��API�������Ƃ��̕Ԓl ] 313 + 314 + // �o�[�W����x100 [ 0 ] 315 + WORD getVer(); 316 + // �o�[�W�����T�ux100 [ 0 ] 317 + WORD getVerSub(); 318 + // �R�}���h���� [ ERROR_NOT_SUPPORT ] 319 + int command( const HWND wnd, LPCSTR cmd, LPSTR buf, const DWORD siz ); 320 + // ���Ƀ`�F�b�N [ FALSE ] 321 + BOOL check( LPCSTR filename, const int mode ); 322 + // ���ɂ̎�� [ 0 ] 323 + int getArcType( LPCSTR filename ); 324 + 325 + // �J�� [ NULL ] 326 + HARC openArc( const HWND wnd, LPCSTR arcname, const DWORD flag ); 327 + // ���� 328 + void closeArc( HARC arc ); 329 + // ��ڂ����� [ ERROR_NOT_SUPPORT ] 330 + int findfirst( HARC arc, LPCSTR wildname, INDIVIDUALINFO* inf ); 331 + // ��ڈȍ~������ [ ERROR_NOT_SUPPORT ] 332 + int findnext( HARC arc, INDIVIDUALINFO* inf ); 333 + // �����擾 [ 0 ] 334 + int getAttr( HARC arc ); 335 + 336 + // �I�[�i�[�w�� [ FALSE ] 337 + BOOL setOwner( HWND wnd ); 338 + // �I�[�i�[���� [ FALSE ] 339 + BOOL clearOwner(); 340 + 341 + // ��load�n�͌ĂȂ��Ă������ʼn��Ƃ�����̂łł���Ύg��Ȃ����ƁB 342 + bool load(); 343 + void unload(); 344 + 345 +private: //-- �������� ----------------------------------- 346 + 347 + HINSTANCE m_hDLL; 348 + bool not_loaded_yet; 349 + 350 + kiPath m_DllPath; 351 + kiStr m_DllNameBody; 352 + FARPROC getProc( const char* procname ); 353 + 354 + FARPROC m_Proc[ ISARC_FUNCTION_END ]; 355 + FARPROC f_VSb; 356 +#define f_Cmd m_Proc[ ISARC ] 357 +#define f_Chk m_Proc[ ISARC_GET_VERSION ] 358 +#define f_Gat m_Proc[ 13 ] 359 +#define f_Ver m_Proc[ ISARC_CHECK_ARCHIVE ] 360 +#define f_Opn m_Proc[ ISARC_OPEN_ARCHIVE ] 361 +#define f_Cls m_Proc[ ISARC_CLOSE_ARCHIVE ] 362 +#define f_Ffs m_Proc[ ISARC_FIND_FIRST ] 363 +#define f_Fnx m_Proc[ ISARC_FIND_NEXT ] 364 +#define f_GAr m_Proc[ ISARC_GET_ATTRIBUTE ] 365 +#define f_SOw m_Proc[ ISARC_SETOWNERWINDOW ] 366 +#define f_COw m_Proc[ ISARC_CLEAROWNERWINDOW ] 367 + 368 +public: 369 + virtual ~kiArcDLLRaw(); 370 +}; 371 + 372 +#endif
Added kilib/kl_cmd.cpp version [815f69faf09d6d48]
1 +//--- K.I.LIB --- 2 +// kl_cmd.h : commandline parser 3 + 4 +#include "stdafx.h" 5 +#include "kilib.h" 6 + 7 + 8 +//------------------------ ������̃����������Ȃ� -----------------------// 9 + 10 + 11 +kiCmdParser::kiCmdParser( char* cmd, bool ignoreFirst ) 12 +{ 13 + m_Buffer = NULL; 14 + if( cmd ) 15 + doit( cmd, ignoreFirst ); 16 +} 17 + 18 +kiCmdParser::kiCmdParser( const char* cmd, bool ignoreFirst ) 19 +{ 20 + m_Buffer=NULL; 21 + if( cmd ) 22 + { 23 + m_Buffer = new char[ ki_strlen(cmd)+1 ]; 24 + ki_strcpy( m_Buffer, cmd ); 25 + doit( m_Buffer, ignoreFirst ); 26 + } 27 +} 28 + 29 +kiCmdParser::~kiCmdParser() 30 +{ 31 + delete [] m_Buffer; 32 +} 33 + 34 + 35 +//---------------------------- �����̏��� -----------------------------// 36 + 37 + 38 +void kiCmdParser::doit( char* start, bool ignoreFirst ) 39 +{ 40 + char* p=start; 41 + char endc; 42 + bool first = true; 43 + 44 + while( *p!='\0' ) 45 + { 46 + // �]���ȋ̓X�L�b�v 47 + while( *p==' ' ) //|| *p=='\t' || *p=='\r' || *p=='\n' ) 48 + p++; 49 + 50 + // " ��������A���̎|�L�^���Ă���Ɉ�i�߂� 51 + if( *p=='"' ) 52 + endc='"', p++; 53 + else 54 + endc=' '; 55 + 56 + // end-of-text �Ȃ�I�� 57 + if( *p=='\0' ) 58 + break; 59 + 60 + if( first && ignoreFirst ) 61 + first = false; 62 + else 63 + { 64 + // ������ۑ� 65 + if( *p=='-' ) 66 + m_Switch.add( p ); 67 + else 68 + m_Param.add( p ); 69 + } 70 + 71 + // �����̏I���ցc 72 + while( *p!=endc && *p!='\0' ) 73 + p++; 74 + 75 + // �I����'\0'�ɂ��邱�Ƃɂ���āA��������� 76 + if( *p!='\0' ) 77 + *(p++) = '\0'; 78 + } 79 +}
Added kilib/kl_cmd.h version [12ecf570cf0caedb]
1 +//--- K.I.LIB --- 2 +// kl_cmd.h : commandline parser 3 + 4 +#ifndef AFX_KICMDPARSER_H__843A27E0_5DBF_48AF_A748_FA7F111F699A__INCLUDED_ 5 +#define AFX_KICMDPARSER_H__843A27E0_5DBF_48AF_A748_FA7F111F699A__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// kiCmdParser : �R�}���h�������char*�̔z��ɕ��� 9 + 10 +class kiCmdParser 11 +{ 12 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 13 + 14 + // ������ŏ����� 15 + kiCmdParser( char* cmd, bool ignoreFirst=false ); 16 + kiCmdParser( const char* cmd, bool ignoreFirst=false ); 17 + 18 + // �X�C�b�`������̔z�� 19 + cCharArray& option() 20 + { return m_Switch; } 21 + 22 + // �X�C�b�`�ȊO�̕�����̔z�� 23 + cCharArray& param() 24 + { return m_Param; } 25 + 26 +private: //-- �������� ----------------------------------- 27 + 28 + void doit( char* start, bool ignoreFirst ); 29 + cCharArray m_Param; 30 + cCharArray m_Switch; 31 + char* m_Buffer; 32 + 33 +public: 34 + 35 + virtual ~kiCmdParser(); 36 +}; 37 + 38 +#endif
Added kilib/kl_dnd.cpp version [c1d100a942724719]
1 +//--- K.I.LIB --- 2 +// kl_dnd.h : drag and drop operation 3 + 4 +#include "stdafx.h" 5 +#include "kilib.h" 6 + 7 +//--------------------------------------------------------------------// 8 + 9 +bool kiDropSource::DnD( kiDataObject* pObj, DWORD efct, DWORD* pefct ) 10 +{ 11 + kiDropSource* pDrpSrc = new kiDropSource; 12 + pDrpSrc->AddRef(); 13 + pObj->begin(); 14 + 15 + DWORD d, *p=(pefct==NULL ? &d : pefct); 16 + HRESULT hr = ::DoDragDrop( pObj, pDrpSrc, efct, p ); 17 + 18 + pDrpSrc->Release(); 19 + return (hr == DRAGDROP_S_DROP); 20 +} 21 + 22 +//------------------------ IUnknown Implement -------------------------// 23 + 24 +kiDropSource::kiDropSource() : m_cRef( 0L ) 25 +{ 26 + app()->shellInit(); // OleInitialize() 27 +} 28 + 29 +STDMETHODIMP_(ULONG) kiDropSource::AddRef() 30 +{ 31 + return ++m_cRef; 32 +} 33 + 34 +STDMETHODIMP_(ULONG) kiDropSource::Release() 35 +{ 36 + if( --m_cRef ) 37 + return m_cRef; 38 + 39 + delete this; 40 + return 0L; 41 +} 42 + 43 +STDMETHODIMP kiDropSource::QueryInterface( REFIID riid, void** ppObj ) 44 +{ 45 + if( ::IsEqualIID( riid, IID_IUnknown ) 46 + || ::IsEqualIID( riid, IID_IDropSource ) ) 47 + { 48 + *ppObj = (void*)this; 49 + AddRef(); 50 + return S_OK; 51 + } 52 + 53 + *ppObj = NULL; 54 + return E_NOINTERFACE; 55 +} 56 + 57 +//------------------------ IDropSource Implement -------------------------// 58 + 59 +STDMETHODIMP kiDropSource::GiveFeedback( DWORD dwEffect ) 60 +{ 61 + return DRAGDROP_S_USEDEFAULTCURSORS; 62 +} 63 + 64 +STDMETHODIMP kiDropSource::QueryContinueDrag( BOOL keyESC, DWORD keyOther ) 65 +{ 66 + if( keyESC ) 67 + return DRAGDROP_S_CANCEL; 68 + if( !(keyOther&MK_LBUTTON) && !(keyOther&MK_RBUTTON) ) 69 + return DRAGDROP_S_DROP; 70 + return S_OK; 71 +} 72 + 73 +//------------------------ IUnknown Implement -------------------------// 74 + 75 +kiDataObject::kiDataObject() : m_cRef( 0L ), m_FormatList( 2 ) 76 +{ 77 +} 78 + 79 +STDMETHODIMP_(ULONG) kiDataObject::AddRef() 80 +{ 81 + return ++m_cRef; 82 +} 83 + 84 +STDMETHODIMP_(ULONG) kiDataObject::Release() 85 +{ 86 + if( --m_cRef ) 87 + return m_cRef; 88 + 89 + delete this; 90 + return 0L; 91 +} 92 + 93 +STDMETHODIMP kiDataObject::QueryInterface( REFIID riid, void** ppObj ) 94 +{ 95 + if( ::IsEqualIID( riid, IID_IUnknown ) 96 + || ::IsEqualIID( riid, IID_IDataObject ) ) 97 + { 98 + *ppObj = (void*)this; 99 + AddRef(); 100 + return S_OK; 101 + } 102 + 103 + *ppObj = NULL; 104 + return E_NOINTERFACE; 105 +} 106 + 107 +//------------------------ IDataObject Implement -------------------------// 108 + 109 + 110 +STDMETHODIMP kiDataObject::GetData( FORMATETC* fmtc, STGMEDIUM* stg ) 111 +{ 112 + HRESULT hr = QueryGetData( fmtc ); 113 + if( FAILED(hr) ) 114 + return hr; 115 + bool res = giveData( *fmtc, stg, m_bFirst ); 116 + m_bFirst = false; 117 + return res ? S_OK : STG_E_MEDIUMFULL; 118 +} 119 + 120 +STDMETHODIMP kiDataObject::QueryGetData( FORMATETC* fmtc ) 121 +{ 122 + for( unsigned int i=0; i!=m_FormatList.len(); i++ ) 123 + if( m_FormatList[i].cfFormat == fmtc->cfFormat ) 124 +// if(fmtc & TYMED_HGLOBAL) 125 + return S_OK; 126 + return DV_E_FORMATETC; 127 +} 128 + 129 +//---------- Enumrator ---------// 130 + 131 +class kiDataObject_Enum : public IEnumFORMATETC 132 +{ 133 +public: 134 + kiDataObject_Enum( kiDataObject* p ) 135 + : m_cRef( 0L ), m_pObj( p ), m_nCur( 0L ) 136 + { 137 + m_pObj->AddRef(); 138 + } 139 + ~kiDataObject_Enum() 140 + { 141 + m_pObj->Release(); 142 + } 143 + STDMETHODIMP_(ULONG) AddRef() 144 + { 145 + return ++m_cRef; 146 + } 147 + STDMETHODIMP_(ULONG) Release() 148 + { 149 + if( --m_cRef ) 150 + return m_cRef; 151 + delete this; 152 + return 0L; 153 + } 154 + STDMETHODIMP QueryInterface( REFIID riid, void** ppObj ) 155 + { 156 + if( ::IsEqualIID( riid, IID_IUnknown ) 157 + || ::IsEqualIID( riid, IID_IEnumFORMATETC ) ) 158 + { 159 + *ppObj = (void*)this; 160 + AddRef(); 161 + return S_OK; 162 + } 163 + *ppObj = NULL; 164 + return E_NOINTERFACE; 165 + } 166 + STDMETHODIMP Clone( IEnumFORMATETC** ppNew ) 167 + { 168 + *ppNew = new kiDataObject_Enum( m_pObj ); 169 + ((kiDataObject_Enum*)(*ppNew))->m_nCur = m_nCur; 170 + (*ppNew)->AddRef(); 171 + return S_OK; 172 + } 173 + STDMETHODIMP Reset() 174 + { 175 + m_nCur = 0; 176 + return S_OK; 177 + } 178 + STDMETHODIMP Skip( ULONG celt ) 179 + { 180 + m_nCur += celt; 181 + if( m_pObj->m_FormatList.len() <= m_nCur ) 182 + { 183 + m_nCur = m_pObj->m_FormatList.len() - 1; 184 + return S_FALSE; 185 + } 186 + return S_OK; 187 + } 188 + STDMETHODIMP Next( ULONG celt, FORMATETC* pFmt, ULONG* fetched ) 189 + { 190 + if( fetched ) 191 + *fetched = 0L; 192 + if( !pFmt ) 193 + return E_POINTER; 194 + ULONG i; 195 + for( i=0; i < celt && m_nCur < m_pObj->m_FormatList.len(); i++,m_nCur++ ) 196 + *pFmt++ = m_pObj->m_FormatList[m_nCur]; 197 + if( fetched ) 198 + *fetched = i; 199 + return i==celt ? S_OK : S_FALSE; 200 + } 201 +private: 202 + ULONG m_cRef; 203 + ULONG m_nCur; 204 + kiDataObject* m_pObj; 205 +}; 206 + 207 +STDMETHODIMP kiDataObject::EnumFormatEtc( DWORD drctn, IEnumFORMATETC** ppEnm ) 208 +{ 209 + if( !ppEnm ) 210 + return E_INVALIDARG; 211 + *ppEnm = NULL; 212 + if( drctn!=DATADIR_GET ) 213 + return E_NOTIMPL; 214 + 215 + (*ppEnm = new kiDataObject_Enum( this ))->AddRef(); 216 + return S_OK; 217 +}
Added kilib/kl_dnd.h version [3378ce3cda9a549d]
1 +//--- K.I.LIB --- 2 +// kl_dnd.h : drag and drop operation 3 + 4 +#ifndef AFX_KIDROPSOURCE_H__141BEF0D_0DA2_4156_93E4_313535916A23__INCLUDED_ 5 +#define AFX_KIDROPSOURCE_H__141BEF0D_0DA2_4156_93E4_313535916A23__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// kiDataObject : �h���b�v�f�[�^�Ƃ��Ă̕W������ 9 + 10 +class kiDataObject : public IDataObject 11 +{ 12 +protected: // �h���N���X�������� 13 + 14 + virtual bool giveData( const FORMATETC& fmt, STGMEDIUM* stg, bool firstcall ) = 0; 15 + void addFormat( const FORMATETC& frm ) 16 + { 17 + m_FormatList.add( frm ); 18 + } 19 + 20 +protected: //-- IUnknown ----------- 21 + 22 + kiDataObject(); 23 + STDMETHODIMP QueryInterface( REFIID, void** ); 24 + STDMETHODIMP_(ULONG) AddRef(); 25 + STDMETHODIMP_(ULONG) Release(); 26 +private: 27 + ULONG m_cRef; 28 + 29 +private: //-- IDataObject ------------ 30 + 31 + STDMETHODIMP GetData( FORMATETC*, STGMEDIUM* ); 32 + STDMETHODIMP QueryGetData( FORMATETC* ); 33 + STDMETHODIMP EnumFormatEtc( DWORD, IEnumFORMATETC** ); 34 + STDMETHODIMP GetDataHere( FORMATETC*, STGMEDIUM* ) 35 + { 36 + return E_NOTIMPL; 37 + } 38 + STDMETHODIMP GetCanonicalFormatEtc( FORMATETC*, FORMATETC* ) 39 + { 40 + return E_NOTIMPL; 41 + } 42 + STDMETHODIMP SetData( FORMATETC*, STGMEDIUM*, BOOL ) 43 + { 44 + return E_NOTIMPL; 45 + } 46 + STDMETHODIMP DAdvise( FORMATETC*, DWORD, IAdviseSink*, DWORD* ) 47 + { 48 + return OLE_E_ADVISENOTSUPPORTED; 49 + } 50 + STDMETHODIMP DUnadvise( DWORD ) 51 + { 52 + return OLE_E_NOCONNECTION; 53 + } 54 + STDMETHODIMP EnumDAdvise( IEnumSTATDATA** ) 55 + { 56 + return OLE_E_ADVISENOTSUPPORTED; 57 + } 58 + 59 +private: //-- �������� ----------------- 60 + 61 + kiArray<FORMATETC> m_FormatList; 62 + bool m_bFirst; 63 + friend class kiDataObject_Enum; 64 + 65 +public: 66 + void begin() 67 + { 68 + m_bFirst = true; 69 + } 70 +}; 71 + 72 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 73 +// kiDropSource : �h���b�v���Ƃ��Ă̕W������ 74 + 75 +class kiDropSource : public IDropSource 76 +{ 77 +public: //-- �h���b�O���h���b�v���s�I 78 + 79 + static bool DnD( kiDataObject* pObj, DWORD efct, DWORD* pefct=NULL ); 80 + 81 +private: //-- IUnknown 82 + 83 + kiDropSource(); 84 + STDMETHODIMP QueryInterface( REFIID, void** ); 85 + STDMETHODIMP_(ULONG) AddRef(); 86 + STDMETHODIMP_(ULONG) Release(); 87 + ULONG m_cRef; 88 + 89 +private: //-- IDropSource 90 + 91 + STDMETHODIMP QueryContinueDrag( BOOL, DWORD ); 92 + STDMETHODIMP GiveFeedback( DWORD ); 93 +}; 94 + 95 +#endif
Added kilib/kl_file.cpp version [0fee3831c01ce648]
1 +//--- K.I.LIB --- 2 +// kl_file.cpp : file operations 3 + 4 +#include "stdafx.h" 5 +#include "kilib.h" 6 + 7 +//--------------------------- static --------------------------// 8 + 9 +__int64 kiFile::getSize64( const char* fname ) 10 +{ 11 + HANDLE h = ::CreateFile( fname, 12 + GENERIC_READ, FILE_SHARE_WRITE|FILE_SHARE_READ, 13 + NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN, NULL ); 14 + if( h==INVALID_HANDLE_VALUE ) 15 + return 0; 16 + 17 + DWORD low, hi; 18 + low = ::GetFileSize( h, &hi ); 19 + ::CloseHandle( h ); 20 + 21 + return (__int64(hi)<<32) | low; 22 +} 23 + 24 +unsigned long kiFile::getSize( const char* fname, unsigned long err ) 25 +{ 26 + HANDLE h = ::CreateFile( fname, 27 + GENERIC_READ, FILE_SHARE_WRITE|FILE_SHARE_READ, 28 + NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN, NULL ); 29 + if( h==INVALID_HANDLE_VALUE ) 30 + return err; 31 + 32 + unsigned long ans = ::GetFileSize( h, NULL ); 33 + ::CloseHandle( h ); 34 + 35 + return ans==0xffffffff ? err : ans; 36 +} 37 + 38 +//--------------------------- ����ŊJ���� --------------------------// 39 + 40 + 41 +bool kiFile::open( const char* filename, bool read, bool create ) 42 +{ 43 + close(); 44 + 45 + if( m_bReadMode = read ) 46 + m_hFile = ::CreateFile( filename, 47 + GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 48 + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL ); 49 + else 50 + m_hFile = ::CreateFile( filename, 51 + GENERIC_WRITE, FILE_SHARE_READ, NULL, 52 + create ? CREATE_ALWAYS : OPEN_EXISTING, 53 + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL ); 54 + if( m_hFile == INVALID_HANDLE_VALUE ) 55 + return false; 56 + 57 + m_nBufPos = 0; 58 + if( m_bReadMode ) 59 + flush(); 60 + 61 + return true; 62 +} 63 + 64 +void kiFile::close() 65 +{ 66 + if( m_hFile != INVALID_HANDLE_VALUE ) 67 + { 68 + if( !m_bReadMode ) 69 + flush(); 70 + 71 + ::CloseHandle( m_hFile ); 72 + m_hFile = INVALID_HANDLE_VALUE; 73 + } 74 +} 75 + 76 + 77 +//-------------------------- �ǂݏ��� ----------------------------// 78 + 79 + 80 +unsigned long kiFile::read( unsigned char* buf, unsigned long len ) 81 +{ 82 + unsigned long ans = 0; 83 + if( m_nBufSize!=0 && m_hFile!=INVALID_HANDLE_VALUE && m_bReadMode ) 84 + { 85 + while( (m_nBufSize-m_nBufPos) <= len ) 86 + { 87 + ans += (m_nBufSize-m_nBufPos); 88 + ki_memcpy( buf, m_pBuf+m_nBufPos, m_nBufSize-m_nBufPos ); 89 + len -= (m_nBufSize-m_nBufPos); 90 + buf += (m_nBufSize-m_nBufPos); 91 + 92 + flush(); 93 + if( m_nBufSize == 0 ) 94 + return ans; 95 + } 96 + ans += len; 97 + ki_memcpy( buf, m_pBuf+m_nBufPos, len ); 98 + m_nBufPos += len; 99 + } 100 + return ans; 101 +} 102 + 103 +void kiFile::write( const void* buf, unsigned long len ) 104 +{ 105 + if( m_hFile==INVALID_HANDLE_VALUE || m_bReadMode ) 106 + return; 107 + const unsigned char* ubuf = (const unsigned char*)buf; 108 + 109 + while( (kifile_bufsize-m_nBufPos) <= len ) 110 + { 111 + ki_memcpy( m_pBuf+m_nBufPos, buf, (kifile_bufsize-m_nBufPos) ); 112 + len -= (kifile_bufsize-m_nBufPos); 113 + ubuf += (kifile_bufsize-m_nBufPos); 114 + m_nBufPos = kifile_bufsize; 115 + flush(); 116 + } 117 + ki_memcpy( m_pBuf+m_nBufPos, ubuf, len ); 118 + m_nBufPos += len; 119 +} 120 + 121 +#undef putc 122 +void kiFile::putc( unsigned char c ) 123 +{ 124 + if( m_hFile==INVALID_HANDLE_VALUE || m_bReadMode ) 125 + return; 126 + if( (kifile_bufsize-m_nBufPos) <= 1 ) 127 + flush(); 128 + m_pBuf[ m_nBufPos++ ] = c; 129 +} 130 + 131 +#undef getc 132 +int kiFile::getc() 133 +{ 134 + if( m_nBufSize==0 || m_hFile==INVALID_HANDLE_VALUE || !m_bReadMode ) 135 + return -1; 136 + 137 + if( 0==(m_nBufSize-m_nBufPos) ) 138 + { 139 + flush(); 140 + if( m_nBufSize==0 ) 141 + return -1; 142 + } 143 + if( 1==(m_nBufSize-m_nBufPos) ) 144 + { 145 + int ans = m_pBuf[ m_nBufPos++ ]; 146 + flush(); 147 + return ans; 148 + } 149 + 150 + return m_pBuf[ m_nBufPos++ ]; 151 +} 152 + 153 +void kiFile::flush() 154 +{ 155 + if( m_bReadMode ) 156 + { 157 + ::ReadFile( m_hFile, m_pBuf, kifile_bufsize, &m_nBufSize, NULL ); 158 + m_nBufPos = 0; 159 + } 160 + else 161 + { 162 + ::WriteFile( m_hFile, m_pBuf, m_nBufPos, &m_nBufSize, NULL ); 163 + m_nBufSize = m_nBufPos = 0; 164 + } 165 +}
Added kilib/kl_file.h version [15fdc1958c9c2f88]
1 +//--- K.I.LIB --- 2 +// kl_file.h : file operations 3 + 4 +#ifndef AFX_KIFILE_H__7D126C1E_3E5C_476E_9A4E_81CA8055621D__INCLUDED_ 5 +#define AFX_KIFILE_H__7D126C1E_3E5C_476E_9A4E_81CA8055621D__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// �o�C�i���t�@�C������ 9 + 10 +class kiFile 11 +{ 12 +public: //-- static ---------------------------------------- 13 + 14 + // �t�@�C���T�C�Y�擾( ���O, �G���[���ɕԂ������l ) 15 + static unsigned long getSize( const char* fname, unsigned long err=0xffffffff ); 16 + static __int64 getSize64( const char* fname ); 17 + 18 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 19 + 20 + // �J���ĕ��� 21 + bool open( const char* filename, bool read=true, bool create=true ); 22 + void close(); 23 + 24 + // �ǂ�ŏ����� 25 + unsigned long read( unsigned char* buf, unsigned long len ); 26 + void write( const void* buf, unsigned long len ); 27 + int getc(); 28 + void putc( unsigned char c ); 29 + 30 + // �V�[�N 31 + void seekTo( unsigned long pos ) 32 + { 33 + if( !m_bReadMode ) flush(); 34 + ::SetFilePointer( m_hFile, pos, NULL, FILE_BEGIN ); 35 + if( m_bReadMode ) flush(); 36 + } 37 + void seek( long pos ) 38 + { 39 + if( !m_bReadMode ) flush(); 40 + ::SetFilePointer( m_hFile, 41 + pos-(signed)m_nBufSize+(signed)m_nBufPos, NULL, 42 + FILE_CURRENT ); 43 + if( m_bReadMode ) flush(); 44 + } 45 + unsigned long tell() 46 + { 47 + return ::SetFilePointer( m_hFile, 0, NULL, FILE_CURRENT ) 48 + - m_nBufSize + m_nBufPos; 49 + } 50 + 51 + // ���擾 52 + bool isOpened() 53 + { 54 + return m_hFile != INVALID_HANDLE_VALUE; 55 + } 56 + unsigned long getSize( unsigned long* higher=NULL ) 57 + { 58 + return ::GetFileSize( m_hFile, higher ); 59 + } 60 + bool isEOF() 61 + { 62 + return (m_nBufPos==0 && m_nBufSize==0); 63 + } 64 + 65 +public: //-- �������� ----------------------------------- 66 + 67 + kiFile() : kifile_bufsize( 65536 ) 68 + { 69 + m_hFile= INVALID_HANDLE_VALUE; 70 + m_pBuf = new unsigned char[kifile_bufsize]; 71 + } 72 + 73 + virtual ~kiFile() 74 + { 75 + close(); 76 + delete [] m_pBuf; 77 + } 78 + 79 + HANDLE getHandle() const 80 + { 81 + return m_hFile; 82 + } 83 + 84 +private: 85 + const int kifile_bufsize; 86 + void flush(); 87 + 88 + HANDLE m_hFile; 89 + bool m_bReadMode; 90 + unsigned char* m_pBuf; 91 + unsigned long m_nBufSize, m_nBufPos; 92 +}; 93 + 94 +#endif
Added kilib/kl_find.cpp version [16c2c7129051abe4]
1 +//--- K.I.LIB --- 2 +// kl_find.h : FindFirstFile wrapper 3 + 4 +#include "stdafx.h" 5 +#include "kilib.h" 6 + 7 +#define isDots(p) (*p=='.' && (p[1]=='\0' || (p[1]=='.' && p[2]=='\0'))) 8 + 9 +bool kiFindFile::findfirst( const char* wild, WIN32_FIND_DATA* pfd ) 10 +{ 11 + HANDLE xh = ::FindFirstFile( wild, pfd ); 12 + if( xh==INVALID_HANDLE_VALUE ) 13 + return false; 14 + while( isDots(pfd->cFileName) ) 15 + if( !::FindNextFile( xh, pfd ) ) 16 + { 17 + ::FindClose( xh ); 18 + return false; 19 + } 20 + ::FindClose( xh ); 21 + return true; 22 +} 23 + 24 +void kiFindFile::close() 25 +{ 26 + first=true; 27 + if( h!=INVALID_HANDLE_VALUE ) 28 + { 29 + ::FindClose( h ), h=INVALID_HANDLE_VALUE; 30 + } 31 +} 32 + 33 +bool kiFindFile::begin( const char* wild ) 34 +{ 35 + close(); 36 + 37 + h = ::FindFirstFile( wild, &fd ); 38 + if( h==INVALID_HANDLE_VALUE ) 39 + return false; 40 + while( isDots(fd.cFileName) ) 41 + if( !::FindNextFile( h, &fd ) ) 42 + { 43 + close(); 44 + return false; 45 + } 46 + return true; 47 +} 48 + 49 +bool kiFindFile::next( WIN32_FIND_DATA* pfd ) 50 +{ 51 + if( h==INVALID_HANDLE_VALUE ) 52 + return false; 53 + if( first ) 54 + { 55 + first = false; 56 + ki_memcpy( pfd, &fd, sizeof(fd) ); 57 + return true; 58 + } 59 + if( !::FindNextFile( h, pfd ) ) 60 + return false; 61 + while( isDots(fd.cFileName) ) 62 + if( !::FindNextFile( h, pfd ) ) 63 + return false; 64 + return true; 65 +} 66 + 67 +#undef isDots
Added kilib/kl_find.h version [64a6dbf816844dba]
1 +//--- K.I.LIB --- 2 +// kl_find.h : FindFirstFile wrapper 3 + 4 +#ifndef AFX_KIFINDFILE_H__86462791_815C_4F44_9F16_802B54B411BA__INCLUDED_ 5 +#define AFX_KIFINDFILE_H__86462791_815C_4F44_9F16_802B54B411BA__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// �t�@�C������ 9 + 10 +class kiFindFile 11 +{ 12 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 13 + 14 + static bool findfirst( const char* wild, WIN32_FIND_DATA* pfd ); 15 + bool begin( const char* wild ); 16 + bool next( WIN32_FIND_DATA* pfd ); 17 + 18 +public: //-- �������� ----------------------------------- 19 + 20 + kiFindFile() 21 + { h = INVALID_HANDLE_VALUE; } 22 + virtual ~kiFindFile() 23 + { close(); } 24 + void close(); 25 + 26 +private: 27 + HANDLE h; 28 + bool first; 29 + WIN32_FIND_DATA fd; 30 +}; 31 + 32 +#endif
Added kilib/kl_misc.h version [497c03c8bc7cf457]
1 +//--- K.I.LIB --- 2 +// kl_misc.h : common-classes for K.I.LIB 3 + 4 +#ifndef AFX_KILIBBASE_H__89998F34_A9FE_4A27_A159_671F85AA9383__INCLUDED_ 5 +#define AFX_KILIBBASE_H__89998F34_A9FE_4A27_A159_671F85AA9383__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// �g�p����O���������ƂȂ��}�N�������Ă��� 9 +// �NjL�F���ł���Ȃ��Ƃ�����c�H�@���@�̂̎���(^^; 10 + 11 +#define ki_strlen(p) ::lstrlen(p) 12 +#define ki_strcpy(p,s) ::lstrcpy(p,s) 13 +#define ki_strcat(p,s) ::lstrcat(p,s) 14 +#define ki_strcmp(p,s) ::lstrcmp(p,s) 15 +#define ki_strcmpi(p,s) ::lstrcmpi(p,s) 16 +#define ki_memzero(p,l) ::ZeroMemory(p,l) 17 +#define ki_memcpy(p,s,l) ::CopyMemory(p,s,l) 18 +#define ki_memmov(p,s,l) ::MoveMemory(p,s,l) 19 +#define ki_memset(p,c,l) ::FillMemory(p,l,c) 20 +inline bool ki_memcmp( const char* x, const char* y, int l ) 21 +{ 22 + while( *x++==*y++ && --l ); 23 + return l==0; 24 +} 25 + 26 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 27 +// kiArray : �z��̂悤�ȃL���[�̂悤�ȑ㕨 28 + 29 +template <class T> class kiArray 30 +{ 31 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 32 + 33 + // �����T�C�Y( 10�`255 )�ŏ����� 34 + kiArray( unsigned char start_size=10 ) 35 + { 36 + m_pArray = new T[ m_ALen=start_size ]; 37 + m_Len = 0; 38 + } 39 + 40 + // �z�����ɂ��� 41 + void empty() 42 + { 43 + m_Len = 0; 44 + } 45 + 46 + // �v�f�����擾 47 + unsigned long len() const 48 + { 49 + return m_Len; 50 + } 51 + 52 + // �����Ɉ�lj� 53 + void add( const T& obj ) 54 + { 55 + if( m_Len>=m_ALen ) 56 + { 57 + T* p = new T[ m_ALen<<=1 ]; 58 + for( unsigned long i=0; i!=m_Len; i++ ) 59 + p[i] = m_pArray[i]; 60 + delete [] m_pArray; 61 + m_pArray = p; 62 + } 63 + m_pArray[ m_Len++ ] = obj; 64 + } 65 + 66 + // �v�f�ɃA�N�Z�X 67 + T& operator []( unsigned long i ) 68 + { 69 + return m_pArray[i]; 70 + } 71 + const T& operator []( unsigned long i ) const 72 + { 73 + return m_pArray[i]; 74 + } 75 + 76 + // �z��R�s�[ 77 + kiArray<T>& operator = ( const kiArray<T>& o ) 78 + { 79 + if( &o != this ) 80 + { 81 + empty(); 82 + for( unsigned int i=0; i!=o.len(); i++ ) 83 + add( o[i] ); 84 + } 85 + return *this; 86 + } 87 + 88 + //-- ������Ɗ댯�ȃ��\�b�h�Q 89 + void alloc( unsigned long x ) 90 + { 91 + if( x > m_ALen ) 92 + { 93 + T* p = new T[ m_ALen=(m_ALen<<1)>x?(m_ALen<<1):x ]; 94 + for( unsigned long i=0; i!=m_Len; i++ ) 95 + p[i] = m_pArray[i]; 96 + delete [] m_pArray; 97 + m_pArray = p; 98 + } 99 + } 100 + void forcelen( unsigned long x ) 101 + { 102 + alloc( x ); 103 + m_Len = x; 104 + } 105 + 106 +private: //-- �������� ----------------------------------- 107 + 108 + T* m_pArray; 109 + unsigned long m_Len, m_ALen; 110 + 111 +public: 112 + 113 + virtual ~kiArray() 114 + { 115 + delete [] m_pArray; 116 + } 117 +}; 118 + 119 +#define BoolArray kiArray<bool> 120 +#define CharArray kiArray<char*> 121 +#define cCharArray kiArray<const char*> 122 +#define StrArray kiArray<kiStr> 123 + 124 +#endif
Added kilib/kl_reg.cpp version [7e2055bca5da9935]
1 +//--- K.I.LIB --- 2 +// kl_reg.h : registry and ini-file operation 3 + 4 +#include "stdafx.h" 5 +#include "kilib.h" 6 + 7 + 8 +//---------------------------- open�n ----------------------------// 9 + 10 + 11 +bool kiRegKey::open( HKEY parent, LPCTSTR keyname, REGSAM access ) 12 +{ 13 + return (ERROR_SUCCESS == RegOpenKeyEx( parent, 14 + keyname, 0, access, &m_hKey )); 15 +} 16 + 17 +bool kiRegKey::create( HKEY parent, LPCTSTR keyname, REGSAM access ) 18 +{ 19 + DWORD x; 20 + return (ERROR_SUCCESS == RegCreateKeyEx( parent, 21 + keyname, 0, REG_NONE, REG_OPTION_NON_VOLATILE, access, NULL, &m_hKey, &x )); 22 +} 23 + 24 + 25 +//------------------------- query/set�n ----------------------------// 26 + 27 + 28 +bool kiRegKey::get( LPCTSTR valname, DWORD* val ) 29 +{ 30 + DWORD x=4; 31 + return (ERROR_SUCCESS == RegQueryValueEx( m_hKey, 32 + valname, NULL, NULL, (BYTE*)val, &x )); 33 +} 34 + 35 +bool kiRegKey::get( LPCTSTR valname, BYTE* val, DWORD siz ) 36 +{ 37 + return (ERROR_SUCCESS == RegQueryValueEx( m_hKey, 38 + valname, NULL, NULL, val, &siz )); 39 +} 40 + 41 +bool kiRegKey::get( LPCTSTR valname, kiStr* val ) 42 +{ 43 + static char dat[2048]; 44 + DWORD x = 2048; 45 + if( ERROR_SUCCESS == RegQueryValueEx( m_hKey, 46 + valname, NULL, NULL, (BYTE*)dat, &x )) 47 + { 48 + *val = dat; 49 + return true; 50 + } 51 + return false; 52 +} 53 + 54 +bool kiRegKey::set( LPCTSTR valname, DWORD val ) 55 +{ 56 + return (ERROR_SUCCESS == RegSetValueEx( m_hKey, 57 + valname, 0, REG_DWORD, (BYTE*)&val, 4 )); 58 +} 59 + 60 +bool kiRegKey::set( LPCTSTR valname, BYTE* val, DWORD siz ) 61 +{ 62 + return (ERROR_SUCCESS == RegSetValueEx( m_hKey, 63 + valname, 0, REG_BINARY, (BYTE*)val, siz )); 64 +} 65 + 66 +bool kiRegKey::set( LPCTSTR valname, LPCTSTR val ) 67 +{ 68 + return (ERROR_SUCCESS == RegSetValueEx( m_hKey, 69 + valname, 0, REG_SZ, (BYTE*)val, ki_strlen(val)+1 )); 70 +} 71 + 72 + 73 +//--------------------------- delete�n ----------------------------// 74 + 75 + 76 +bool kiRegKey::del( LPCTSTR valname ) 77 +{ 78 + return (ERROR_SUCCESS == RegDeleteValue( m_hKey, valname )); 79 +} 80 + 81 +bool kiRegKey::delSubKey( LPCTSTR keyname ) 82 +{ 83 + if( app()->osver().dwPlatformId == VER_PLATFORM_WIN32_NT ) 84 + return delSubKeyRecursive( m_hKey, keyname ); 85 + else 86 + return (ERROR_SUCCESS == RegDeleteKey( m_hKey, keyname )); 87 +} 88 + 89 +bool kiRegKey::delSubKeyRecursive( HKEY k, LPCTSTR n ) 90 +{ 91 + HKEY k2; 92 + if( ERROR_SUCCESS!=RegOpenKeyEx( k,n,0,KEY_READ,&k2 ) ) 93 + return false; 94 + 95 + bool ans = true; 96 + static char buf[2048]; 97 + DWORD bs = sizeof(buf); 98 + 99 + for( int i=0; 100 + ERROR_SUCCESS==RegEnumKeyEx( k2,i,buf,&bs,NULL,NULL,NULL,NULL ); 101 + i++ ) 102 + { 103 + if( !delSubKeyRecursive( k2,buf ) ) 104 + ans = false; 105 + bs = sizeof(buf); 106 + } 107 + 108 + RegCloseKey( k2 ); 109 + RegDeleteKey( k,n ); 110 + return ans; 111 +} 112 + 113 +//--------------------------- ini:������ ----------------------------// 114 + 115 + 116 +void kiIniFile::setFileName( const char* ini, bool exepath ) 117 +{ 118 + if( !exepath ) 119 + m_FileName = ""; 120 + else 121 + { 122 + m_FileName.beSpecialPath( kiPath::Exe ); 123 + m_FileName.beBackSlash( true ); 124 + } 125 + m_FileName += ini; 126 +} 127 + 128 + 129 +//--------------------------- ini:read�n ----------------------------// 130 + 131 + 132 +int kiIniFile::getInt( const char* key, int defval ) 133 +{ 134 + return ::GetPrivateProfileInt( m_CurSec, key, defval, m_FileName ); 135 +} 136 + 137 +bool kiIniFile::getBool( const char* key, bool defval ) 138 +{ 139 + return (0 != ::GetPrivateProfileInt( m_CurSec, 140 + key, defval?1:0, m_FileName ) ); 141 +} 142 + 143 +const char* kiIniFile::getStr( const char* key, const char* defval ) 144 +{ 145 + ::GetPrivateProfileString( m_CurSec, key, defval, 146 + m_StrBuf, sizeof(m_StrBuf), m_FileName ); 147 + return m_StrBuf; 148 +} 149 + 150 + 151 +//--------------------------- ini:write�n ----------------------------// 152 + 153 + 154 +bool kiIniFile::putStr( const char* key, const char* val ) 155 +{ 156 + return (FALSE != ::WritePrivateProfileString( 157 + m_CurSec, key, val, m_FileName ) ); 158 +} 159 + 160 +bool kiIniFile::putInt( const char* key, int val ) 161 +{ 162 + ::wsprintf( m_StrBuf, "%d", val ); 163 + return putStr( key, m_StrBuf ); 164 +} 165 + 166 +bool kiIniFile::putBool( const char* key, bool val ) 167 +{ 168 + return putStr( key, val ? "1" : "0" ); 169 +}
Added kilib/kl_reg.h version [b513b5f4430bdfd8]
1 +//--- K.I.LIB --- 2 +// kl_reg.h : registry and ini-file operation 3 + 4 +#ifndef AFX_KIREGKEY_H__4FD5E1B3_B8FE_45B3_B19E_3D30407C94BA__INCLUDED_ 5 +#define AFX_KIREGKEY_H__4FD5E1B3_B8FE_45B3_B19E_3D30407C94BA__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// ���W�X�g�����쁕ini���� 9 + 10 +class kiRegKey 11 +{ 12 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 13 + 14 + // �J�������� 15 + bool open( HKEY parent, LPCTSTR keyname, REGSAM access = KEY_ALL_ACCESS ); 16 + bool create( HKEY parent, LPCTSTR keyname, REGSAM access = KEY_ALL_ACCESS ); 17 + void close() 18 + { 19 + if( m_hKey ) 20 + RegCloseKey( m_hKey ); 21 + } 22 + 23 + // �T�u�L�[�����݂����ۂ� 24 + bool exist( LPCTSTR keyname ) 25 + { 26 + HKEY k; 27 + if( ERROR_SUCCESS==RegOpenKeyEx( m_hKey,keyname,0,KEY_READ,&k ) ) 28 + { 29 + RegCloseKey( k ); 30 + return true; 31 + } 32 + return false; 33 + } 34 + // HKEY�փL���X�g 35 + operator HKEY() const 36 + { 37 + return m_hKey; 38 + } 39 + 40 + // �l�� 41 + bool get( LPCTSTR valname, DWORD* val ); 42 + bool get( LPCTSTR valname, BYTE* val, DWORD siz ); 43 + bool get( LPCTSTR valname, kiStr* val ); 44 + 45 + // �l��ݒ� 46 + bool set( LPCTSTR valname, DWORD val ); 47 + bool set( LPCTSTR valname, BYTE* val, DWORD siz ); 48 + bool set( LPCTSTR valname, LPCTSTR val ); 49 + 50 + // �폜 51 + bool del( LPCTSTR valname ); 52 + bool delSubKey( LPCTSTR keyname ); 53 + 54 +public: //-- �������� ----------------------------------- 55 + 56 + kiRegKey() 57 + { 58 + m_hKey = NULL; 59 + } 60 + 61 + virtual ~kiRegKey() 62 + { 63 + close(); 64 + } 65 + 66 +private: 67 + 68 + HKEY m_hKey; 69 + static bool delSubKeyRecursive( HKEY k, LPCTSTR n ); 70 +}; 71 + 72 +class kiIniFile 73 +{ 74 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 75 + 76 + // ini�t�@�C������ݒ� 77 + void setFileName( const char* ini, bool exepath=true ); 78 + void setSection( const char* section ) 79 + { m_CurSec = section; } 80 + 81 + // �ǂݍ��� 82 + // �� ���ӁIgetStr�̕Ԓl�͓����o�b�t�@�ȈׁA 83 + // ���@�@�@ �Ăяo������ȊO�͓��e��ۏ��Ȃ��B 84 + int getInt( const char* key, int defval ); 85 + bool getBool( const char* key, bool defval ); 86 + const char* getStr( const char* key, const char* defval ); 87 + 88 + // �������� 89 + bool putStr( const char* key, const char* val ); 90 + bool putInt( const char* key, int val ); 91 + bool putBool( const char* key, bool val ); 92 + 93 +private: //-- �������� ----------------------------------- 94 + 95 + kiPath m_FileName; 96 + kiStr m_CurSec; 97 + char m_StrBuf[256]; 98 +}; 99 + 100 +#endif
Added kilib/kl_rythp.cpp version [3294a27309b29b65]
1 +//--- K.I.LIB --- 2 +// kl_rythp.cpp : interpretor for simple script langauage 'Rythp' 3 + 4 +#include "stdafx.h" 5 +#include "kilibext.h" 6 + 7 +//-------------------- Variant �^�ϐ� --------------------------// 8 + 9 +int kiVar::getInt() 10 +{ 11 + int n=0; 12 + bool minus = (*m_pBuf=='-'); 13 + for( char* p = minus ? m_pBuf+1 : m_pBuf; *p; p=next(p) ) 14 + { 15 + if( '0'>*p || *p>'9' ) 16 + return 0; 17 + n = (10*n) + (*p-'0'); 18 + } 19 + return minus ? -n : n; 20 +} 21 + 22 +kiVar& kiVar::quote() 23 +{ 24 + if( m_pBuf[0]=='\"' ) 25 + return *this; 26 + for( const char* p=m_pBuf; *p; p=next(p) ) 27 + if( *p==' ' ) 28 + break; 29 + if( !(*p) ) 30 + return *this; 31 + 32 + int ln=len()+1; 33 + if( m_ALen<ln+2 ) 34 + { 35 + char* tmp = new char[m_ALen=ln+2]; 36 + ki_memcpy( tmp+1,m_pBuf,ln ); 37 + delete [] m_pBuf; 38 + m_pBuf = tmp; 39 + } 40 + else 41 + ki_memmov( m_pBuf+1,m_pBuf,ln ); 42 + m_pBuf[0]=m_pBuf[ln]='\"', m_pBuf[ln+1]='\0'; 43 + return *this; 44 +} 45 + 46 +kiVar& kiVar::unquote() 47 +{ 48 + if( *m_pBuf!='\"' ) 49 + return *this; 50 + for( const char *last=m_pBuf+1,*p=m_pBuf+1; *p; p=next(p) ) 51 + last=p; 52 + if( *last!='\"' ) 53 + return *this; 54 + 55 + ki_memmov( m_pBuf,m_pBuf+1,(last-m_pBuf)-1 ); 56 + m_pBuf[(last-m_pBuf)-1]='\0'; 57 + return *this; 58 +} 59 + 60 +//---------------------- �������E�j�� ----------------------------// 61 + 62 +kiRythpVM::kiRythpVM() 63 +{ 64 + ele['%'] = "%"; 65 + ele['('] = "("; 66 + ele[')'] = ")"; 67 + ele['"'] = "\""; 68 + ele['/'] = "\n"; 69 +} 70 + 71 +//---------------------- �p�����[�^���ɕ��� ----------------------// 72 + 73 +char* kiRythpVM::split_tonext( char* p ) 74 +{ 75 + while( *p!='\0' && ( *p=='\t' || *p==' ' || *p=='\r' || *p=='\n' ) ) 76 + p++; 77 + return (*p=='\0' ? NULL : p); 78 +} 79 + 80 +char* kiRythpVM::split_toend( char* p ) 81 +{ 82 + int kkc=0, dqc=0; 83 + while( *p!='\0' && kkc>=0 ) 84 + { 85 + if( *p=='(' && !(dqc&1) ) 86 + kkc++; 87 + else if( *p==')' && !(dqc&1) ) 88 + kkc--; 89 + else if( *p=='\"' ) 90 + dqc++; 91 + else if( *p=='%' ) 92 + p++; 93 + else if( (*p=='\t' || *p==' ' || *p=='\r' || *p=='\n') && kkc==0 && !(dqc&1) ) 94 + return p; 95 + p++; 96 + } 97 + return (kkc==0 && !(dqc&1)) ? p : NULL; 98 +} 99 + 100 +bool kiRythpVM::split( char* buf, kiArray<char*>& argv, kiArray<bool>& argb, int& argc ) 101 +{ 102 + argv.empty(), argb.empty(), argc=0; 103 + 104 + for( char* p=buf; p=split_tonext(p); p++,argc++ ) 105 + { 106 + argv.add( p ); 107 + argb.add( *p=='(' ); 108 + 109 + if( !(p=split_toend(p)) ) 110 + return false; 111 + 112 + if( argv[argc][0]=='(' || argv[argc][0]=='"' ) 113 + argv[argc]++, *(p-1)='\0'; 114 + if( *p=='\0' ) 115 + { 116 + argc++; 117 + break; 118 + } 119 + *p='\0'; 120 + } 121 + return true; 122 +} 123 + 124 +//------------------------- ���s -------------------------// 125 + 126 +void kiRythpVM::eval( char* str, kiVar* ans ) 127 +{ 128 + // �Ԓl���N���A���Ă��� 129 + kiVar tmp,*aaa=&tmp; 130 + if(ans) 131 + *ans="",aaa=ans; 132 + 133 + // "function param1 param2 ..." �`���̕�������p�����[�^�ɕ��� 134 + kiArray<char*> av; 135 + kiArray<bool> ab; 136 + int ac; 137 + if( split( str,av,ab,ac ) && ac ) 138 + { 139 + // function���擾 140 + kiVar name; 141 + getarg( av[0],ab[0],&name ); 142 + 143 + // function���s�I 144 + exec_function( name, av, ab, ac, aaa ); 145 + } 146 +} 147 + 148 +void kiRythpVM::getarg( char* a, bool b, kiVar* arg ) 149 +{ 150 + kiVar t; 151 + const char* p; 152 + 153 + // (...) �Ȃ� eval ����B 154 + if( b ) 155 + { 156 + eval( a, &t ), *arg = t; 157 + } 158 + else 159 + { 160 + p = a; 161 + 162 + // �ϐ��u������ 163 + *arg=""; 164 + for( ; *p; *p && p++ ) 165 + if( *p!='%' ) 166 + { 167 + *arg += *p; 168 + } 169 + else 170 + { 171 + p++, *arg+=ele[(*p)&0xff]; 172 + } 173 + } 174 +} 175 + 176 +//------------------------- Minimum-Rythp�� -------------------------// 177 + 178 +namespace { 179 + static bool isIntStr( const char* str ) { 180 + for(;*str;++str) 181 + if( !('0'<=*str && *str<='9' || *str==',' || *str=='-') ) 182 + return false; 183 + return true; 184 + } 185 +} 186 + 187 +bool kiRythpVM::exec_function( const kiVar& name, 188 + const kiArray<char*>& a, const kiArray<bool>& b,int c, kiVar* r ) 189 +{ 190 +// Minimum-Rythp �ŗ��p�ł��� function �͈ȉ��̒ʂ�B 191 +// exec, while, if, let, +, -, *, /, =, !, between, mod, <, > 192 + 193 + kiVar t; 194 + int i,A,B,C; 195 + 196 +//----- ---- --- -- - - - 197 +//-- (exec ���s�� ���s�� ...) returns last-result 198 +//----- ---- --- -- - - - 199 + if( name=="exec" ) 200 + { 201 + for( i=1; i<c; i++ ) 202 + getarg( a[i],b[i],r ); 203 + } 204 +//----- ---- --- -- - - - 205 +//-- (while ���� �J��Ԃ����e) returns last-result 206 +//----- ---- --- -- - - - 207 + else if( name=="while" ) 208 + { 209 + if( c>=3 ) 210 + { 211 + // (���ꏈ��)������ĂԃR�[�h�Ȃ̂ŃR�s��Ȃ���ʖځB 212 + int L1=ki_strlen(a[1]), L2=ki_strlen(a[2]); 213 + char* tmp = new char[ 1 + (L1>L2 ? L1 : L2) ]; 214 + while( getarg( ki_strcpy(tmp,a[1]), b[1], &t ), t.getInt()!=0 ) 215 + getarg( ki_strcpy(tmp,a[2]), b[2], r ); 216 + delete [] tmp; 217 + } 218 + } 219 +//----- ---- --- -- - - - 220 +//-- (if ���� �^�Ȃ� [�U�Ȃ�]) returns executed-result 221 +//----- ---- --- -- - - - 222 + else if( name=="if" ) 223 + { 224 + if( c>=3 ) 225 + { 226 + if( getarg( a[1],b[1],&t ), t.getInt()!=0 ) 227 + getarg( a[2],b[2],r ); 228 + else if( c>=4 ) 229 + getarg( a[3],b[3],r ); 230 + } 231 + } 232 +//----- ---- --- -- - - - 233 +//-- (let �ϐ��� �l �l ...) returns new-value 234 +//----- ---- --- -- - - - 235 + else if( name=="let" ) 236 + { 237 + if( c>=2 ) 238 + { 239 + *r = ""; 240 + for( i=2; i<c; i++ ) 241 + getarg( a[i],b[i],&t ), *r+=t; 242 + ele[a[1][0]&0xff] = *r; 243 + } 244 + } 245 +//----- ---- --- -- - - - 246 +//-- (= �lA �lB) returns A==B ? 247 +//----- ---- --- -- - - - 248 + else if( name=="=" ) 249 + { 250 + if( c>=3 ) 251 + { 252 + kiVar t2; 253 + getarg(a[1],b[1],&t), A=t.getInt(); 254 + getarg(a[2],b[2],&t2), B=t2.getInt(); 255 + if( isIntStr(t) && isIntStr(t2) ) 256 + *r = A==B ? "1" : "0"; 257 + else 258 + *r = t==t2 ? "1" : "0"; 259 + } 260 + } 261 +//----- ---- --- -- - - - 262 +//-- (between �lA �lB �lC) returns A <= B <= C ? 263 +//----- ---- --- -- - - - 264 + else if( name=="between" ) 265 + { 266 + if( c>=4 ) 267 + { 268 + getarg(a[1],b[1],&t), A=t.getInt(); 269 + getarg(a[2],b[2],&t), B=t.getInt(); 270 + getarg(a[3],b[3],&t), C=t.getInt(); 271 + *r = (A<=B && B<=C) ? "1" : "0"; 272 + } 273 + } 274 +//----- ---- --- -- - - - 275 +//-- (< �lA �lB) returns A < B ? 276 +//----- ---- --- -- - - - 277 + else if( name=="<" ) 278 + { 279 + if( c>=3 ) 280 + { 281 + getarg(a[1],b[1],&t), A=t.getInt(); 282 + getarg(a[2],b[2],&t), B=t.getInt(); 283 + *r = (A<B) ? "1" : "0"; 284 + } 285 + } 286 +//----- ---- --- -- - - - 287 +//-- (> �lA �lB) returns A > B ? 288 +//----- ---- --- -- - - - 289 + else if( name==">" ) 290 + { 291 + if( c>=3 ) 292 + { 293 + getarg(a[1],b[1],&t), A=t.getInt(); 294 + getarg(a[2],b[2],&t), B=t.getInt(); 295 + *r = (A>B) ? "1" : "0"; 296 + } 297 + } 298 +//----- ---- --- -- - - - 299 +//-- (! �lA [�lB]) returns A!=B ? or !A 300 +//----- ---- --- -- - - - 301 + else if( name=="!" ) 302 + { 303 + if( c>=2 ) 304 + { 305 + getarg(a[1],b[1],&t), A=t.getInt(); 306 + if( c==2 ) 307 + *r = A==0 ? "1" : "0"; 308 + else 309 + { 310 + kiVar t2; 311 + getarg(a[1],b[1],&t), A=t.getInt(); 312 + getarg(a[2],b[2],&t2), B=t2.getInt(); 313 + if( isIntStr(t) && isIntStr(t2) ) 314 + *r = A!=B ? "1" : "0"; 315 + else 316 + *r = t!=t2 ? "1" : "0"; 317 + } 318 + } 319 + } 320 +//----- ---- --- -- - - - 321 +//-- (+ �lA �lB) returns A+B 322 +//----- ---- --- -- - - - 323 + else if( name=="+" ) 324 + { 325 + int A = 0; 326 + for( i=1; i<c; i++ ) 327 + A += (getarg(a[i],b[i],&t), t.getInt()); 328 + r->setInt(A); 329 + } 330 +//----- ---- --- -- - - - 331 +//-- (- �lA �lB) returns A-B 332 +//----- ---- --- -- - - - 333 + else if( name=="-" ) 334 + { 335 + if( c >= 2 ) 336 + { 337 + getarg(a[1],b[1],&t); 338 + int A = t.getInt(); 339 + if( c==2 ) 340 + A = -A; 341 + else 342 + for( i=2; i<c; ++i ) 343 + A -= (getarg(a[i],b[i],&t), t.getInt()); 344 + r->setInt(A); 345 + } 346 + else 347 + r->setInt(0); 348 + } 349 +//----- ---- --- -- - - - 350 +//-- (* �lA �lB) returns A*B 351 +//----- ---- --- -- - - - 352 + else if( name=="*" ) 353 + { 354 + int A = 1; 355 + for( i=1; i<c; i++ ) 356 + A *= (getarg(a[i],b[i],&t), t.getInt()); 357 + r->setInt(A); 358 + } 359 +//----- ---- --- -- - - - 360 +//-- (/ �lA �lB) returns A/B 361 +//----- ---- --- -- - - - 362 + else if( name=="/" ) 363 + { 364 + if( c>=3 ) 365 + { 366 + getarg(a[1],b[1],&t), A=t.getInt(); 367 + getarg(a[2],b[2],&t), B=t.getInt(); 368 + r->setInt( B ? A/B : A ); 369 + } 370 + } 371 +//----- ---- --- -- - - - 372 +//-- (mod �lA �lB) returns A%B 373 +//----- ---- --- -- - - - 374 + else if( name=="mod" ) 375 + { 376 + if( c>=3 ) 377 + { 378 + getarg(a[1],b[1],&t), A=t.getInt(); 379 + getarg(a[2],b[2],&t), B=t.getInt(); 380 + r->setInt( B ? A%B : 0 ); 381 + } 382 + } 383 +//----- ---- --- -- - - - 384 +//-- (slash �lA) returns A.replaceAll("\\", "/") 385 +//----- ---- --- -- - - - 386 + else if( name=="slash" ) 387 + { 388 + if( c>=2 ) 389 + { 390 + getarg(a[1],b[1],&t); 391 + *r = (const char*)t; 392 + r->replaceToSlash(); 393 + } 394 + } 395 + else 396 + return false; 397 + return true; 398 +} 399 +
Added kilib/kl_rythp.h version [3d5e049ef5397815]
1 +//--- K.I.LIB --- 2 +// kl_rythp.h : interpretor for simple script langauage 'Rythp' 3 + 4 +#ifndef AFX_KIRYTHPVM_H__4F3C28A9_7EFE_4605_A149_2C0B9A9236E5__INCLUDED_ 5 +#define AFX_KIRYTHPVM_H__4F3C28A9_7EFE_4605_A149_2C0B9A9236E5__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// kiVar : Rythp�p��Variant�ϐ��^�B�قƂ�ǂ�����kiStr�B 9 + 10 +class kiVar : public kiStr 11 +{ 12 +public: 13 + kiVar() : kiStr(20) {} 14 + explicit kiVar( const char* s ) : kiStr( s, 20 ){} 15 + explicit kiVar( const kiStr& s ) : kiStr( s, 20 ){} 16 + explicit kiVar( const kiVar& s ) : kiStr( s, 20 ){} 17 + void operator = ( const char* s ){ kiStr::operator =(s); } 18 + 19 + int getInt(); 20 + kiVar& quote(); 21 + kiVar& unquote(); 22 +}; 23 + 24 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 25 +// kiRythpVM : �ŏ���Rythp�B���p�ɂ́A�h�����ēƎ��� exec_function ���������ׂ� 26 + 27 +class kiRythpVM 28 +{ 29 +public: 30 + kiRythpVM(); 31 + virtual ~kiRythpVM() {} 32 + 33 +public: 34 + // eval 35 + void eval( char* str, kiVar* ans=NULL ); 36 + 37 +protected: 38 + // ������K����eval��ϐ��u�������������`�Ŏ擾 39 + void getarg( char* a, bool b, kiVar* arg ); 40 + 41 + // function���s�B[ bool=�����������H�A name=function���A a,b,c=�����A r=�Ԓl ] 42 + virtual bool exec_function( const kiVar& name, 43 + const CharArray& a, const BoolArray& b,int c, kiVar* r ); 44 + 45 +private: 46 + // �ϐ� 47 + kiVar ele[256]; 48 + 49 + // �p�����[�^���� 50 + static char* split_tonext( char* p ); 51 + static char* split_toend( char* p ); 52 + static bool split( char* buf, CharArray& argv, BoolArray& argb, int& argc ); 53 +}; 54 + 55 +#endif
Added kilib/kl_str.cpp version [39bddacbff2819d9]
1 +//--- K.I.LIB --- 2 +// kl_str.cpp : string classes for K.I.LIB 3 + 4 +#include "stdafx.h" 5 +#include "kilib.h" 6 + 7 + 8 +//------------------------ 2byte���������p ----------------------// 9 + 10 + 11 +char kiStr::st_lb[256]; 12 + 13 +void kiStr::init() 14 +{ 15 + st_lb[0] = 0; 16 + for( int c=1; c!=256; c++ ) 17 + st_lb[c] = (::IsDBCSLeadByte(c) ? 2 : 1); 18 +} 19 + 20 + 21 +//-------------------------- �R�s�[�n�F�X ------------------------// 22 + 23 + 24 +kiStr::kiStr( int start_size ) 25 +{ 26 + (m_pBuf = new char[ m_ALen = start_size ])[0] = '\0'; 27 +} 28 + 29 +kiStr::kiStr( const char* s, int min_size ) 30 +{ 31 + int slen = ki_strlen(s) + 1; 32 + m_ALen = ( slen < min_size ) ? min_size : slen; 33 + ki_memcpy( m_pBuf=new char[m_ALen], s, slen ); 34 +} 35 + 36 +kiStr::kiStr( const kiStr& s ) 37 +{ 38 + ki_memcpy( m_pBuf=new char[m_ALen=s.m_ALen], s.m_pBuf, m_ALen=s.m_ALen ); 39 +} 40 + 41 +kiStr& kiStr::operator = ( const kiStr& s ) 42 +{ 43 + if( this != &s ) 44 + *this = (const char*)s; 45 + return *this; 46 +} 47 + 48 +kiStr& kiStr::operator = ( const char* s ) 49 +{ 50 + int slen = ki_strlen( s ) + 1; 51 + int len = this->len(); 52 + 53 + if( m_ALen < slen || s <= m_pBuf+len || m_pBuf <= s+slen ) 54 + { 55 + char* tmp = new char[ m_ALen = ( m_ALen>slen ? m_ALen : slen) ]; 56 + ki_memcpy( tmp, s, slen ); 57 + delete [] m_pBuf; 58 + m_pBuf = tmp; 59 + } 60 + else 61 + ki_memcpy( m_pBuf, s, slen ); 62 + return *this; 63 +} 64 + 65 +kiStr& kiStr::operator += ( const char* s ) 66 +{ 67 + int slen = ki_strlen( s ) + 1; 68 + int len = this->len(); 69 + 70 + if( m_ALen < len+slen+1 71 + || ( s <= m_pBuf && m_pBuf <= s+len ) 72 + || ( m_pBuf <= s && s <= m_pBuf+slen ) ) 73 + { 74 + char* tmp = new char[ m_ALen = ( m_ALen>slen+len+1 ? m_ALen : slen+len+1) ]; 75 + ki_memcpy( tmp, m_pBuf, len ); 76 + delete [] m_pBuf; 77 + m_pBuf = tmp; 78 + } 79 + 80 + ki_memcpy( m_pBuf+len, s, slen ); 81 + return *this; 82 +} 83 + 84 +kiStr& kiStr::operator += ( char c ) 85 +{ 86 + int len = this->len(); 87 + 88 + if( m_ALen < len+2 ) 89 + { 90 + char* tmp = new char[ m_ALen=len+20 ]; 91 + ki_memcpy( tmp, m_pBuf, len ); 92 + delete [] m_pBuf; 93 + m_pBuf = tmp; 94 + } 95 + 96 + m_pBuf[len]=c, m_pBuf[len+1]='\0'; 97 + return *this; 98 +} 99 + 100 +kiStr& kiStr::setInt( int n, bool cm ) 101 +{ 102 + if( n==0 ) 103 + m_pBuf[0] = '0', m_pBuf[1] = '\0'; 104 + else 105 + { 106 + bool minus = (n<0); 107 + if( minus ) 108 + n= -n; 109 + 110 + char tmp[30]; 111 + tmp[29]='\0'; 112 + int i; 113 + 114 + for( i=28; i>=0; i-- ) 115 + { 116 + if( cm && (29-i)%4==0 ) 117 + tmp[i--] = ','; 118 + tmp[i] = '0' + n%10; 119 + n /= 10; 120 + if( n==0 ) 121 + break; 122 + } 123 + 124 + if( minus ) 125 + tmp[--i] = '-'; 126 + 127 + (*this) = tmp+i; 128 + } 129 + return (*this); 130 +} 131 + 132 +//-------------------------- �������S�� ------------------------// 133 + 134 + 135 +kiStr::~kiStr() 136 +{ 137 + delete [] m_pBuf; 138 +} 139 + 140 +kiStr::operator const char*() const 141 +{ 142 + return m_pBuf; 143 +} 144 + 145 +bool kiStr::operator == ( const char* s ) const 146 +{ 147 + return 0==ki_strcmp( m_pBuf, s ); 148 +} 149 + 150 +bool kiStr::isSame( const char* s ) const 151 +{ 152 + return 0==ki_strcmpi( m_pBuf, s ); 153 +} 154 + 155 +int kiStr::len() const 156 +{ 157 + return ki_strlen( m_pBuf ); 158 +} 159 + 160 + 161 +//-------------------------- ���[�e�B���e�B�[ ------------------------// 162 + 163 + 164 +kiStr& kiStr::removeTrailWS() 165 +{ 166 + char* m=m_pBuf-1; 167 + for( char *p=m_pBuf; *p!='\0'; p=next(p) ) 168 + if( *p!=' ' && *p!='\t' && *p!='\n' ) 169 + m = p; 170 + *next(m) = '\0'; 171 + return *this; 172 +} 173 + 174 +kiStr& kiStr::loadRsrc( UINT id ) 175 +{ 176 + ::LoadString( GetModuleHandle(NULL), id, m_pBuf, m_ALen ); 177 + return *this; 178 +} 179 + 180 +void kiPath::beSpecialPath( int nPATH ) 181 +{ 182 + switch( nPATH ) 183 + { 184 + case Win: ::GetWindowsDirectory( m_pBuf, m_ALen ); break; 185 + case Sys: ::GetSystemDirectory( m_pBuf, m_ALen ); break; 186 + case Tmp: ::GetTempPath( m_ALen, m_pBuf ); break; 187 + case Cur: ::GetCurrentDirectory( m_ALen, m_pBuf ); break; 188 + case Exe_name: 189 + ::GetModuleFileName( NULL, m_pBuf, m_ALen );break; 190 + case Exe: 191 + { 192 + ::GetModuleFileName( NULL, m_pBuf, m_ALen ); 193 + 194 + char* m=NULL; 195 + for( char *p=m_pBuf; *p!='\0'; p=next(p) ) 196 + if( *p=='\\' ) 197 + m = p; 198 + if( m ) 199 + *m='\0'; 200 + break; 201 + } 202 + default: 203 + { 204 + *m_pBuf = '\0'; 205 + 206 + LPITEMIDLIST il; 207 + if( NOERROR!=::SHGetSpecialFolderLocation( NULL, nPATH, &il ) ) 208 + return; 209 + ::SHGetPathFromIDList( il, m_pBuf ); 210 + app()->shellFree( il ); 211 + } 212 + } 213 +} 214 + 215 +void kiPath::beBackSlash( bool add ) 216 +{ 217 + char* last = m_pBuf; 218 + for( char* p=m_pBuf; *p!='\0'; p=next(p) ) 219 + last=p; 220 + if( *last=='\\' || *last=='/' ) 221 + { 222 + if( !add ) 223 + *last = '\0'; 224 + } 225 + else if( add && last!=m_pBuf ) 226 + *this += '\\'; 227 +} 228 + 229 +bool kiPath::beDirOnly() 230 +{ 231 + char* lastslash = m_pBuf-1; 232 + for( char* p=m_pBuf; *p; p=next(p) ) 233 + if( *p=='\\' || *p=='/' ) 234 + lastslash = p; 235 + 236 + *(lastslash+1) = '\0'; 237 + 238 + return (lastslash+1 != m_pBuf); 239 +} 240 + 241 +bool kiPath::isInSameDir(const char* q) const 242 +{ 243 + bool diff=false; 244 + for( const char *p=m_pBuf; *p && *q; p=next(p), q=next(q) ) 245 + if( *p != *q ) 246 + diff = true; 247 + else if( diff && (*p=='\\' || *p=='/' || *q=='\\' || *q=='/') ) 248 + return false; 249 + 250 + const char* r = (*p ? p : q); 251 + if( *r ) 252 + for( ; *r; r=next(r) ) 253 + if( *r=='\\' || *r=='/' ) 254 + return false; 255 + return true; 256 +} 257 + 258 +void kiPath::beShortPath() 259 +{ 260 + ::GetShortPathName( m_pBuf, m_pBuf, m_ALen ); 261 +} 262 + 263 +void kiPath::mkdir() 264 +{ 265 + for( char *p=m_pBuf; *p; p=kiStr::next(p) ) 266 + { 267 + if( (*p!='\\' && *p!='/') || (p-m_pBuf<=4) ) 268 + continue; 269 + *p = '\0'; 270 + if( !kiSUtil::exist(m_pBuf) ) 271 + if( ::CreateDirectory( m_pBuf, NULL ) ) 272 + ::SHChangeNotify( SHCNE_MKDIR,SHCNF_PATH,(const void*)m_pBuf,NULL ); 273 + *p = '\\'; 274 + } 275 +} 276 + 277 +void kiPath::remove() 278 +{ 279 + if( !kiSUtil::exist(*this) ) 280 + return; 281 + if( !kiSUtil::isdir(*this) ) 282 + { 283 + ::DeleteFile(*this); 284 + return; 285 + } 286 + 287 + // buf == filename with no last '\\' 288 + kiPath buf(*this); 289 + buf.beBackSlash(false); 290 + 291 + kiPath tmp(buf); 292 + WIN32_FIND_DATA fd; 293 + kiFindFile find; 294 + find.begin( tmp += "\\*" ); 295 + while( find.next( &fd ) ) 296 + { 297 + tmp = buf; 298 + tmp += '\\'; 299 + tmp += fd.cFileName; 300 + tmp.remove(); 301 + } 302 + find.close(); 303 + 304 + ::RemoveDirectory( buf ); 305 +} 306 + 307 +void kiPath::getBody( kiStr& str ) const 308 +{ 309 + char *p=const_cast<char*>(name()),*x,c; 310 + for( x=(*p=='.'?p+1:p); *x; x=next(x) ) // �擪��.�͊g���q�ƌ��Ȃ��Ȃ� 311 + if( *x=='.' ) 312 + break; 313 + c=*x, *x='\0'; 314 + str=p; 315 + *x=c; 316 +} 317 + 318 +void kiPath::getBody_all( kiStr& str ) const 319 +{ 320 +// �Ō�̊g���q�������� 321 + char *p=const_cast<char*>(name()),*x=NULL, *n, c; 322 + for( n=(*p=='.'?p+1:p); *n; n=next(n) ) // �擪��.�͊g���q�ƌ��Ȃ��Ȃ� 323 + if( *n=='.' ) 324 + x = n; 325 + if( !x )x = n; 326 + 327 + c =*x; 328 + *x ='\0'; 329 + str=p; 330 + *x =c; 331 +} 332 + 333 +const char* kiPath::ext( const char* str ) 334 +{ 335 + const char *ans = NULL, *p = name(str); 336 + if( *p == '.' ) ++p; // �擪��.�͊g���q�ƌ��Ȃ��Ȃ� 337 + for( ; *p; p=next(p) ) 338 + if( *p=='.' ) 339 + ans = p; 340 + return ans ? (ans+1) : p; 341 +} 342 + 343 +const char* kiPath::ext_all( const char* str ) 344 +{ 345 + const char* p = name(str); 346 + if( *p == '.' ) ++p; // �擪��.�͊g���q�ƌ��Ȃ��Ȃ� 347 + for( ; *p; p=next(p) ) 348 + if( *p=='.' ) 349 + return (p+1); 350 + return p; 351 +} 352 + 353 +const char* kiPath::name( const char* str ) 354 +{ 355 + const char* ans = str - 1; 356 + for( const char* p=str; *p; p=next(p) ) 357 + if( *p=='\\' || *p=='/' ) 358 + ans = p; 359 + return (ans+1); 360 +} 361 + 362 +UINT kiPath::getDriveType() const 363 +{ 364 + char* p; 365 + for( p=m_pBuf; *p=='\\'; p=next(p) ); 366 + for( p=m_pBuf; *p && *p!='\\'; p=next(p) ); 367 + char c=*(++p);*p='\0'; 368 + UINT ans=::GetDriveType( m_pBuf ); 369 + *p=c; return ans; 370 +} 371 + 372 +bool kiPath::endwithyen( const char* str ) 373 +{ 374 + for( const char *p=str,*last=str; *p; p=next(p) ) 375 + last=p; 376 + return ( *last=='\\' || *last=='/' ); 377 +} 378 +
Added kilib/kl_str.h version [db7b4a9cec9be918]
1 +//--- K.I.LIB --- 2 +// kl_str.h : string classes for K.I.LIB 3 + 4 +#ifndef AFX_KISTR_H__1932CA2C_ACA6_4606_B57A_ACD0B7D1D35B__INCLUDED_ 5 +#define AFX_KISTR_H__1932CA2C_ACA6_4606_B57A_ACD0B7D1D35B__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// kiStr : �P�������� 9 + 10 +class kiStr 11 +{ 12 +friend void kilib_startUp(); 13 + 14 +private: //-- �O���[�o���ȏ����������Ȃ� --------------------- 15 + 16 + static void init(); 17 + 18 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 19 + 20 + // 2byte�����̏�����������(�����悤�ȋC��) 21 + static char* next( char* p ) 22 + { return p+st_lb[(*p)&0xff]; } 23 + static const char* next( const char* p ) 24 + { return p+st_lb[(*p)&0xff]; } 25 + static bool isLeadByte( char c ) 26 + { return st_lb[c&0xff]==2; } 27 + 28 + // ������ 29 + kiStr( int start_size = 100 ); 30 + kiStr( const char* s, int min_size = 100 ); 31 + explicit kiStr( const kiStr& s ); 32 + 33 + // ���Z�q 34 + kiStr& operator = ( const kiStr& ); 35 + kiStr& operator = ( const char* s ); 36 + kiStr& operator += ( const char* s ); 37 + kiStr& operator += ( char c ); 38 + bool operator == ( const char* s ) const; 39 + bool isSame( const char* s ) const; 40 + operator const char*() const; 41 + int len() const; 42 + void lower() 43 + { ::CharLower(m_pBuf); } 44 + void upper() 45 + { ::CharUpper(m_pBuf); } 46 + kiStr& setInt( int n, bool cm=false ); 47 + void replaceToSlash() { 48 + for(char* p=m_pBuf; *p; p=next(p)) 49 + if(*p=='\\') 50 + *p='/'; 51 + } 52 + 53 + // ���\�[�X���烍�[�h 54 + kiStr& loadRsrc( UINT id ); 55 + 56 + kiStr& removeTrailWS(); 57 + 58 +protected: //-- �h���N���X���� ----------------------------- 59 + 60 + char* m_pBuf; 61 + int m_ALen; 62 + 63 +private: //-- �������� ------------------------------------- 64 + 65 + static char st_lb[256]; 66 + 67 +public: 68 + 69 + virtual ~kiStr(); 70 +}; 71 + 72 +inline const kiStr operator+(const kiStr& x, const kiStr& y) 73 + { return kiStr(x) += y; } 74 +inline const kiStr operator+(const char* x, const kiStr& y) 75 + { return kiStr(x) += y; } 76 +inline const kiStr operator+(const kiStr& x, const char* y) 77 + { return kiStr(x) += y; } 78 + 79 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 80 +// kiPath : �p�X���L�̏����p���t�������� 81 + 82 +class kiPath : public kiStr 83 +{ 84 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 85 + 86 + // ������ 87 + kiPath() : kiStr( MAX_PATH ){} 88 + explicit kiPath( const char* s ) : kiStr( s, MAX_PATH ){} 89 + explicit kiPath( const kiStr& s ) : kiStr( s, MAX_PATH ){} 90 + explicit kiPath( const kiPath& s ) : kiStr( s, MAX_PATH ){} 91 + kiPath( int nPATH, bool bs = true ) : kiStr( MAX_PATH ) 92 + { 93 + beSpecialPath( nPATH ); 94 + if( nPATH != Exe_name ) 95 + beBackSlash( bs ); 96 + } 97 + 98 + // operator 99 + void operator = ( const char* s ){ kiStr::operator =(s); } 100 + 101 + // ����p�X�擾 102 + void beSpecialPath( int nPATH ); 103 + enum { Win=0x1787, Sys, Tmp, Prg, Exe, Cur, Exe_name, 104 + Snd=CSIDL_SENDTO, Dsk=CSIDL_DESKTOP, Doc=CSIDL_PERSONAL }; 105 + 106 + // �Z���p�X 107 + void beShortPath(); 108 + 109 + // �Ō�̃o�b�N�X���b�V������ 110 + void beBackSlash( bool add ); 111 + 112 + // �f�B���N�g�����̂� 113 + bool beDirOnly(); 114 + // �t�@�C����except�g���q�S�� 115 + void getBody( kiStr& str ) const; 116 + // �t�@�C����except�g���q��� 117 + void getBody_all( kiStr& str ) const; 118 + 119 + // �����K�wmkdir 120 + void mkdir(); 121 + // �����K�wrmdir 122 + void remove(); 123 + 124 + // �h���C�u�^�C�v 125 + UINT getDriveType() const; 126 + // �����f�B���N�g���ɂ��邩�ǂ��� 127 + bool isInSameDir(const char* r) const; 128 + 129 + // [static] �f�B���N�g�������܂܂Ȃ��A�t�@�C�����̂ݒ��o 130 + static const char* name( const char* str ); 131 + // [static] �Ō�̊g���q�B�������NULL 132 + static const char* ext( const char* str ); 133 + // [static] �g���q�S���B�������NULL 134 + static const char* ext_all( const char* str ); 135 + // [static] \ / �ŏI��邩�ۂ� 136 + static bool endwithyen( const char* str ); 137 + 138 + // non-static-ver 139 + const char* name() const 140 + { return name(m_pBuf); } 141 + const char* ext() const 142 + { return ext(m_pBuf); } 143 + const char* ext_all() const 144 + { return ext_all(m_pBuf); } 145 +}; 146 + 147 +#endif
Added kilib/kl_wcmn.cpp version [9208018681295ced]
1 +//--- K.I.LIB --- 2 +// kl_wcmn.h : windows-common-interface operatin 3 + 4 +#include "stdafx.h" 5 +#include "kilib.h" 6 + 7 +void kiSUtil::switchCurDirToExeDir() 8 +{ 9 + char exepath[MAX_PATH+50]; 10 + GetModuleFileName( NULL, exepath, MAX_PATH ); 11 + char* lastslash = 0; 12 + for( char* p=exepath; *p; p=CharNext(p) ) 13 + if( *p=='\\' || *p=='/' ) 14 + lastslash = p; 15 + if(lastslash) 16 + *lastslash = '\0'; 17 + SetCurrentDirectory(exepath); 18 +} 19 + 20 +static int CALLBACK __ki__ofp( HWND w, UINT m, LPARAM l, LPARAM d ) 21 +{ 22 + if( m==BFFM_INITIALIZED && d ) 23 + ::SendMessage( w, BFFM_SETSELECTION, TRUE, d ); 24 + return 0; 25 +} 26 + 27 +bool kiSUtil::getFolderDlg( char* buf, HWND par, const char* title, const char* def ) 28 +{ 29 + // ���Z�b�g 30 + BROWSEINFO bi; 31 + ki_memzero( &bi, sizeof(bi) ); 32 + bi.hwndOwner = par; 33 + bi.pszDisplayName = buf; 34 + bi.lpszTitle = title; 35 + bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_DONTGOBELOWDOMAIN; 36 + bi.lpfn = __ki__ofp; 37 + bi.lParam = (long)def; 38 + 39 + // �_�C�A���O�\�� 40 + ITEMIDLIST* id = ::SHBrowseForFolder( &bi ); 41 + if( id==NULL ) 42 + return false; 43 + ::SHGetPathFromIDList( id, buf ); 44 + app()->shellFree( id ); 45 + 46 + // �I�� 47 + return true; 48 +} 49 + 50 +void kiSUtil::getFolderDlgOfEditBox( HWND wnd, HWND par, const char* title ) 51 +{ 52 + char str[MAX_PATH]; 53 + ::SendMessage( wnd, WM_GETTEXT, MAX_PATH, (LPARAM)str ); 54 + for( char* x=str,*l=str; *x; x=kiStr::next(x) ) 55 + l=x; 56 + if( *l=='\\' || *l=='/' ) 57 + *l='\0'; 58 + if( getFolderDlg( str, par, title, str ) ) 59 + ::SendMessage( wnd, WM_SETTEXT, 0, (LPARAM)str ); 60 +} 61 + 62 +int kiSUtil::getSysIcon( const char* ext ) 63 +{ 64 + kiPath tmp( kiPath::Tmp ); 65 + tmp += "noahicontest."; 66 + tmp += ext; 67 + 68 + SHFILEINFO fi; 69 + ::SHGetFileInfo( tmp, 0, &fi, sizeof(fi), 70 + SHGFI_USEFILEATTRIBUTES | SHGFI_SYSICONINDEX ); 71 + return fi.iIcon; 72 +} 73 + 74 +void kiSUtil::msgLastError( const char* msg ) 75 +{ 76 + char* pMsg; 77 + ::FormatMessage( 78 + FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, 79 + NULL,::GetLastError(),MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&pMsg,0,NULL ); 80 + if( msg ) 81 + app()->msgBox( kiStr(msg) + "\r\n\r\n" + pMsg ); 82 + else 83 + app()->msgBox( pMsg ); 84 + ::LocalFree( pMsg ); 85 +} 86 + 87 +void kiSUtil::createShortCut( const kiPath& at, const char* name ) 88 +{ 89 + ::CoInitialize(NULL); 90 + 91 + IShellLink* psl; 92 + if( SUCCEEDED(::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,IID_IShellLink,(void**)&psl)) ) 93 + { 94 + psl->SetPath( kiPath(kiPath::Exe_name) ); 95 + psl->SetWorkingDirectory( kiPath(kiPath::Exe,false) ); 96 + 97 + IPersistFile* ppf; 98 + if( SUCCEEDED(psl->QueryInterface(IID_IPersistFile,(void**)&ppf)) ) 99 + { 100 + wchar_t wsz[MAX_PATH]; 101 + kiPath lnkfile( at ); 102 + lnkfile += name, lnkfile += ".lnk"; 103 + ::MultiByteToWideChar(CP_ACP,0,lnkfile,-1,wsz,MAX_PATH); 104 + ppf->Save(wsz,TRUE); 105 + ppf->Release(); 106 + } 107 + psl->Release(); 108 + } 109 + ::CoUninitialize(); 110 +} 111 + 112 +bool kiSUtil::exist( const char* fname ) 113 +{ 114 + return 0xffffffff != ::GetFileAttributes( fname ); 115 +} 116 + 117 +bool kiSUtil::isdir( const char* fname ) 118 +{ 119 + DWORD attr = ::GetFileAttributes( fname ); 120 + return attr!=0xffffffff && (attr&FILE_ATTRIBUTE_DIRECTORY); 121 +}
Added kilib/kl_wcmn.h version [78e05bd9298c6705]
1 +//--- K.I.LIB --- 2 +// kl_wcmn.h : windows-common-interface operatin 3 + 4 +#ifndef AFX_KIWINCOMMON_H__0686721C_CAFB_4C2C_9FE5_0F482EA6A60B__INCLUDED_ 5 +#define AFX_KIWINCOMMON_H__0686721C_CAFB_4C2C_9FE5_0F482EA6A60B__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// �V�F�����[�e�B���e�B�[�N���X 9 + 10 +class kiSUtil 11 +{ 12 +public: 13 + // �J�����g�f�B���N�g���ޔ� 14 + static void switchCurDirToExeDir(); 15 + 16 + // �u�t�H���_�̑I���v�_�C�A���O 17 + static bool getFolderDlg( char* buf, HWND par, const char* title, const char* def ); 18 + static void getFolderDlgOfEditBox( HWND wnd, HWND par, const char* title ); 19 + 20 + // �Ή�����g���q�p�A�C�R���́A�V�X�e���C���[�W���X�g�̃C���f�b�N�X��Ԃ��B 21 + static int getSysIcon( const char* ext ); 22 + 23 + // �Ō�̃G���[��\�� 24 + static void msgLastError( const char* msg = NULL ); 25 + 26 + // �����ւ̃V���[�g�J�b�g�쐬 27 + static void createShortCut( const kiPath& at, const char* name ); 28 + 29 + // �t�@�C�������݂���H 30 + static bool exist( const char* fname ); 31 + static bool isdir( const char* fname ); 32 + 33 + // �J�����g�f�B���N�g�������S�ȂƂ���Ɉڂ���LoadLibrary 34 + static HMODULE loadLibrary(LPCTSTR lpFileName) 35 + { 36 + char original_cur[MAX_PATH], sys[MAX_PATH]; 37 + ::GetCurrentDirectory(MAX_PATH, original_cur); 38 + ::GetSystemDirectory(sys, MAX_PATH); 39 + ::SetCurrentDirectory(sys); 40 + HMODULE han = ::LoadLibrary(lpFileName); 41 + ::SetCurrentDirectory(original_cur); 42 + return han; 43 + } 44 +}; 45 + 46 +#endif
Added kilib/kl_wnd.cpp version [619c2be4e23fbad6]
1 +//--- K.I.LIB --- 2 +// kl_wnd.cpp : window information manager 3 + 4 +#include "stdafx.h" 5 +#include "kilib.h" 6 + 7 + 8 +//-------- Window���쐬���� HWND �� kiWindow* ���Z�b�g���邽�߂̏��� -------// 9 + 10 + 11 +kiWindow* kiWindow::st_pCurInit = NULL; 12 + HHOOK kiWindow::st_hHook = NULL; 13 + 14 +void kiWindow::init() 15 +{ 16 + // CreateWindow �p�t�b�N�ݒu 17 + st_hHook = ::SetWindowsHookEx( WH_CBT, &CBTProc, NULL, ::GetCurrentThreadId() ); 18 +} 19 + 20 +void kiWindow::finish() 21 +{ 22 + // CreateWindow �p�t�b�N���� 23 + ::UnhookWindowsHookEx( st_hHook ); 24 +} 25 + 26 +LRESULT CALLBACK kiWindow::CBTProc( int code, WPARAM wp, LPARAM lp ) 27 +{ 28 + if( code == HCBT_CREATEWND ) 29 + { 30 + if( st_pCurInit ) 31 + { 32 + // k.i.lib �̃E�C���h�E�� CreateWindow ���ꂽ�ꍇ 33 + st_pCurInit->setHwnd( (HWND)wp ); 34 + ::SetWindowLong( (HWND)wp, GWL_USERDATA, (LONG)st_pCurInit ); 35 + st_pCurInit = NULL; 36 + } 37 + else 38 + ::SetWindowLong( (HWND)wp, GWL_USERDATA, 0 ); 39 + } 40 + 41 + return ::CallNextHookEx( st_hHook, code, wp, lp ); 42 +} 43 + 44 +void kiWindow::detachHwnd() 45 +{ 46 + ::SetWindowLong( hwnd(), GWL_USERDATA, 0 ); 47 + if( this == app()->mainwnd() ) 48 + app()->setMainWnd( NULL ); 49 + setHwnd( NULL ); 50 +} 51 + 52 + 53 +//------------ Window �ɂ܂��G�g�Z�g���ȏ��� (static) ---------------// 54 + 55 + 56 +bool kiWindow::loopbreaker = false; 57 + 58 +void kiWindow::msg() 59 +{ 60 + for( MSG msg; ::PeekMessage( &msg,NULL,0,0,PM_REMOVE ); ) 61 + ::TranslateMessage( &msg ), ::DispatchMessage( &msg ); 62 +} 63 + 64 +void kiWindow::msgLoop( msglooptype type ) 65 +{ 66 + kiWindow* wnd; 67 + MSG msg; 68 + while( !loopbreaker && 69 + type==GET ? ::GetMessage( &msg,NULL,0,0 ) 70 + : ::PeekMessage( &msg,NULL,0,0,PM_REMOVE ) ) 71 + { 72 + if( wnd = app()->mainwnd() ) 73 + { 74 + if( wnd->m_hAccel ) 75 + if( ::TranslateAccelerator( wnd->hwnd(), wnd->m_hAccel, &msg ) ) 76 + continue; 77 + if( msg.message!=WM_CHAR && wnd->isDlgMsg( &msg ) ) 78 + continue; 79 + } 80 + ::TranslateMessage( &msg ), ::DispatchMessage( &msg ); 81 + } 82 + loopbreaker = false; 83 +} 84 + 85 +void kiWindow::setFront( HWND wnd ) 86 +{ 87 + const OSVERSIONINFO& v = app()->osver(); 88 + 89 + // Win2000 �ȏ� or Win98 �ȏ� 90 + if( ( v.dwPlatformId==VER_PLATFORM_WIN32_NT && v.dwMajorVersion>=5 ) 91 + || ( v.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS && 92 + v.dwMajorVersion*100+v.dwMinorVersion>=410 ) ) 93 + { 94 + DWORD pid; 95 + DWORD th1 = ::GetWindowThreadProcessId( ::GetForegroundWindow(), &pid ); 96 + DWORD th2 = ::GetCurrentThreadId(); 97 + ::AttachThreadInput( th2, th1, TRUE ); 98 + ::SetForegroundWindow( wnd ); 99 + ::AttachThreadInput( th2, th1, FALSE ); 100 + ::BringWindowToTop( wnd ); 101 + } 102 + else // �Â�Win 103 + ::SetForegroundWindow( wnd ); 104 + 105 + // Special Thanks To kazubon !! ( the author of TClock ) 106 +} 107 + 108 +void kiWindow::setCenter( HWND wnd, HWND rel ) 109 +{ 110 + RECT rc,pr; 111 + ::GetWindowRect( wnd, &rc ); 112 + 113 + if( rel ) 114 + ::GetWindowRect( rel, &pr ); 115 + else 116 + ::SystemParametersInfo( SPI_GETWORKAREA, 0, &pr, 0 ); 117 + 118 + ::SetWindowPos( wnd, 0, 119 + pr.left + ( (pr.right-pr.left)-(rc.right-rc.left) )/2, 120 + pr.top + ( (pr.bottom-pr.top)-(rc.bottom-rc.top) )/2, 121 + 0, 0, SWP_NOSIZE|SWP_NOZORDER ); 122 +} 123 + 124 + 125 +//------------------ Window�x�[�X�N���X�Ƃ��Ă̏��� ----------------------// 126 + 127 + 128 +kiWindow::kiWindow() 129 +{ 130 + m_hWnd = NULL; 131 + m_hAccel = NULL; 132 + app()->shellInit(); 133 +} 134 + 135 +kiWindow::~kiWindow() 136 +{ 137 + if( m_hWnd && ::IsWindow( m_hWnd ) ) 138 + { 139 + ::SetWindowLong( m_hWnd, GWL_USERDATA, 0 ); 140 + ::DestroyWindow( m_hWnd ); 141 + } 142 +} 143 + 144 +void kiWindow::loadAccel( UINT id ) 145 +{ 146 + m_hAccel = ::LoadAccelerators( app()->inst(), MAKEINTRESOURCE(id) ); 147 +} 148 + 149 + 150 +//---------------- �X�^���h�A������Window�̏��� ---------------------// 151 + 152 +// �c�������c 153 + 154 +//---------------------------- Dialog -----------------------------// 155 + 156 + 157 +kiDialog::kiDialog( UINT id ) 158 +{ 159 + m_Rsrc = id; 160 +} 161 + 162 +void kiDialog::doModal( HWND parent ) 163 +{ 164 + setState( true ); 165 + preCreate( this ); 166 + 167 + ::DialogBoxParam( app()->inst(), MAKEINTRESOURCE(m_Rsrc), 168 + parent, commonDlg, (LPARAM)this ); 169 +} 170 + 171 +void kiDialog::createModeless( HWND parent ) 172 +{ 173 + setState( false ); 174 + preCreate( this ); 175 + 176 + ::CreateDialogParam( app()->inst(), MAKEINTRESOURCE(m_Rsrc), 177 + parent, commonDlg, (LPARAM)this ); 178 + 179 + ::ShowWindow( hwnd(), SW_SHOW ); 180 + ::UpdateWindow( hwnd() ); 181 +} 182 + 183 +void kiDialog::end( UINT endcode ) 184 +{ 185 + setEndCode( endcode ); 186 + 187 + if( isModal() ) 188 + ::EndDialog( hwnd(), getEndCode() ); 189 + else 190 + ::DestroyWindow( hwnd() ); 191 +} 192 + 193 +BOOL kiDialog::commonDlg( HWND dlg, UINT msg, WPARAM wp, LPARAM lp ) 194 +{ 195 + // kiDialog �C���^�[�t�F�C�X�ւ̃|�C���^���擾 196 + kiDialog* ptr = (kiDialog*)::GetWindowLong( dlg, GWL_USERDATA ); 197 + if( !ptr ) return FALSE; 198 + 199 + // WM_INITDIALOG �Ȃ� onInit ���Ă� 200 + if( msg == WM_INITDIALOG ) 201 + return ptr->onInit(); 202 + 203 + // OK / Cancel ���� 204 + else if( msg == WM_COMMAND ) 205 + { 206 + switch( LOWORD(wp) ) 207 + { 208 + case IDOK: 209 + if( ptr->onOK() ) 210 + ptr->end( IDOK ); 211 + return TRUE; 212 + case IDCANCEL: 213 + if( ptr->onCancel() ) 214 + ptr->end( IDCANCEL ); 215 + return TRUE; 216 + } 217 + } 218 + 219 + // ���ʂ̃��b�Z�[�W 220 + BOOL ans = ptr->proc( msg, wp, lp ); 221 + 222 + // WM_DESTORY �Ȃ�E�C���h�E�n���h���藣�� 223 + if( msg == WM_DESTROY ) 224 + ptr->detachHwnd(); 225 + 226 + return ans; 227 +} 228 + 229 + 230 +//------------------------ PropertySheet -------------------------// 231 + 232 + 233 +kiPropSheet* kiPropSheet::st_CurInitPS = NULL; 234 + 235 +kiPropSheet::kiPropSheet() : kiDialog( 0 ) 236 +{ 237 + ki_memzero( &m_Header, sizeof(m_Header) ); 238 + m_Header.dwSize = sizeof(m_Header); 239 + m_Header.dwFlags |=PSH_USECALLBACK | PSH_PROPSHEETPAGE; 240 + m_Header.pfnCallback = main_initProc; 241 + m_Header.hInstance = app()->inst(); 242 + m_Header.nStartPage = 0; 243 +} 244 + 245 +void kiPropSheet::begin() 246 +{ 247 + int l = m_Pages.len(); 248 + PROPSHEETPAGE* ppsp = new PROPSHEETPAGE[ l ]; 249 + ki_memzero( ppsp, sizeof(PROPSHEETPAGE)*l ); 250 + 251 + for( int i=0; i<l; i++ ) 252 + { 253 + ppsp[i].dwSize = sizeof( PROPSHEETPAGE ); 254 + ppsp[i].hInstance = app()->inst(); 255 + ppsp[i].pfnCallback = page_initProc; 256 + ppsp[i].pfnDlgProc = page_cmmnProc; 257 + ppsp[i].dwFlags = PSP_USECALLBACK | PSP_HASHELP; 258 + m_Pages[i]->setInfo( ppsp+i ); 259 + } 260 + 261 + m_Header.ppsp = ppsp; 262 + m_Header.nPages = l; 263 + 264 + st_CurInitPS = this; 265 + PropertySheet( &m_Header ); 266 + delete [] ppsp; 267 +} 268 + 269 +void kiPropSheet::doModal( HWND parent ) 270 +{ 271 + m_Header.dwFlags &= (~PSH_MODELESS); 272 + setState( true ); 273 + begin(); 274 +} 275 + 276 +void kiPropSheet::createModeless( HWND parent ) 277 +{ 278 + m_Header.dwFlags |= PSH_MODELESS; 279 + setState( false ); 280 + begin(); 281 +} 282 + 283 +void kiPropSheet::end( UINT endcode ) 284 +{ 285 + // �I���R�[�h�Z�b�g 286 + setEndCode( endcode ); 287 + 288 + // �T�u�N���X������ 289 + ::SetWindowLong( hwnd(), GWL_WNDPROC, (LONG)m_DefProc ); 290 + 291 + // �I�� 292 + if( isModal() ) // �T�u�N���X���������Ă�̂ŁA�ēx end ���Ă�邱�Ƃ͂Ȃ��͂��B 293 + ::PostMessage( hwnd(), WM_COMMAND, IDCANCEL, 0 ); 294 + else 295 + ::DestroyWindow( hwnd() ); 296 + 297 + // WM_DESTROY�������̓��� 298 + detachHwnd(); 299 +} 300 + 301 +LRESULT CALLBACK kiPropSheet::main_cmmnProc( HWND dlg, UINT msg, WPARAM wp, LPARAM lp ) 302 +{ 303 + kiPropSheet* ptr = (kiPropSheet*)::GetWindowLong( dlg, GWL_USERDATA ); 304 + if( !ptr ) 305 + return 0; 306 + 307 + // �܂��f�t�H���g�̏��� 308 + LRESULT result = ::CallWindowProc( ptr->m_DefProc, dlg, msg, wp, lp ); 309 + 310 + // �~�{�^���̓L�����Z������ 311 + if( msg==WM_SYSCOMMAND && wp==SC_CLOSE ) 312 + ::PostMessage( dlg, WM_COMMAND, IDCANCEL, 0 ); 313 + 314 + // �R�}���h���� 315 + else if( msg==WM_COMMAND ) 316 + { 317 + switch( LOWORD(wp) ) 318 + { 319 + case IDOK: 320 + if( ptr->onOK() ) 321 + ptr->end( IDOK ); 322 + return TRUE; 323 + case IDCANCEL: 324 + if( ptr->onCancel() ) 325 + ptr->end( IDCANCEL ); 326 + return TRUE; 327 + case IDAPPLY: 328 + ptr->onApply(); 329 + break; 330 + case ID_KIPS_HELP: 331 + ptr->onHelp(); 332 + break; 333 + default: 334 + ptr->onCommand( LOWORD(wp) ); 335 + break; 336 + } 337 + } 338 + 339 + // �h���b�O���h���b�v 340 + else if( msg==WM_DROPFILES ) 341 + ptr->onDrop( (HDROP)wp ); 342 + 343 + return result; 344 +} 345 + 346 +struct DLGTEMPLATEEX 347 +{ 348 + WORD dlgVer; 349 + WORD signature; 350 + DWORD helpID; 351 + DWORD exStyle; 352 + DWORD style; 353 + WORD cDlgItems; 354 + short x; 355 + short y; 356 + short cx; 357 + short cy; 358 +}; 359 + 360 +int CALLBACK kiPropSheet::main_initProc( HWND dlg, UINT msg, LPARAM lp ) 361 +{ 362 + if( msg == PSCB_PRECREATE ) 363 + { 364 + // �X�^�C�����w��DWORD�̃A�h���X���擾 365 + DWORD* pst = ( 0xffff==((DLGTEMPLATEEX*)lp)->signature ) ? 366 + &(((DLGTEMPLATEEX*)lp)->style) : &(((DLGTEMPLATE*)lp)->style); 367 + // �w���v�{�^���������čŏ����{�^����t���� 368 + (*pst) &= ~DS_CONTEXTHELP; 369 + (*pst) |= WS_MINIMIZEBOX; 370 + 371 + preCreate( st_CurInitPS ); 372 + } 373 + else if( msg == PSCB_INITIALIZED ) 374 + { 375 + // ���̂��o���Ă��܂��]�v�ȃ��j���[���폜 376 + HMENU sysm = ::GetSystemMenu( dlg, FALSE ); 377 + ::DeleteMenu( sysm, SC_SIZE, MF_BYCOMMAND ); 378 + ::DeleteMenu( sysm, SC_MAXIMIZE, MF_BYCOMMAND ); 379 + 380 + // �N�����̓E�C���h�E��K���O�ʂ� 381 + setFront( dlg ); 382 + 383 + //�T�u�N���X������ 384 + st_CurInitPS->m_DefProc = (WNDPROC)::SetWindowLong( dlg, GWL_WNDPROC, (LONG)main_cmmnProc ); 385 + st_CurInitPS->onInit(); 386 + } 387 + return 0; 388 +} 389 + 390 +BOOL kiPropSheet::page_cmmnProc( HWND dlg, UINT msg, WPARAM wp, LPARAM lp ) 391 +{ 392 + kiPropSheetPage* ptr = (kiPropSheetPage*)::GetWindowLong( dlg, GWL_USERDATA ); 393 + if( !ptr ) 394 + return FALSE; 395 + 396 + // �����ŁA���ʏ��� 397 + switch( msg ) 398 + { 399 + case WM_INITDIALOG: 400 + return ptr->onInit(); 401 + 402 + case WM_NOTIFY: 403 + switch( ((NMHDR*)lp)->code ) 404 + { 405 + case PSN_APPLY: 406 + ptr->onOK(); 407 + return TRUE; 408 + } 409 + break; 410 + 411 + case WM_COMMAND: 412 + if( lp ) 413 + switch( HIWORD(wp) ) 414 + { 415 + case BN_CLICKED: 416 + if((HWND)lp==::GetFocus()) 417 + case EN_CHANGE: 418 + case CBN_SELCHANGE: 419 + PropSheet_Changed( ptr->parent()->hwnd(), dlg ); 420 + } 421 + break; 422 + 423 + case WM_DESTROY: 424 + BOOL ans=ptr->proc( msg, wp, lp ); 425 + ptr->detachHwnd(); 426 + return ans; 427 + } 428 + 429 + return ptr->proc( msg, wp, lp ); 430 +} 431 + 432 +UINT CALLBACK kiPropSheet::page_initProc( HWND dlg, UINT msg, LPPROPSHEETPAGE ppsp ) 433 +{ 434 + if( msg == PSPCB_CREATE ) 435 + preCreate( (kiWindow*)(ppsp->lParam) ); 436 + return TRUE; 437 +} 438 + 439 +void kiPropSheetPage::setInfo( PROPSHEETPAGE* p ) 440 +{ 441 + p->pszTemplate = MAKEINTRESOURCE( getRsrcID() ); 442 + p->lParam = (LPARAM)this; 443 + 444 + if( m_hIcon ) 445 + { 446 + p->dwFlags|= PSP_USEHICON; 447 + p->hIcon = m_hIcon; 448 + } 449 +} 450 +
Added kilib/kl_wnd.h version [3ef6f1b75010ab26]
1 +//--- K.I.LIB --- 2 +// kl_wnd.h : window information manager 3 + 4 +#ifndef AFX_KIWINDOW_H__26105B94_1E36_42FA_8916_C2F7FB9EF994__INCLUDED_ 5 +#define AFX_KIWINDOW_H__26105B94_1E36_42FA_8916_C2F7FB9EF994__INCLUDED_ 6 + 7 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 8 +// kiWindow : Window�̊ȒP�ȊǗ� 9 + 10 +class kiWindow 11 +{ 12 +friend void kilib_startUp(); 13 + 14 +private: //-- �O���[�o���ȏ����������Ȃ� --------------------- 15 + 16 + static void init(); 17 + static void finish(); 18 + 19 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 20 + 21 + // �֘A�t�����Ă���HWND 22 + HWND hwnd() 23 + { 24 + return m_hWnd; 25 + } 26 + 27 + // ����Window�p�ɃA�N�Z�����[�^�����[�h 28 + void loadAccel( UINT id ); 29 + 30 + // �E�C���h�E���܂��c���Ă��邩�ǂ����`�F�b�N 31 + bool isAlive() 32 + { 33 + if( !m_hWnd ) 34 + return false; 35 + if( ::IsWindow(m_hWnd) ) 36 + return true; 37 + m_hWnd = NULL; 38 + return false; 39 + } 40 + 41 + // �e 42 + kiWindow* parent() 43 + { 44 + return kiwnd( ::GetParent( hwnd() ) ); 45 + } 46 + 47 + // ���b�Z�[�W���M 48 + int sendMsg( UINT msg, WPARAM wp=0, LPARAM lp=0 ) 49 + { 50 + return ::SendMessage( hwnd(), msg, wp, lp ); 51 + } 52 + 53 + // [static] �L���[�ɂ��郁�b�Z�[�W��S�ď��� 54 + static void msg(); 55 + 56 + // [static] ���b�Z�[�W���[�v���܂킷�B 57 + enum msglooptype {PEEK, GET}; 58 + static void msgLoop( msglooptype type = GET ); 59 + 60 + // [static] Window�������I�� front �� 61 + static void setFront( HWND wnd ); 62 + 63 + // [static] Window�𒆉��� 64 + static void setCenter( HWND wnd, HWND rel=NULL ); 65 + 66 + // [static] HWND -> kiWindow ( ��������� ) 67 + static kiWindow* kiwnd( HWND wnd ) 68 + { 69 + kiWindow* ptr = (kiWindow*)::GetWindowLong( wnd, GWL_USERDATA ); 70 + if( !ptr ) return NULL; 71 + if( ::IsBadCodePtr((FARPROC)&ptr) ) return NULL; 72 + return ptr; 73 + } 74 + 75 +protected: //-- �h���N���X���� ----------------------------- 76 + 77 + // �h���N���X�́A�쐬���O�ɃR�����ĂԂ��ƁB 78 + static void preCreate( kiWindow* wnd ) 79 + { st_pCurInit = wnd; } 80 + // �j�����O�ɃR�����ĂԂ��ƁB 81 + void detachHwnd(); 82 + // ��������GET/POST���b�Z�[�W���[�v���~ 83 + static void loopbreak() 84 + { 85 + loopbreaker = true; 86 + } 87 + 88 +private: //-- �������� ------------------------------------- 89 + 90 + // �E�C���h�E�n���h���ݒ� 91 + static LRESULT CALLBACK CBTProc( int code, WPARAM wp, LPARAM lp ); 92 + static HHOOK st_hHook; 93 + static kiWindow* st_pCurInit; 94 + void setHwnd( HWND wnd ) 95 + { 96 + m_hWnd = wnd; 97 + } 98 + 99 + // �E�C���h�E���ێ��p�ϐ� 100 + HWND m_hWnd; 101 + HACCEL m_hAccel; 102 + // �_�C�A���O���b�Z�[�W 103 + virtual bool isDlgMsg( MSG* msg ) 104 + { return false; } 105 + // GET���[�v�ꎞ�������� 106 + static bool loopbreaker; 107 + 108 +protected: 109 + kiWindow(); 110 +public: 111 + virtual ~kiWindow(); 112 +}; 113 + 114 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 115 +// kiDialog : Dialog��kiWindow�Ƃ��ĊǗ����� 116 + 117 +class kiDialog : public kiWindow 118 +{ 119 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 120 + 121 + // ���[�_���_�C�A���O�Ƃ��Ď��s 122 + virtual void doModal( HWND parent=NULL ); 123 + 124 + // ���[�h���X�_�C�A���O�Ƃ��č쐬 125 + virtual void createModeless( HWND parent=NULL ); 126 + 127 + // �I���R�[�h�擾 128 + UINT getEndCode() 129 + { 130 + return m_EndCode; 131 + } 132 + 133 + // ���[�_�����ۂ� 134 + bool isModal() 135 + { 136 + return m_bStateModal; 137 + } 138 + 139 + // �_�C�A���O�A�C�e�� 140 + int sendMsgToItem( UINT id, UINT msg, WPARAM wp=0, LPARAM lp=0 ) 141 + { 142 + return ::SendDlgItemMessage( hwnd(), id, msg, wp, lp ); 143 + } 144 + HWND item( UINT id ) 145 + { 146 + return ::GetDlgItem( hwnd(), id ); 147 + } 148 + 149 +protected: //-- �h���N���X���� ----------------------------- 150 + 151 + // ���\�[�XID�ŏ����� 152 + kiDialog( UINT id ); 153 + 154 + // ���\�[�XID�擾 155 + UINT getRsrcID() 156 + { 157 + return m_Rsrc; 158 + } 159 + 160 + // �I���R�[�h���Z�b�g 161 + void setEndCode( UINT endcode ) 162 + { 163 + m_EndCode = endcode; 164 + } 165 + 166 + // ���[�_�����ۂ��̃t���O"�̂�"��ؑ� 167 + void setState( bool modal ) 168 + { 169 + m_bStateModal = modal; 170 + } 171 + 172 + // �I���R�[�h���Z�b�g���āA�I������( IDOK ��n���Ă� onOK() �͌Ă�Ȃ����Ƃɒ��ӁI ) 173 + virtual void end( UINT endcode ); 174 + 175 + // �R�}���h�E���b�Z�[�W�������ɌĂ�� 176 + 177 + // �n�j -> onOK -> if true end(IDOK) 178 + virtual bool onOK() {return true;} 179 + // ��� -> onCancel -> if true end(IDCANCEL) 180 + virtual bool onCancel() {return true;} 181 + // WM_INITDIALOG -> onInit 182 + virtual BOOL onInit() {return FALSE;} 183 + // WM_???? -> proc 184 + virtual BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ) {return FALSE;} 185 + 186 +private: //-- �������� ------------------------------------- 187 + 188 + UINT m_EndCode; 189 + UINT m_Rsrc; 190 + bool m_bStateModal; 191 + bool isDlgMsg( MSG* msg ) 192 + { 193 + return (!!::IsDialogMessage( hwnd(), msg )); 194 + } 195 + static BOOL CALLBACK commonDlg( HWND dlg, UINT msg, WPARAM wp, LPARAM lp ); 196 +}; 197 + 198 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 199 +// kiPropSheet : PropertySheet��kiWindow�Ƃ��ĊǗ�����B 200 + 201 +#define IDAPPLY (0x3021) 202 +#define ID_KIPS_HELP (0x0009) 203 + 204 +class kiPropSheetPage : public kiDialog 205 +{ 206 +friend class kiPropSheet; 207 + 208 +protected: //-- �h���N���X���� ---------------------------- 209 + 210 + // �_�C�A���O��A�C�R����ID�ŏ����� 211 + kiPropSheetPage( UINT dlgid ) 212 + : kiDialog( dlgid ), m_hIcon( NULL ) {} 213 + void setIcon( HICON h ) 214 + { m_hIcon = h; } 215 + 216 + // �n�j/�K�p -> page::onOK -> sheet::onOK -> (if ok �I��) 217 + // virtual bool onOK() 218 + // WM_INITDIALOG 219 + // virtual BOOL onInit() 220 + // ���̑� 221 + // virtual BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ) 222 + 223 +private: //-- �������� ------------------------------------- 224 + 225 + void end( UINT endcode ) {} 226 + void setInfo( PROPSHEETPAGE* p ); 227 + HICON m_hIcon; 228 +}; 229 + 230 +class kiPropSheet : public kiDialog 231 +{ 232 +friend class kiPropSheetPage; 233 + 234 +public: //-- �O�����C���^�[�t�F�C�X -------------------------- 235 + 236 + // ���[�_���_�C�A���O�Ƃ��Ď��s 237 + void doModal( HWND parent ); 238 + 239 + // ���[�h���X�_�C�A���O�Ƃ��č쐬 240 + void createModeless( HWND parent ); 241 + 242 +protected: //-- �h���N���X���� ---------------------------- 243 + 244 + // �R���X�g���N�^�ӂ�Ł������������ׂ� 245 + PROPSHEETHEADER m_Header; 246 + kiArray<kiPropSheetPage*> m_Pages; 247 + 248 + // �I�� 249 + void end( UINT endcode ); 250 + // 251 + void sendOK2All() 252 + { 253 + for( unsigned int i=0;i!=m_Pages.len(); i++ ) 254 + if( m_Pages[i]->isAlive() ) 255 + m_Pages[i]->onOK(); 256 + } 257 + 258 + // �n�j/�K�p -> page::onOK -> sheet::onOK -> (if ok �I��) 259 + // virtual void onOK() 260 + // �L�����Z�� -> sheet::onCancel -> �I�� 261 + // virtual void onCancel() 262 + // PSCB_INITIALIZED 263 + // virtual BOOL onInit() 264 + // �K�p 265 + virtual void onApply() {} 266 + // �w���v 267 + virtual void onHelp() {} 268 + // ���̑��R�}���h 269 + virtual void onCommand( UINT id ) {} 270 + // �t�@�C���h���b�v 271 + virtual void onDrop( HDROP hdrop ) {} 272 + 273 +private: //-- �������� --------------------------------------- 274 + 275 + void begin(); 276 + bool m_bStateModal; 277 + 278 + static kiPropSheet* st_CurInitPS; 279 + WNDPROC m_DefProc; 280 + bool isDlgMsg( MSG* msg ) 281 + { return !!PropSheet_IsDialogMessage( hwnd(),msg ); } 282 + static int CALLBACK main_initProc( HWND dlg, UINT msg, LPARAM lp ); 283 + static LRESULT CALLBACK main_cmmnProc( HWND dlg, UINT msg, WPARAM wp, LPARAM lp ); 284 + static BOOL CALLBACK page_cmmnProc( HWND dlg, UINT msg, WPARAM wp, LPARAM lp ); 285 + static UINT CALLBACK page_initProc( HWND dlg, UINT msg, LPPROPSHEETPAGE ppsp ); 286 + 287 +protected: 288 + kiPropSheet(); 289 +public: 290 + ~kiPropSheet() 291 + { for( unsigned int i=0; i!=m_Pages.len(); i++ ) delete m_Pages[i]; } 292 +}; 293 + 294 +/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 295 +// kiListView : ListView�R���g���[���̊ȒP�ȃ��b�p 296 + 297 +class kiListView 298 +{ 299 +public: 300 + kiListView( kiDialog* dlg, UINT id ) 301 + { 302 + m_hWnd = ::GetDlgItem( dlg->hwnd(), id ); 303 + } 304 + 305 + void insertColumn( int y, const char* title, 306 + int width=100, int fmt=LVCFMT_LEFT ) 307 + { 308 + LVCOLUMN col; 309 + col.mask = LVCF_TEXT | LVCF_FMT | LVCF_WIDTH; 310 + col.pszText = const_cast<char*>(title); 311 + col.cx = width; 312 + col.fmt = fmt; 313 + ::SendMessage( m_hWnd, LVM_INSERTCOLUMN, y, (LPARAM)&col ); 314 + } 315 + 316 + void insertItem( int x, const char* str, LPARAM param=0, int iImage=-1 ) 317 + { 318 + LVITEM item; 319 + item.mask = LVIF_TEXT | LVIF_PARAM | (iImage!=-1 ? LVIF_IMAGE : 0); 320 + item.pszText = const_cast<char*>(str); 321 + item.iItem = x; 322 + item.iSubItem = 0; 323 + item.iImage = iImage; 324 + item.lParam = param; 325 + ::SendMessage( m_hWnd, LVM_INSERTITEM, 0, (LPARAM)&item ); 326 + } 327 + 328 + void setSubItem( int x, int y, const char* str ) 329 + { 330 + LVITEM item; 331 + item.mask = LVIF_TEXT; 332 + item.pszText = const_cast<char*>(str); 333 + item.iItem = x; 334 + item.iSubItem = y; 335 + ::SendMessage( m_hWnd, LVM_SETITEM, 0, (LPARAM)&item ); 336 + } 337 + 338 + void setImageList( HIMAGELIST Large, HIMAGELIST Small ) 339 + { 340 + ::SendMessage( m_hWnd, LVM_SETIMAGELIST, LVSIL_NORMAL, (LPARAM)Large ); 341 + ::SendMessage( m_hWnd, LVM_SETIMAGELIST, LVSIL_SMALL, (LPARAM)Small ); 342 + } 343 + 344 +private: 345 + HWND m_hWnd; 346 +}; 347 + 348 +#endif
Added manifest.xml version [3c5cdefb4ff321c0]
1 +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 2 +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 3 + <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="KILIB.Noah" type="win32" /> 4 + <description>DnD Melter/Freezer</description> 5 + <dependency><dependentAssembly> 6 + <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> 7 + </dependentAssembly></dependency> 8 +</assembly>
Added stdafx.cpp version [b9d654a8de580c4e]
1 +// stdafx.cpp : to make Pre-Compiled-Header(pch) file 2 + 3 +#include "stdafx.h"
Added stdafx.h version [0d3c7f49b3d1068c]
1 +// stdafx.h : frequently used headers 2 + 3 +#ifndef AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_ 4 +#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_ 5 + 6 +// windows general header 7 +#undef WINVER 8 +#define WINVER 0x0400 9 +#undef _WIN32_IE 10 +#define _WIN32_IE 0x0200 11 +#include <windows.h> 12 +#include <lzexpand.h> 13 + 14 +// shell header 15 +#include <shlobj.h> 16 + 17 +// k.i.lib 18 +#include "kilib/kilibext.h" 19 + 20 +#endif
Added unacedef.h version [e8ff6e20f86f7178]
1 +#ifndef __UNACEDEF_H_BY_K_INABA__ 2 +#define __UNACEDEF_H_BY_K_INABA__ 3 +#ifdef __cplusplus 4 + extern "C" { 5 +#endif 6 + 7 +//����������������������������������������������������������������������������� 8 +//����������������=====--- Part 1: different structures ---====��������������� 9 +//����������������������������������������������������������������������������� 10 + 11 + //--------------------------------------------------------------------------- 12 + // 13 + // Here in different structures used at callback functions and 14 + // ACE.DLL functions are declared. 15 + // 16 + //--------------------------------------------------------------------------- 17 + // 18 + // Contents: 19 + // Part 1.1: structures used in callback structures 20 + // Part 1.2: structures used in function structures 21 + // 22 + //--------------------------------------------------------------------------- 23 + 24 + 25 + //��������������������������������������������������������������������������� 26 + //========--- Part 1.1: structures used in callback structures ---========= 27 + //��������������������������������������������������������������������������� 28 + 29 + //����������������������� comment buffer structure ���������������������� 30 + // Used in tACEGlobalDataStruc. Application has to specify where the 31 + // comment is or should be stored. 32 + //------------------------------------------------------------------------- 33 + 34 + typedef struct sACECommentStruc 35 + { 36 + LPSTR Buf; // area where the comments are stored 37 + // by the application or by the Dll 38 + // comments must be zero-terminated 39 + ULONG BufSize; // size of this area 40 + ULONG State; // state of comment - see ACE_COMMENT 41 + // constants below 42 + } tACECommentStruc, 43 + *pACECommentStruc; 44 + 45 + 46 + //----------------------------------------------------------------------- 47 + // Defines for the tACECommentStruc.State field, which tells about 48 + // the result of the last comment extraction. 49 + //----------------------------------------------------------------------- 50 + 51 + #define ACE_COMMENT_OK 0 // comment extraction went fine 52 + 53 + #define ACE_COMMENT_SMALLBUF 1 // comment buffer too small to 54 + // store the whole comment in 55 + 56 + #define ACE_COMMENT_NONE 255 // No comment present 57 + 58 + 59 + //����������������������� global data structure ������������������������� 60 + // This structure contains information for the Dll being interesting for 61 + // nearly all functions. The Dll has to be initialized with this 62 + // structure passed to tACEInitDll(). This structure is also passed 63 + // by the callback functions. 64 + //------------------------------------------------------------------------- 65 + 66 + //--------------------------------------------------------------- 67 + // Forward declarations of callback function parameters 68 + // used in this structure. 69 + //--------------------------------------------------------------- 70 + 71 + typedef union sACEInfoCallbackProcStruc 72 + *pACEInfoCallbackProcStruc; 73 + 74 + typedef union sACEErrorCallbackProcStruc 75 + *pACEErrorCallbackProcStruc; 76 + 77 + typedef union sACERequestCallbackProcStruc 78 + *pACERequestCallbackProcStruc; 79 + 80 + typedef union sACEStateCallbackProcStruc 81 + *pACEStateCallbackProcStruc; 82 + 83 + 84 + typedef struct sACEGlobalDataStruc 85 + { 86 + //------------------------ fields for ACE and UnACE ------------------- 87 + 88 + void *Obj; // ---- reserved for application! ---- 89 + // thought to be used as a pointer to 90 + // an object; when a callback-function is 91 + // called, the object pointer can be used to 92 + // handle the callback in a specific way; 93 + // the pointer has to be initialized by 94 + // ACEInitDll() 95 + 96 + ULONG MaxArchiveTestBytes; 97 + 98 + // how many bytes of a file should be 99 + // looked upon at archive header search? 100 + 101 + ULONG MaxFileBufSize; 102 + 103 + // maximum buffer size for buffered 104 + // I/O operations 105 + 106 + tACECommentStruc // used to exchange comment data 107 + Comment; // between application and Dll 108 + // using callback functions 109 + 110 + LPSTR DecryptPassword; 111 + 112 + // the DecryptPassword specified at 113 + // ACEInitDll() is overwritten by the 114 + // DecryptPassword field of tACEAddStruc and 115 + // other function-specific structures; 116 + // but this field can be used to change the 117 + // password at callback function calls 118 + 119 + BOOL UseVBStructures; // passes structures to callback functions 120 + // much better suited for Visual Basic 121 + 122 + CHAR Reserved1[60]; // has to be filled with zeros 123 + 124 + //--------------------------- fields for ACE only --------------------- 125 + 126 + LPSTR EncryptPassword; 127 + 128 + // things stated at the description of the 129 + // DecryptPassword field apply here as well 130 + 131 + 132 + LPSTR TempDir; // directory to save temporary archive 133 + 134 + //-------- registration (ACE DLLs only, but not used at ACL) ---------- 135 + 136 + LPSTR KeyPath; // necessary for reading and writing key file 137 + 138 + LPSTR UserAV; // Dll returns the AV string (if registered) 139 + // in this field 140 + 141 + LPSTR IsGeneralKey; // DLL returns the key, if it is a general key 142 + 143 + HWND OwnerWindow; // specifies the applications window to be 144 + // parent of the registration reminder dialog 145 + 146 + //--------------------------- fields for ACE only --------------------- 147 + 148 + ULONG CompressionLevel; 149 + // contains the currently used compression 150 + // level - may be changed during compression 151 + // operation 152 + 153 + CHAR Reserved2[56]; // has to be filled with zeros 154 + 155 + 156 + //---------------------- callback functions (ACE and UnACE) ---------- 157 + 158 + INT (__stdcall *InfoCallbackProc) 159 + (pACEInfoCallbackProcStruc Info); 160 + 161 + // Informs application about details like the 162 + // creation of a temporary archive. 163 + // See ACE_CALLBACK_INFO definitions for 164 + // more information. 165 + 166 + INT (__stdcall *ErrorCallbackProc) 167 + (pACEErrorCallbackProcStruc Error); 168 + 169 + // Called to let the application know about 170 + // errors. The Code field of Error will 171 + // contain an ACE_CALLBACK_ERROR value. 172 + 173 + INT (__stdcall *RequestCallbackProc) 174 + (pACERequestCallbackProcStruc Request); 175 + 176 + // Called to let the application know about 177 + // requests for data. Code will contain an 178 + // ACE_CALLBACK_REQUEST value. 179 + 180 + INT (__stdcall *StateCallbackProc) 181 + (pACEStateCallbackProcStruc State); 182 + 183 + // Called to let the application know about 184 + // the progress of operations. 185 + 186 + 187 + //-------------------------- different new fields --------------------- 188 + CHAR Reserved3[64]; // has to be filled with zeros 189 + } tACEGlobalDataStruc, 190 + *pACEGlobalDataStruc; 191 + 192 + 193 + //����������������������� archive data structure ������������������������ 194 + // Informs the callback functions about the current archive, its volume 195 + // number, the archive-flags (see ACE_FLAG constants), the creation host 196 + // system (see ACE_HOST constants) and the AV if present in archive. 197 + // Also used at ACEReadArchiveData(). 198 + //------------------------------------------------------------------------- 199 + 200 + typedef struct sACEArchiveDataStruc 201 + { 202 + LPSTR ArchiveName; 203 + ULONG VolumeNumber, 204 + Flags, // see ACE_ARCFLAG defines below 205 + HostCreated, // see ACE_HOST defines below 206 + TimeCreated, // in MS-DOS format 207 + VersionCreated, 208 + VersionExtract; // version needed to extract files 209 + LPSTR AV; // not used in ACL 210 + CHAR Reserved[64]; // filled with zeros 211 + } tACEArchiveDataStruc, 212 + *pACEArchiveDataStruc; 213 + 214 + 215 + //----------------------------------------------------------------------- 216 + // Flag constants for tACEArchiveDataStruc.Flags field. 217 + //----------------------------------------------------------------------- 218 + 219 + #define ACE_ARCFLAG_MAINCOMMENT 2 220 + #define ACE_ARCFLAG_SFX 512 221 + #define ACE_ARCFLAG_LIMITSFXJR 1024 // is an SFX archive 222 + // that supports 256k 223 + // dictionary only 224 + #define ACE_ARCFLAG_MULTIVOLUME 2048 225 + #define ACE_ARCFLAG_AV 4096 // not used in ACL 226 + #define ACE_ARCFLAG_RECOVERYREC 8192 227 + #define ACE_ARCFLAG_LOCK 16384 228 + #define ACE_ARCFLAG_SOLID 32768 229 + 230 + 231 + //----------------------------------------------------------------------- 232 + // Host system used to create an archive. Used at 233 + // tACEArchiveDataStruc.HostCreated field. 234 + //----------------------------------------------------------------------- 235 + 236 + #define ACE_HOST_MSDOS 0 // archive created by 237 + // MSDOS ACE archiver 238 + #define ACE_HOST_OS2 1 // created by OS2 ACE 239 + #define ACE_HOST_WIN32 2 // created by Win32 ACE 240 + 241 + 242 + //������������������������ file data structure �������������������������� 243 + // Contains information about an archived file. 244 + //------------------------------------------------------------------------- 245 + 246 + typedef struct sACEFileDataStruc 247 + { 248 + LPSTR SourceFileName; // relative file name 249 + LPSTR DestinationFileName; // absolute file name; 250 + // valid for add and extract only! 251 + ULONG Flags, // see ACE_FILEFLAG defines below 252 + CRC32, 253 + Method, // 0=stored, 1=LZ77, 2=V20Compression 254 + Dictionary; // DictionarySize = 2^Dictionary 255 + DWORDLONG 256 + CompressedSize, 257 + Size; 258 + ULONG Time, 259 + Attributes; 260 + CHAR Reserved[64]; // filled with zeros 261 + } tACEFileDataStruc, 262 + *pACEFileDataStruc; 263 + 264 + 265 + //----------------------------------------------------------------------- 266 + // Flag constants for the tACEFileData.Flags field. 267 + //----------------------------------------------------------------------- 268 + 269 + #define ACE_FILEFLAG_FILECOMMENT 2 // file has comment 270 + #define ACE_FILEFLAG_SPLITBEFORE 4096 // continued from 271 + // previous volume 272 + #define ACE_FILEFLAG_SPLITAFTER 8192 // continued on 273 + // next volume 274 + #define ACE_FILEFLAG_PASSWORD 16384 // is encrypted 275 + #define ACE_FILEFLAG_SOLID 32768 // uses data of previous 276 + // files (solid mode) 277 + 278 + 279 + //������������������������ copy info structure �������������������������� 280 + // Is passed to ACEInfoCallbackProc with ACE_CALLBACK_INFO_COPY as code. 281 + // Informs application about the progress of copying either an archive to 282 + // a temporary archive, or a temporary archive back to a normal archive. 283 + //------------------------------------------------------------------------- 284 + 285 + typedef struct sACECopyInfoStruc 286 + { 287 + LPSTR SourceFileName, // source file 288 + DestinationFileName; // the file copying the source to 289 + DWORDLONG 290 + CopiedBytes, // bytes already copied 291 + FileSize; // source file size 292 + CHAR Reserved[64]; // filled with zeros 293 + } tACECopyInfoStruc, 294 + *pACECopyInfoStruc; 295 + 296 + 297 + //�������������������� operation progress structure ��������������������� 298 + // Used to state the progress of the current operation. 299 + //------------------------------------------------------------------------- 300 + 301 + typedef struct sACEProgressDataStruc 302 + { 303 + LPSTR Addr; // address of uncompressed data block 304 + ULONG Size; // size of uncompressed data block 305 + DWORDLONG TotalProcessedSize; // counted by Dll: 306 + // total uncompressed bytes processed 307 + DWORDLONG TotalCompressedSize;// total compressed bytes processed 308 + DWORDLONG TotalSize; // total uncompressed bytes to process 309 + // (sum of all original file sizes) 310 + DWORDLONG FileProcessedSize; // uncompr. bytes of file processed 311 + DWORDLONG FileCompressedSize; // compr. bytes of file processed 312 + DWORDLONG FileSize; // uncompressed file size 313 + } tACEProgressDataStruc, 314 + *pACEProgressDataStruc; 315 + 316 + 317 + //��������������������������������������������������������������������������� 318 + //========--- Part 1.2: structures used in function structures ---========= 319 + //��������������������������������������������������������������������������� 320 + 321 + //������������������������� file list structure ������������������������� 322 + // This structure is used in the function specific structures. 323 + // The application has to use this structure to indicate which files 324 + // have to be processed by the DLL. 325 + //------------------------------------------------------------------------- 326 + 327 + typedef struct sACEFilesStruc 328 + { 329 + LPSTR SourceDir; // maybe a real or an archive directory 330 + LPSTR FileList; // pointer to list of files to process; 331 + // zero-terminated; files have to be 332 + // separated by carriage-return (0xd); 333 + // FileList may/will be modified by the 334 + // Dll; if nothing is specified, "*" 335 + // will be used 336 + // (attention at ACEDelete!!) 337 + LPSTR ExcludeList; // list of files to exclude from process 338 + BOOL FullMatch; // specifications must fully match 339 + // (no files with the same name in 340 + // subdirs are processed) 341 + BOOL RecurseSubDirs; // recurse subdirectories 342 + // (valid for add operations only) 343 + CHAR Reserved[60] ; // has to be filled with zeros 344 + // for future: possibly in-/excluding 345 + // file attributes and date/time range 346 + } tACEFilesStruc, 347 + *pACEFilesStruc; 348 + 349 + 350 + //��������������������� V2.0 compression structure ����������������������� 351 + // Specifies whether to use v2.0 compression or not. If you use v2.0 352 + // compression you can also specify which v2.0 compression techniques 353 + // you want to use. (ACE only) 354 + //------------------------------------------------------------------------- 355 + 356 + typedef struct sACEV20CompressionStruc 357 + { 358 + BOOL DoUse, // if DoUse=1 and all other fields are 359 + DoUseDelta, // zero, then all v2.0 compression 360 + DoUseExe, // techniques will be used 361 + DoUsePic, 362 + DoUseSound; 363 + CHAR Reserved[64]; // has to be filled with zeros 364 + } tACEV20CompressionStruc, 365 + *pACEV20CompressionStruc; 366 + 367 + 368 + //������������������� compression parameter structure ������������������� 369 + // Used in tACEAddStruc and tACEDeleteStruc. (ACE only) 370 + //------------------------------------------------------------------------- 371 + 372 + typedef struct sACECompressParamsStruc 373 + { 374 + ULONG Level, // see ACE_LEVEL constants below 375 + Dictionary; // 15(32k)..22(4Mb) 376 + 377 + tACEV20CompressionStruc // indicates if (or which) v2.0 378 + V20Compression; // compression techniques shall be used 379 + 380 + BOOL TestAfter; // make a test for CRC check errors 381 + // after compression 382 + CHAR Reserved[64]; // has to be filled with zeros 383 + } tACECompressParamsStruc, 384 + *pACECompressParamsStruc; 385 + 386 + 387 + //----------------------------------------------------------------------- 388 + // Tells the Dll which compression level to use. (ACE only) 389 + //----------------------------------------------------------------------- 390 + 391 + #define ACE_LEVEL_STORE 0 // save file only; do not compress 392 + #define ACE_LEVEL_FASTEST 1 // compress very fast 393 + #define ACE_LEVEL_FAST 2 // compress fast 394 + #define ACE_LEVEL_NORMAL 3 // good compromise between speed and 395 + // compression rate 396 + #define ACE_LEVEL_GOOD 4 // achieves good compression 397 + #define ACE_LEVEL_BEST 5 // best compression; bit slow 398 + 399 + 400 +//����������������������������������������������������������������������������� 401 +//�����������=====--- Part 2: ACE.DLL callback declarations ---====����������� 402 +//����������������������������������������������������������������������������� 403 + 404 + //--------------------------------------------------------------------------- 405 + // 406 + // ACE.DLL makes use of four callback functions to exchange data 407 + // with the application: 408 + // 409 + // 1) InfoCallbackProc (pACEInfoCallbackProcStruc Info) 410 + // 2) ErrorCallbackProc (pACEErrorCallbackProcStruc Error) 411 + // 3) RequestCallbackProc(pACERequestCallbackProcStruc Request) 412 + // 4) StateCallbackProc (pACEStateCallbackProcStruc State) 413 + // 414 + // Meaning of different callback types: 415 + // Info - lets the application know about actions that take some 416 + // time but are not essential 417 + // (Code is one of ACE_CALLBACK_INFO constants) 418 + // Error - an error occured; if the reason for this error can 419 + // be solved by the application then the Dll can continue 420 + // the current operation, otherwise the operation has to 421 + // be canceled 422 + // (Code is one of ACE_CALLBACK_ERROR constants) 423 + // Request - the Dll needs some user input 424 + // for ex.: "Overwrite file? (yes/no/cancel)" 425 + // (Code is one of ACE_CALLBACK_REQUEST constants) 426 + // State - Dll informs application about the progress of an operation 427 + // (Code is one of ACE_CALLBACK_STATE constants) 428 + // 429 + // The pointers to the callback functions has to be set by the application 430 + // when calling ACEInitDll(). If the application does not install 431 + // a callback function, is has set the corresponding pointer to NULL. 432 + // If the ACE.DLL has to call the Error or Request callback function 433 + // and they are not installed, the ACE.DLL will cancel the operation. 434 + // 435 + // The application has the possibility to cancel the current operation 436 + // at each callback function call. So if the user clicks on a Cancel-button, 437 + // the application should return ACE_CALLBACK_RETURN_CANCEL at the next 438 + // callback function call. 439 + // 440 + // All callback function parameters are declared as unions. 441 + // The StructureType field contains he type of the structure which is used. 442 + // When the application knows which type of structure it has to use, 443 + // it will have to interpret the Code field to get to know the reason 444 + // for the callback function call. 445 + // 446 + //--------------------------------------------------------------------------- 447 + // 448 + // Contents: 449 + // Part 2.1: operation types 450 + // Part 2.2: callback function return codes 451 + // Part 2.3: callback structure types 452 + // Part 2.4: callback structures 453 + // Part 2.5: info callback function 454 + // Part 2.6: error callback function 455 + // Part 2.7: request callback function 456 + // Part 2.8: state callback function 457 + // 458 + //--------------------------------------------------------------------------- 459 + 460 + 461 + //��������������������������������������������������������������������������� 462 + //=====================--- Part 2.1: operation codes ---=================== 463 + //��������������������������������������������������������������������������� 464 + // Passed to callback functions indicating the current operation. 465 + //------------------------------------------------------------------------- 466 + 467 + #define ACE_CALLBACK_OPERATION_LIST 0 468 + #define ACE_CALLBACK_OPERATION_TEST 1 469 + #define ACE_CALLBACK_OPERATION_ANALYZE 2 470 + #define ACE_CALLBACK_OPERATION_EXTRACT 3 471 + #define ACE_CALLBACK_OPERATION_ADD 4 472 + #define ACE_CALLBACK_OPERATION_REPACK 5 473 + #define ACE_CALLBACK_OPERATION_DELETE 6 474 + #define ACE_CALLBACK_OPERATION_REPAIR 7 // repair without 475 + // recovery record 476 + #define ACE_CALLBACK_OPERATION_SETCMT 8 477 + #define ACE_CALLBACK_OPERATION_ENCRYPT 9 478 + #define ACE_CALLBACK_OPERATION_KEEP 10 // file is to be 479 + // taken along 480 + // without recompress 481 + #define ACE_CALLBACK_OPERATION_RECOVER 11 // begin of 482 + // recovering archive 483 + // by recovery record 484 + #define ACE_CALLBACK_OPERATION_HEADSEARCH 12 // begin of searching 485 + // for file headers 486 + #define ACE_CALLBACK_OPERATION_RECRECSEARCH 13 // begin of searching 487 + // for recovery record 488 + #define ACE_CALLBACK_OPERATION_ADDSFX 14 489 + #define ACE_CALLBACK_OPERATION_LOCK 15 490 + #define ACE_CALLBACK_OPERATION_ADDAV 16 // not used in ACL 491 + #define ACE_CALLBACK_OPERATION_ADDRECOVREC 17 492 + #define ACE_CALLBACK_OPERATION_REGISTER 18 // not used in ACL 493 + 494 + 495 + //��������������������������������������������������������������������������� 496 + //=============--- Part 2.2: callback function return codes ---============ 497 + //��������������������������������������������������������������������������� 498 + // One of these result codes has to be returned by the application-based 499 + // callback functions. 500 + //--------------------------------------------------------------------------- 501 + 502 + #define ACE_CALLBACK_RETURN_OK 0 // also "yes" at 503 + // requests 504 + #define ACE_CALLBACK_RETURN_NO 1 // no, do not/ 505 + // do not retry 506 + #define ACE_CALLBACK_RETURN_CANCEL 2 // abort operation 507 + 508 + 509 + //��������������������������������������������������������������������������� 510 + //================--- Part 2.3: callback structure types ---=============== 511 + //��������������������������������������������������������������������������� 512 + // States of which type the passed structure is when a callback function 513 + // is called. The type is written to the StructureType field. 514 + //--------------------------------------------------------------------------- 515 + 516 + #define ACE_CALLBACK_TYPE_GLOBAL 0x0 517 + 518 + // type of structure is 519 + // tACECallbackGlobalStruc 520 + //------------------------------------------------------------- 521 + // callback function | codes using this structure 522 + // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 523 + // InfoCallbackProc | ACE_CALLBACK_INFO_GENERALKEY // not used in ACL 524 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 525 + // ErrorCallbackProc | ACE_CALLBACK_ERROR_MEMORY // f�r ManyFilesError und ExtractMem andere Codes verwenden!? 526 + // | ACE_CALLBACK_ERROR_REGISTER // not used in ACL 527 + // | ACE_CALLBACK_ERROR_READKEY // not used in ACL 528 + // | ACE_CALLBACK_ERROR_WRITEKEY // not used in ACL 529 + // | ACE_CALLBACK_ERROR_NOWINACEKEY // not used in ACL 530 + // | ACE_CALLBACK_ERROR_NOACTIVEACEKEY // not used in ACL 531 + // | ACE_CALLBACK_ERROR_UNCSPACE // wird noch nicht verwendet! 532 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 533 + // RequestCallbackProc | ACE_CALLBACK_REQUEST_REGISTER // not used in ACL 534 + // 535 + 536 + 537 + #define ACE_CALLBACK_TYPE_ARCHIVE 0x1 538 + 539 + // type of structure is 540 + // tACECallbackArchiveStruc 541 + //------------------------------------------------------------- 542 + // callback function | codes using this structure 543 + // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 544 + // InfoCallbackProc | ACE_CALLBACK_INFO_TMPARCCREATE 545 + // | ACE_CALLBACK_INFO_TMPARCCREATEEND 546 + // | ACE_CALLBACK_INFO_ADDRECREC 547 + // | ACE_CALLBACK_INFO_ADDRECRECEND 548 + // | ACE_CALLBACK_INFO_RECREC 549 + // | ACE_CALLBACK_INFO_NORECREC 550 + // | ACE_CALLBACK_INFO_RECOVERED 551 + // | ACE_CALLBACK_INFO_NODAMAGE 552 + // | ACE_CALLBACK_INFO_FNDMAINHEAD 553 + // | ACE_CALLBACK_INFO_FILELISTCREATE 554 + // | ACE_CALLBACK_INFO_FILELISTCREATEEND 555 + // | ACE_CALLBACK_INFO_FILESORT 556 + // | ACE_CALLBACK_INFO_FILESORTEND 557 + // | ACE_CALLBACK_INFO_COPYEND 558 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 559 + // ErrorCallbackProc | ACE_CALLBACK_ERROR_MODIFYVOLUME 560 + // | ACE_CALLBACK_ERROR_MODIFYLOCKEDARCHIVE 561 + // | ACE_CALLBACK_ERROR_AV // not used in ACL 562 + // | ACE_CALLBACK_ERROR_TOODAMAGED 563 + // | ACE_CALLBACK_ERROR_ARCHIVEEXISTS 564 + // | ACE_CALLBACK_ERROR_OPENREPAIRARCHIVE 565 + // | ACE_CALLBACK_ERROR_OPENARCHIVEREAD 566 + // | ACE_CALLBACK_ERROR_OPENARCHIVEWRITE 567 + // | ACE_CALLBACK_ERROR_READARCHIVE 568 + // | ACE_CALLBACK_ERROR_WRITEARCHIVE 569 + // | ACE_CALLBACK_ERROR_ALREADYSFX 570 + // | ACE_CALLBACK_ERROR_ADDSFXTOVOLUME 571 + // | ACE_CALLBACK_ERROR_ARCHIVEBROKEN 572 + // | ACE_CALLBACK_ERROR_ARCHIVESAVE 573 + // | ACE_CALLBACK_ERROR_NOFILES 574 + // | ACE_CALLBACK_ERROR_ISNOTANARCHIVE 575 + // | ACE_CALLBACK_ERROR_TEMPDIRCREATE 576 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 577 + // RequestCallbackProc | ACE_CALLBACK_REQUEST_MARKASSOLID 578 + // | ACE_CALLBACK_REQUEST_CHANGEVOLUME 579 + // | ACE_CALLBACK_REQUEST_ARCHIVEEXISTS 580 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 581 + // StateCallbackProc | ACE_CALLBACK_STATE_STARTARCHIVE 582 + // 583 + 584 + 585 + #define ACE_CALLBACK_TYPE_ARCHIVEDFILE 0x2 586 + 587 + // type of structure is 588 + // tACECallbackArchivedFileStruc 589 + //------------------------------------------------------------- 590 + // callback function | codes using this structure 591 + // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 592 + // InfoCallbackProc | ACE_CALLBACK_INFO_TMPARCCREATE 593 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 594 + // ErrorCallbackProc | ACE_CALLBACK_ERROR_CREATIONNAMEINUSE 595 + // | ACE_CALLBACK_ERROR_HIGHERVERSION 596 + // | ACE_CALLBACK_ERROR_ENCRYPTIONCRC 597 + // | ACE_CALLBACK_ERROR_WRITE 598 + // | ACE_CALLBACK_ERROR_READ 599 + // | ACE_CALLBACK_ERROR_OPENREAD 600 + // | ACE_CALLBACK_ERROR_OPENWRITE //wird noch gar nich benutzt?? sollte aber - bei extract! 601 + // | ACE_CALLBACK_ERROR_FILENAMETOOLONG 602 + // | ACE_CALLBACK_ERROR_REPACKCRC 603 + // | ACE_CALLBACK_ERROR_EXCLUDEPATH 604 + // | ACE_CALLBACK_ERROR_METHOD 605 + // | ACE_CALLBACK_ERROR_EXTRACTSPACE 606 + // | ACE_CALLBACK_ERROR_CREATION 607 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 608 + // RequestCallbackProc | ACE_CALLBACK_REQUEST_OVERWRITE 609 + // | ACE_CALLBACK_REQUEST_DELETEARCHIVEDSYSFILE 610 + // | ACE_CALLBACK_REQUEST_ADDBROKENFILE 611 + // | ACE_CALLBACK_REQUEST_PASSWORD 612 + // | ACE_CALLBACK_REQUEST_OVERWRITESYSFILE 613 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 614 + // StateCallbackProc | ACE_CALLBACK_STATE_STARTFILE 615 + // | ACE_CALLBACK_STATE_ENDNOCRCCHECK 616 + // 617 + 618 + 619 + #define ACE_CALLBACK_TYPE_REALFILE 0x3 620 + 621 + // type of structure is 622 + // tACECallbackRealFileStruc 623 + //------------------------------------------------------------- 624 + // callback function | codes using this structure 625 + // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 626 + // InfoCallbackProc | ACE_CALLBACK_INFO_FILELISTADD 627 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 628 + // ErrorCallbackProc | ACE_CALLBACK_ERROR_MOVEDELETE 629 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630 + // RequestCallbackProc | ACE_CALLBACK_REQUEST_MOVEDELETEREALSYSFILE 631 + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 632 + // StateCallbackProc | ACE_CALLBACK_STATE_STARTFILE 633 + // 634 + 635 + 636 + #define ACE_CALLBACK_TYPE_SPACE 0x4 637 + 638 + // type of structure is 639 + // tACECallbackSpaceStruc 640 + //------------------------------------------------------------- 641 + // callback function | codes using this structure 642 + // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 643 + // ErrorCallbackProc | ACE_CALLBACK_ERROR_TEMPDIRSPACE 644 + // | ACE_CALLBACK_ERROR_ARCHIVESPACE 645 + // 646 + 647 + 648 + #define ACE_CALLBACK_TYPE_SFXFILE 0x5 649 + 650 + // type of structure is 651 + // tACECallbackSFXFileStruc 652 + //------------------------------------------------------------- 653 + // callback function | codes using this structure 654 + // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 655 + // ErrorCallbackProc | ACE_CALLBACK_ERROR_READINGSFXFILE 656 + // 657 + 658 + 659 + #define ACE_CALLBACK_TYPE_COPY 0x6 660 + 661 + // type of structure is 662 + // tACECallbackCopyStruc 663 + //------------------------------------------------------------- 664 + // callback function | codes using this structure 665 + // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 666 + // InfoCallbackProc | ACE_CALLBACK_INFO_COPY 667 + // 668 + 669 + 670 + #define ACE_CALLBACK_TYPE_PROGRESS 0x7 671 + 672 + // type of structure is 673 + // tACECallbackProgressStruc 674 + //------------------------------------------------------------- 675 + // callback function | codes using this structure 676 + // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 677 + // StateCallbackProc | ACE_CALLBACK_STATE_PROGRESS 678 + // 679 + 680 + 681 + #define ACE_CALLBACK_TYPE_CRCCHECK 0x8 682 + 683 + // type of structure is 684 + // tACECallbackCRCCheckStruc 685 + //------------------------------------------------------------- 686 + // callback function | codes using this structure 687 + // --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 688 + // StateCallbackProc | ACE_CALLBACK_STATE_ENDCRCCHECK 689 + // 690 + 691 + 692 + //��������������������������������������������������������������������������� 693 + //==============--- Part 2.4: different callback structures ---============ 694 + //��������������������������������������������������������������������������� 695 + // These are the declarations of the different structures used in the 696 + // unions passed by the callback functions. 697 + //--------------------------------------------------------------------------- 698 + 699 + //----------------------------------------------------------------------- 700 + // Only the Dll GlobalData is passed to the application. 701 + //----------------------------------------------------------------------- 702 + 703 + typedef struct sACECallbackGlobalStruc 704 + { 705 + ULONG StructureType; // is ACE_CALLBACK_TYPE_GLOBAL 706 + ULONG Code; // see definition of 707 + // ACE_CALLBACK_TYPE_GLOBAL 708 + ULONG Operation; // ACE_CALLBACK_OPERATION constant 709 + 710 + pACEGlobalDataStruc GlobalData; // see tACEGlobalDataStruc 711 + } tACECallbackGlobalStruc, 712 + *pACECallbackGlobalStruc; 713 + 714 + 715 + //----------------------------------------------------------------------- 716 + // The Dll GlobalData and the ArchiveData are passed. 717 + //----------------------------------------------------------------------- 718 + 719 + typedef struct sACECallbackArchiveStruc 720 + { 721 + ULONG StructureType; // is ACE_CALLBACK_TYPE_ARCHIVE 722 + ULONG Code; // see definition of 723 + // ACE_CALLBACK_TYPE_ARCHIVE 724 + ULONG Operation; // ACE_CALLBACK_OPERATION constant 725 + 726 + pACEGlobalDataStruc GlobalData; // see tACEGlobalDataStruc 727 + pACEArchiveDataStruc ArchiveData; // see tACEArchiveDataStruc 728 + } tACECallbackArchiveStruc, 729 + *pACECallbackArchiveStruc; 730 + 731 + 732 + //----------------------------------------------------------------------- 733 + // GlobalData, ArchiveData and FileData are passed. 734 + //----------------------------------------------------------------------- 735 + 736 + typedef struct sACECallbackArchivedFileStruc 737 + { 738 + ULONG StructureType; // is ACE_CALLBACK_TYPE_ARCHIVEDFILE 739 + ULONG Code; // see definition of 740 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 741 + ULONG Operation; // ACE_CALLBACK_OPERATION constant 742 + 743 + pACEGlobalDataStruc GlobalData; // see tACEGlobalDataStruc 744 + pACEArchiveDataStruc ArchiveData; // see tACEArchiveDataStruc 745 + pACEFileDataStruc FileData; // see tACEFileDataStruc 746 + } tACECallbackArchivedFileStruc, 747 + *pACECallbackArchivedFileStruc; 748 + 749 + 750 + //----------------------------------------------------------------------- 751 + // GlobalData, ArchiveData and a FileName are passed. 752 + //----------------------------------------------------------------------- 753 + 754 + typedef struct sACECallbackRealFileStruc 755 + { 756 + ULONG StructureType; // is ACE_CALLBACK_TYPE_REALFILE 757 + ULONG Code; // see definition of 758 + // ACE_CALLBACK_TYPE_REALFILE 759 + ULONG Operation; // ACE_CALLBACK_OPERATION constant 760 + 761 + pACEGlobalDataStruc GlobalData; // see tACEGlobalDataStruc 762 + pACEArchiveDataStruc ArchiveData; // see tACEArchiveDataStruc 763 + LPSTR FileName; // name of file 764 + } tACECallbackRealFileStruc, 765 + *pACECallbackRealFileStruc; 766 + 767 + 768 + //----------------------------------------------------------------------- 769 + // GlobalData, ArchiveData, the path of temp directory and the 770 + // bytes required in temp directory (archive size) are passed. 771 + //----------------------------------------------------------------------- 772 + 773 + typedef struct sACECallbackSpaceStruc 774 + { 775 + ULONG StructureType; // is ACE_CALLBACK_TYPE_SPACE 776 + ULONG Code; // see definition of 777 + // ACE_CALLBACK_TYPE_SPACE 778 + ULONG Operation; 779 + 780 + pACEGlobalDataStruc GlobalData; // see tACEGlobalDataStruc 781 + pACEArchiveDataStruc ArchiveData; // see tACEArchiveDataStruc 782 + LPSTR Directory; // path of directory 783 + DWORDLONG ArchiveSize; // bytes required in temp dir 784 + } tACECallbackSpaceStruc, 785 + *pACECallbackSpaceStruc; 786 + 787 + 788 + //----------------------------------------------------------------------- 789 + // GlobalData, ArchiveData and SFXFileName are passed. 790 + //----------------------------------------------------------------------- 791 + 792 + typedef struct sACECallbackSFXFileStruc 793 + { 794 + ULONG StructureType; // is ACE_CALLBACK_TYPE_SFXFILE 795 + ULONG Code; // see definition of 796 + // ACE_CALLBACK_TYPE_SFXFILE 797 + ULONG Operation; // ACE_CALLBACK_OPERATION constant 798 + 799 + pACEGlobalDataStruc GlobalData; // see tACEGlobalDataStruc 800 + pACEArchiveDataStruc ArchiveData; // see tACEArchiveDataStruc 801 + LPSTR SFXFileName; // name of SFX 802 + } tACECallbackSFXFileStruc, 803 + *pACECallbackSFXFileStruc; 804 + 805 + 806 + //----------------------------------------------------------------------- 807 + // GlobalData, ArchiveData and CopyData are passed. 808 + //----------------------------------------------------------------------- 809 + 810 + typedef struct sACECallbackCopyStruc 811 + { 812 + ULONG StructureType; // is ACE_CALLBACK_TYPE_COPY 813 + ULONG Code; // see definition of 814 + // ACE_CALLBACK_TYPE_COPY 815 + ULONG Operation; // ACE_CALLBACK_OPERATION constant 816 + 817 + pACEGlobalDataStruc GlobalData; // see tACEGlobalDataStruc 818 + pACEArchiveDataStruc ArchiveData; // see tACEArchiveDataStruc 819 + pACECopyInfoStruc CopyData; // see tACECopyInfoStruc 820 + } tACECallbackCopyStruc, 821 + *pACECallbackCopyStruc; 822 + 823 + 824 + //----------------------------------------------------------------------- 825 + // GlobalData, ArchiveData, FileData and ProgressData are passed. 826 + //----------------------------------------------------------------------- 827 + 828 + typedef struct sACECallbackProgressStruc 829 + { 830 + ULONG StructureType; // is ACE_CALLBACK_TYPE_PROGRESS 831 + ULONG Code; // see definition of 832 + // ACE_CALLBACK_TYPE_PROGRESS 833 + ULONG Operation; // ACE_CALLBACK_OPERATION constant 834 + 835 + pACEGlobalDataStruc GlobalData; // see tACEGlobalDataStruc 836 + pACEArchiveDataStruc ArchiveData; // see tACEArchiveDataStruc 837 + pACEFileDataStruc FileData; // see tACEFileDataStruc 838 + pACEProgressDataStruc ProgressData; // see tACEProgressDataStruc 839 + } tACECallbackProgressStruc, 840 + *pACECallbackProgressStruc; 841 + 842 + 843 + //----------------------------------------------------------------------- 844 + // GlobalData, ArchiveData, FileData and CRC-check result are passed. 845 + //----------------------------------------------------------------------- 846 + 847 + typedef struct sACECallbackCRCCheckStruc 848 + { 849 + ULONG StructureType; // is ACE_CALLBACK_TYPE_CRCCHECK 850 + ULONG Code; // see definition of 851 + // ACE_CALLBACK_TYPE_CRCCHECK 852 + ULONG Operation; // ACE_CALLBACK_OPERATION constant 853 + 854 + pACEGlobalDataStruc GlobalData; // see tACEGlobalDataStruc 855 + pACEArchiveDataStruc ArchiveData; // see tACEArchiveDataStruc 856 + pACEFileDataStruc FileData; // see tACEFileDataStruc 857 + BOOL CRCOk; // CRC-check result 858 + } tACECallbackCRCCheckStruc, 859 + *pACECallbackCRCCheckStruc; 860 + 861 + 862 + //��������������������������������������������������������������������������� 863 + //=================--- Part 2.5: info callback function ---================ 864 + //��������������������������������������������������������������������������� 865 + // Declaration of ACEInfoCallbackProc() parameter and explanation of 866 + // callback info codes. 867 + //--------------------------------------------------------------------------- 868 + 869 + //----------------------------------------------------------------------- 870 + // Union parameter used at ACEInfoCallbackProc(). 871 + //----------------------------------------------------------------------- 872 + 873 + typedef union sACEInfoCallbackProcStruc 874 + { 875 + ULONG StructureType; // indicates which of the fol- 876 + // lowing structures is used 877 + tACECallbackGlobalStruc Global; 878 + tACECallbackArchiveStruc Archive; 879 + tACECallbackRealFileStruc RealFile; 880 + tACECallbackCopyStruc Copy; 881 + } tACEInfoCallbackProcStruc; 882 + 883 + 884 + //----------------------------------------------------------------------- 885 + // These values are passed to the ACEInfoCallbackProc callback function 886 + // to inform the application about actions (smaller parts of operations) 887 + // which may take some time or other things that might be of interest. 888 + //----------------------------------------------------------------------- 889 + 890 + #define ACE_CALLBACK_INFO_GENERALKEY 0x100 891 + 892 + // key is a general one (no own AV; own key 893 + // is obtainable for a special price!?) 894 + // not used in ACL 895 + //--------------------------------------------- 896 + // structure type: 897 + // ACE_CALLBACK_TYPE_GLOBAL 898 + // operations: 899 + // ACERegister 900 + 901 + #define ACE_CALLBACK_INFO_TMPARCCREATE 0x110 902 + 903 + // creating temporary archive for changes 904 + //--------------------------------------------- 905 + // structure type: 906 + // ACE_CALLBACK_TYPE_ARCHIVE 907 + // operations: 908 + // ACEAdd 909 + // ACESetComments 910 + // ACEEncryptFiles 911 + // ACEAddSFX 912 + // ACELock 913 + // ACEAddAV 914 + // ACERepair 915 + 916 + 917 + #define ACE_CALLBACK_INFO_TMPARCCREATEEND 0x111 918 + 919 + // finished creating temporary archive 920 + //--------------------------------------------- 921 + // structure type: 922 + // ACE_CALLBACK_TYPE_ARCHIVE 923 + // operations: 924 + // ACEAdd 925 + // ACESetComments 926 + // ACEEncryptFiles 927 + // ACEAddSFX 928 + // ACELock 929 + // ACEAddAV 930 + // ACERepair 931 + 932 + 933 + #define ACE_CALLBACK_INFO_ADDRECREC 0x112 934 + 935 + // adding recovery record 936 + //--------------------------------------------- 937 + // structure type: 938 + // ACE_CALLBACK_TYPE_ARCHIVE 939 + // operations: 940 + // ACEAdd 941 + // ACESetComments 942 + // ACEEncryptFiles 943 + // ACEAddSFX 944 + // ACELock 945 + // ACEAddAV 946 + // ACEAddRecoveryRecord 947 + // ACERepair 948 + 949 + 950 + #define ACE_CALLBACK_INFO_ADDRECRECEND 0x113 951 + 952 + // finished adding recovery record 953 + //--------------------------------------------- 954 + // structure type: 955 + // ACE_CALLBACK_TYPE_ARCHIVE 956 + // operations: 957 + // ACEAdd 958 + // ACESetComments 959 + // ACEEncryptFiles 960 + // ACEAddSFX 961 + // ACELock 962 + // ACEAddAV 963 + // ACEAddRecoveryRecord 964 + // ACERepair 965 + 966 + 967 + #define ACE_CALLBACK_INFO_RECREC 0x114 968 + 969 + // trying to recover files by recovery 970 + // record; end indicated by 971 + // ACE_CALLBACK_INFO_RECOVERED or 972 + // ACE_CALLBACK_INFO_NODAMAGE 973 + //--------------------------------------------- 974 + // structure type: 975 + // ACE_CALLBACK_TYPE_ARCHIVE 976 + // operations: 977 + // ACERepair 978 + 979 + 980 + #define ACE_CALLBACK_INFO_NORECREC 0x115 981 + 982 + // found no recovery record 983 + //--------------------------------------------- 984 + // structure type: 985 + // ACE_CALLBACK_TYPE_ARCHIVE 986 + // operations: 987 + // ACERepair 988 + 989 + 990 + #define ACE_CALLBACK_INFO_RECOVERED 0x116 991 + 992 + // archive has been fully recovered 993 + //--------------------------------------------- 994 + // structure type: 995 + // ACE_CALLBACK_TYPE_ARCHIVE 996 + // operations: 997 + // ACERepair 998 + 999 + 1000 + #define ACE_CALLBACK_INFO_NODAMAGE 0x117 1001 + 1002 + // ACERepair detected by recovery record that 1003 + // the archive is not damaged 1004 + //--------------------------------------------- 1005 + // structure type: 1006 + // ACE_CALLBACK_TYPE_ARCHIVE 1007 + // operations: 1008 + // ACERepair 1009 + 1010 + 1011 + #define ACE_CALLBACK_INFO_FNDMAINHEAD 0x118 1012 + 1013 + // found archive header 1014 + //--------------------------------------------- 1015 + // structure type: 1016 + // ACE_CALLBACK_TYPE_ARCHIVE 1017 + // operations: 1018 + // ACERepair 1019 + 1020 + 1021 + #define ACE_CALLBACK_INFO_FILELISTCREATE 0x119 1022 + 1023 + // creating a file list of specified files 1024 + //--------------------------------------------- 1025 + // structure type: 1026 + // ACE_CALLBACK_TYPE_ARCHIVE 1027 + // operations: 1028 + // ACEList 1029 + // ACEDelete 1030 + // ACETest 1031 + // ACEExtract 1032 + // ACEAdd 1033 + // ACESetComments 1034 + // ACEEncryptFiles 1035 + 1036 + 1037 + #define ACE_CALLBACK_INFO_FILELISTCREATEEND 0x11a 1038 + 1039 + // sent when creating the list of files 1040 + // is finished 1041 + //--------------------------------------------- 1042 + // structure type: 1043 + // ACE_CALLBACK_TYPE_ARCHIVE 1044 + // operations: 1045 + // ACEList 1046 + // ACEDelete 1047 + // ACETest 1048 + // ACEExtract 1049 + // ACEAdd 1050 + // ACESetComments 1051 + // ACEEncryptFiles 1052 + 1053 + 1054 + #define ACE_CALLBACK_INFO_FILESORT 0x11b 1055 + 1056 + // sorting files (for solid compression) 1057 + //--------------------------------------------- 1058 + // structure type: 1059 + // ACE_CALLBACK_TYPE_ARCHIVE 1060 + // operations: 1061 + // ACEAdd 1062 + 1063 + 1064 + #define ACE_CALLBACK_INFO_FILESORTEND 0x11c 1065 + 1066 + // sorting files (for solid compression) 1067 + //--------------------------------------------- 1068 + // structure type: 1069 + // ACE_CALLBACK_TYPE_ARCHIVE 1070 + // operations: 1071 + // ACEAdd 1072 + 1073 + 1074 + #define ACE_CALLBACK_INFO_COPYEND 0x11d 1075 + 1076 + // copying a file finished 1077 + //--------------------------------------------- 1078 + // structure type: 1079 + // ACE_CALLBACK_TYPE_ARCHIVE 1080 + // operations: 1081 + // ACEAdd 1082 + // ACESetComments 1083 + // ACEEncryptFiles 1084 + // ACEAddSFX 1085 + // ACELock 1086 + // ACEAddAV 1087 + // ACERepair 1088 + 1089 + 1090 + #define ACE_CALLBACK_INFO_FILELISTADD 0x140 1091 + 1092 + // called at creation of file list; the name 1093 + // of the file just added to file list is 1094 + // passed in tACECallbackRealFileStruc 1095 + //--------------------------------------------- 1096 + // structure type: 1097 + // ACE_CALLBACK_TYPE_REALFILE 1098 + // operations: 1099 + // ACEList 1100 + // ACEDelete 1101 + // ACETest 1102 + // ACEExtract 1103 + // ACEAdd 1104 + // ACESetComments 1105 + // ACEEncryptFiles 1106 + 1107 + 1108 + #define ACE_CALLBACK_INFO_COPY 0x150 1109 + 1110 + // copying a file; file name, file size and 1111 + // copied bytes are passed via 1112 + // tACECallbackCopyStruc 1113 + //--------------------------------------------- 1114 + // structure type: 1115 + // ACE_CALLBACK_TYPE_COPY 1116 + // operations: 1117 + // ACEAdd 1118 + // ACESetComments 1119 + // ACEEncryptFiles 1120 + // ACEAddSFX 1121 + // ACELock 1122 + // ACEAddAV 1123 + // ACERepair 1124 + 1125 + 1126 + //��������������������������������������������������������������������������� 1127 + //=================--- Part 2.6: error callback function ---=============== 1128 + //��������������������������������������������������������������������������� 1129 + // Declaration of ACEErrorCallbackProc() parameter and explanation of 1130 + // callback error codes. 1131 + //--------------------------------------------------------------------------- 1132 + 1133 + //----------------------------------------------------------------------- 1134 + // Union parameter used at ACEErrorCallbackProc(). 1135 + //----------------------------------------------------------------------- 1136 + 1137 + typedef union sACEErrorCallbackProcStruc 1138 + { 1139 + ULONG StructureType; // indicates which of the fol- 1140 + // lowing structures is used 1141 + tACECallbackGlobalStruc Global; 1142 + tACECallbackArchiveStruc Archive; 1143 + tACECallbackArchivedFileStruc ArchivedFile; 1144 + tACECallbackRealFileStruc RealFile; 1145 + tACECallbackSpaceStruc Space; 1146 + tACECallbackSFXFileStruc SFXFile; 1147 + } tACEErrorCallbackProcStruc; 1148 + 1149 + 1150 + //----------------------------------------------------------------------- 1151 + // This structure is used by the ACEErrorCallback function to inform 1152 + // the application about errors. The Code field of the used structure 1153 + // contains an ACE_CALLBACK_ERROR value. At most problems modifications 1154 + // to the passed structure can be made to fix it. Other problems can not 1155 + // be solved and cause an operation abort immediately. 1156 + // ErrorCallbackProc() has to return either ACE_CALLBACK_RETURN_OK or 1157 + // ACE_CALLBACK_RETURN_CANCEL. 1158 + //----------------------------------------------------------------------- 1159 + 1160 + #define ACE_CALLBACK_ERROR_MEMORY 0x200 1161 + 1162 + // not enough memory to perform operation 1163 + // (dictionary too large?) 1164 + //--------------------------------------------- 1165 + // structure type: 1166 + // ACE_CALLBACK_TYPE_GLOBAL 1167 + // operations: 1168 + // all 1169 + 1170 + 1171 + #define ACE_CALLBACK_ERROR_REGISTER 0x201 1172 + 1173 + // registration key is invalid (or wrong 1174 + // format?); not used in ACL 1175 + //--------------------------------------------- 1176 + // structure type: 1177 + // ACE_CALLBACK_TYPE_GLOBAL 1178 + // operations: 1179 + // ACERegister 1180 + 1181 + 1182 + #define ACE_CALLBACK_ERROR_READKEY 0x202 1183 + 1184 + // key could not be read (does not exist or 1185 + // is invalid); not used in ACL 1186 + //--------------------------------------------- 1187 + // structure type: 1188 + // ACE_CALLBACK_TYPE_GLOBAL 1189 + // operations: 1190 + // ACEInitDll 1191 + 1192 + 1193 + #define ACE_CALLBACK_ERROR_WRITEKEY 0x203 1194 + 1195 + // could not write key; not used in ACL 1196 + //--------------------------------------------- 1197 + // structure type: 1198 + // ACE_CALLBACK_TYPE_GLOBAL 1199 + // operations: 1200 + // ACERegister 1201 + 1202 + 1203 + #define ACE_CALLBACK_ERROR_NOWINACEKEY 0x204 1204 + 1205 + // key not valid for WinACE; not used in ACL 1206 + //--------------------------------------------- 1207 + // structure type: 1208 + // ACE_CALLBACK_TYPE_GLOBAL 1209 + // operations: 1210 + // ACERegister 1211 + 1212 + 1213 + #define ACE_CALLBACK_ERROR_NOACTIVEACEKEY 0x205 1214 + 1215 + // key not valid for ActiveACE; not used in ACL 1216 + //--------------------------------------------- 1217 + // structure type: 1218 + // ACE_CALLBACK_TYPE_GLOBAL 1219 + // operations: 1220 + // ACERegister 1221 + 1222 + 1223 + #define ACE_CALLBACK_ERROR_UNCSPACE 0x206 1224 + 1225 + // Win95_OSR1-bug: it is impossible to 1226 + // get available space of network drives by 1227 + // an UNC name; ACE will not stop but 1228 + // assumes there are 4Gb free 1229 + // --> the operation might fail if free 1230 + // disk space is low 1231 + //--------------------------------------------- 1232 + // structure type: 1233 + // ACE_CALLBACK_TYPE_GLOBAL 1234 + // operations: 1235 + // all 1236 + 1237 + 1238 + #define ACE_CALLBACK_ERROR_MODIFYVOLUME 0x220 1239 + 1240 + // modification of volumes not possible 1241 + //--------------------------------------------- 1242 + // structure type: 1243 + // ACE_CALLBACK_TYPE_ARCHIVE 1244 + // operations: 1245 + // ACEAdd 1246 + // ACESetComments 1247 + // ACEEncryptFiles 1248 + // ACEAddSFX 1249 + // ACELock 1250 + // ACEAddAV 1251 + // ACEAddRecoveryRecord 1252 + 1253 + 1254 + #define ACE_CALLBACK_ERROR_MODIFYLOCKEDARCHIVE 0x221 1255 + 1256 + // modification of locked archive not possible 1257 + //--------------------------------------------- 1258 + // structure type: 1259 + // ACE_CALLBACK_TYPE_ARCHIVE 1260 + // operations: 1261 + // ACEAdd 1262 + // ACESetComments 1263 + // ACEEncryptFiles 1264 + // ACEAddSFX 1265 + // ACELock 1266 + // ACEAddAV 1267 + // ACEAddRecoveryRecord 1268 + 1269 + 1270 + #define ACE_CALLBACK_ERROR_AV 0x222 1271 + 1272 + // AV of archive is NOT ok or does not match 1273 + // to the users AV (not used in ACL) 1274 + //--------------------------------------------- 1275 + // structure type: 1276 + // ACE_CALLBACK_TYPE_ARCHIVE 1277 + // operations: 1278 + // ACEReadArchiveData 1279 + // ACEList 1280 + // ACEDelete 1281 + // ACETest 1282 + // ACEExtract 1283 + // ACEAdd 1284 + // ACERepair 1285 + // ACESetComments 1286 + // ACEEncryptFiles 1287 + // ACEAddSFX 1288 + // ACEAddAV 1289 + // ACELock 1290 + // ACEAddRecoveryRecord 1291 + 1292 + 1293 + #define ACE_CALLBACK_ERROR_TOODAMAGED 0x223 1294 + 1295 + // can not repair by recovery record but 1296 + // can continue with normal repair 1297 + //--------------------------------------------- 1298 + // structure type: 1299 + // ACE_CALLBACK_TYPE_ARCHIVE 1300 + // operations: 1301 + // ACERepair 1302 + 1303 + 1304 + #define ACE_CALLBACK_ERROR_ARCHIVEEXISTS 0x224 1305 + 1306 + // destination file name already used; 1307 + // may occur if at 1308 + // ACE_CALLBACK_ERROR_ARCHIVESPACE a 1309 + // direcory is specified where a file 1310 + // with the same name as the current archive 1311 + // already exists 1312 + //--------------------------------------------- 1313 + // structure type: 1314 + // ACE_CALLBACK_TYPE_ARCHIVE 1315 + // operations: 1316 + // ACEAdd 1317 + 1318 + 1319 + #define ACE_CALLBACK_ERROR_OPENREPAIRARCHIVE 0x225 1320 + 1321 + // could not create archive for repairing 1322 + //--------------------------------------------- 1323 + // structure type: 1324 + // ACE_CALLBACK_TYPE_ARCHIVE 1325 + // operations: 1326 + // ACERepair 1327 + 1328 + 1329 + #define ACE_CALLBACK_ERROR_OPENARCHIVEREAD 0x226 1330 + 1331 + // could not open archive/volume for reading 1332 + //--------------------------------------------- 1333 + // structure type: 1334 + // ACE_CALLBACK_TYPE_ARCHIVE 1335 + // operations: 1336 + // ACEReadArchiveData 1337 + // ACEList 1338 + // ACETest 1339 + // ACEExtract 1340 + // ACERepair 1341 + 1342 + 1343 + #define ACE_CALLBACK_ERROR_OPENARCHIVEWRITE 0x227 1344 + 1345 + // could not open archive/volume for writing 1346 + //--------------------------------------------- 1347 + // structure type: 1348 + // ACE_CALLBACK_TYPE_ARCHIVE 1349 + // operations: 1350 + // ACEDelete 1351 + // ACEAdd 1352 + // ACESetComments 1353 + // ACEEncryptFiles 1354 + // ACEAddSFX 1355 + // ACELock 1356 + // ACEAddAV 1357 + // ACEAddRecoveryRecord 1358 + // ACERepair 1359 + 1360 + 1361 + #define ACE_CALLBACK_ERROR_READARCHIVE 0x228 1362 + 1363 + // error reading from archive 1364 + // (source disk removed?) 1365 + //--------------------------------------------- 1366 + // structure type: 1367 + // ACE_CALLBACK_TYPE_ARCHIVE 1368 + // operations: 1369 + // ACEReadArchiveData 1370 + // ACEList 1371 + // ACEDelete 1372 + // ACETest 1373 + // ACEExtract 1374 + // ACEAdd 1375 + // ACERepair 1376 + // ACESetComments 1377 + // ACEEncryptFiles 1378 + // ACEAddSFX 1379 + // ACEAddAV 1380 + // ACELock 1381 + // ACEAddRecoveryRecord 1382 + 1383 + 1384 + #define ACE_CALLBACK_ERROR_WRITEARCHIVE 0x229 1385 + 1386 + // error writing to archive 1387 + // (destination disk removed?) 1388 + //--------------------------------------------- 1389 + // structure type: 1390 + // ACE_CALLBACK_TYPE_ARCHIVE 1391 + // operations: 1392 + // ACEDelete 1393 + // ACEAdd 1394 + // ACESetComments 1395 + // ACEEncryptFiles 1396 + // ACEAddSFX 1397 + // ACELock 1398 + // ACEAddAV 1399 + // ACEAddRecoveryRecord 1400 + // ACERepair 1401 + 1402 + 1403 + #define ACE_CALLBACK_ERROR_ALREADYSFX 0x22a 1404 + 1405 + // ca not make to SFX: is already SFX 1406 + //--------------------------------------------- 1407 + // structure type: 1408 + // ACE_CALLBACK_TYPE_ARCHIVE 1409 + // operations: 1410 + // ACEAddSFX 1411 + 1412 + 1413 + #define ACE_CALLBACK_ERROR_ADDSFXTOVOLUME 0x22b 1414 + 1415 + // adding SFX to volumes not possible 1416 + //--------------------------------------------- 1417 + // structure type: 1418 + // ACE_CALLBACK_TYPE_ARCHIVE 1419 + // operations: 1420 + // ACEAddSFX 1421 + 1422 + 1423 + #define ACE_CALLBACK_ERROR_ARCHIVEBROKEN 0x22c 1424 + 1425 + // archive is broken (damaged) 1426 + //--------------------------------------------- 1427 + // structure type: 1428 + // ACE_CALLBACK_TYPE_ARCHIVE 1429 + // operations: 1430 + // ACEReadArchiveData 1431 + // ACEList 1432 + // ACEDelete 1433 + // ACETest 1434 + // ACEExtract 1435 + // ACEAdd 1436 + // ACERepair 1437 + // ACESetComments 1438 + // ACEEncryptFiles 1439 + // ACEAddSFX 1440 + // ACEAddAV 1441 + // ACELock 1442 + // ACEAddRecoveryRecord 1443 + 1444 + #define ACE_CALLBACK_ERROR_ARCHIVESAVE 0x22d 1445 + 1446 + // not enough space to save archive; 1447 + // but normally 1448 + // ACE_CALLBACK_ERROR_ARCHIVESPACE 1449 + // should allow to change destination 1450 + //--------------------------------------------- 1451 + // structure type: 1452 + // ACE_CALLBACK_TYPE_ARCHIVE 1453 + // operations: 1454 + // ACEAdd 1455 + // ACESetComments 1456 + // ACEEncryptFiles 1457 + // ACEAddSFX 1458 + // ACELock 1459 + // ACEAddAV 1460 + // ACEAddRecoveryRecord 1461 + // ACERepair 1462 + 1463 + 1464 + #define ACE_CALLBACK_ERROR_NOFILES 0x22e 1465 + 1466 + // no files specified/could not find files 1467 + //--------------------------------------------- 1468 + // structure type: 1469 + // ACE_CALLBACK_TYPE_ARCHIVE 1470 + // operations: 1471 + // ACEList 1472 + // ACEDelete 1473 + // ACETest 1474 + // ACEExtract 1475 + // ACEAdd 1476 + // ACESetComments 1477 + // ACEEncryptFiles 1478 + 1479 + 1480 + #define ACE_CALLBACK_ERROR_ISNOTANARCHIVE 0x22f 1481 + 1482 + // specified archive file is not an 1483 + // ACE archive 1484 + //--------------------------------------------- 1485 + // structure type: 1486 + // ACE_CALLBACK_TYPE_ARCHIVE 1487 + // operations: 1488 + // ACEReadArchiveData 1489 + // ACEList 1490 + // ACEDelete 1491 + // ACETest 1492 + // ACEExtract 1493 + // ACEAdd 1494 + // ACERepair 1495 + // ACESetComments 1496 + // ACEEncryptFiles 1497 + // ACEAddSFX 1498 + // ACEAddAV 1499 + // ACELock 1500 + // ACEAddRecoveryRecord 1501 + 1502 + 1503 + #define ACE_CALLBACK_ERROR_TEMPDIRCREATE 0x230 1504 + 1505 + // could not create file in temp directory 1506 + // (write protected or directory does 1507 + // not exist) 1508 + //--------------------------------------------- 1509 + // structure type: 1510 + // ACE_CALLBACK_TYPE_ARCHIVE 1511 + // operations: 1512 + // ACEAdd 1513 + // ACESetComments 1514 + // ACEEncryptFiles 1515 + // ACEAddSFX 1516 + // ACELock 1517 + // ACEAddAV 1518 + // ACEAddRecoveryRecord 1519 + // ACERepair 1520 + 1521 + 1522 + #define ACE_CALLBACK_ERROR_HIGHERVERSION 0x231 1523 + 1524 + // this Dll version is not able to handle 1525 + // the archive 1526 + //--------------------------------------------- 1527 + // structure type: 1528 + // ACE_CALLBACK_TYPE_ARCHIVE 1529 + // operations: 1530 + // ACEAdd 1531 + // ACESetComments 1532 + // ACEEncryptFiles 1533 + // ACEAddSFX 1534 + // ACELock 1535 + // ACEAddAV 1536 + // ACEAddRecoveryRecord 1537 + 1538 + 1539 + #define ACE_CALLBACK_ERROR_CREATIONNAMEINUSE 0x240 1540 + 1541 + // name used by directory 1542 + //--------------------------------------------- 1543 + // structure type: 1544 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1545 + // operations: 1546 + // ACEExtract 1547 + 1548 + 1549 + #define ACE_CALLBACK_ERROR_ENCRYPTIONCRC 0x242 1550 + 1551 + // encryption failed because of CRC-Error at 1552 + // decompression 1553 + //--------------------------------------------- 1554 + // structure type: 1555 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1556 + // operations: 1557 + // ACEEncryptFiles 1558 + 1559 + 1560 + #define ACE_CALLBACK_ERROR_READ 0x243 1561 + 1562 + // error reading file to be added 1563 + // (source disk removed?) 1564 + //--------------------------------------------- 1565 + // structure type: 1566 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1567 + // operations: 1568 + // ACEAdd 1569 + 1570 + 1571 + #define ACE_CALLBACK_ERROR_WRITE 0x244 1572 + 1573 + // error at extraction 1574 + // (destination disk removed?) 1575 + //--------------------------------------------- 1576 + // structure type: 1577 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1578 + // operations: 1579 + // ACEExtract 1580 + 1581 + 1582 + #define ACE_CALLBACK_ERROR_OPENREAD 0x245 1583 + 1584 + // error opening file for reading 1585 + //--------------------------------------------- 1586 + // structure type: 1587 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1588 + // operations: 1589 + // ACEAdd 1590 + 1591 + 1592 + #define ACE_CALLBACK_ERROR_OPENWRITE 0x246 1593 + 1594 + // error opening file for writing 1595 + //--------------------------------------------- 1596 + // structure type: 1597 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1598 + // operations: 1599 + // ACEExtract 1600 + 1601 + 1602 + #define ACE_CALLBACK_ERROR_FILENAMETOOLONG 0x247 1603 + 1604 + // resulting file name too long 1605 + //--------------------------------------------- 1606 + // structure type: 1607 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1608 + // operations: 1609 + // ACEAdd 1610 + 1611 + 1612 + #define ACE_CALLBACK_ERROR_REPACKCRC 0x248 1613 + 1614 + // CRC-check error at recompression 1615 + // (archive broken or wrong password) 1616 + //--------------------------------------------- 1617 + // structure type: 1618 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1619 + // operations: 1620 + // ACEDelete 1621 + // ACEAdd 1622 + 1623 + 1624 + #define ACE_CALLBACK_ERROR_EXCLUDEPATH 0x249 1625 + 1626 + // could not exclude path of file names; two 1627 + // or more files would have the same name 1628 + //--------------------------------------------- 1629 + // structure type: 1630 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1631 + // operations: 1632 + // ACEAdd 1633 + 1634 + 1635 + #define ACE_CALLBACK_ERROR_METHOD 0x24a 1636 + 1637 + // compression method not known to this 1638 + // Dll version 1639 + //--------------------------------------------- 1640 + // structure type: 1641 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1642 + // operations: 1643 + // ACEDelete 1644 + // ACETest 1645 + // ACEExtract 1646 + // ACEAdd 1647 + // ACEEncryptFiles 1648 + 1649 + 1650 + #define ACE_CALLBACK_ERROR_EXTRACTSPACE 0x24b 1651 + 1652 + // not enough space to extract file 1653 + //--------------------------------------------- 1654 + // structure type: 1655 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1656 + // operations: 1657 + // ACEExtract 1658 + 1659 + 1660 + #define ACE_CALLBACK_ERROR_CREATION 0x24c 1661 + 1662 + // creation failed (write-protection?) 1663 + //--------------------------------------------- 1664 + // structure type: 1665 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1666 + // operations: 1667 + // ACEExtract 1668 + 1669 + 1670 + #define ACE_CALLBACK_ERROR_OVERWRITEDELETE 0x24d 1671 + 1672 + // could not overwrite because deletion of 1673 + // file failed 1674 + //--------------------------------------------- 1675 + // structure type: 1676 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1677 + // operations: 1678 + // ACEExtract 1679 + 1680 + 1681 + #define ACE_CALLBACK_ERROR_MOVEDELETE 0x260 1682 + 1683 + // deletion of file or directory failed 1684 + // (move operation) 1685 + //--------------------------------------------- 1686 + // structure type: 1687 + // ACE_CALLBACK_TYPE_REALFILE 1688 + // operations: 1689 + // ACEAdd 1690 + 1691 + #define ACE_CALLBACK_ERROR_TEMPDIRSPACE 0x270 1692 + 1693 + // not enough space at current temp directory 1694 + //--------------------------------------------- 1695 + // structure type: 1696 + // ACE_CALLBACK_TYPE_SPACE 1697 + // operations: 1698 + // ACEAdd 1699 + // ACESetComments 1700 + // ACEEncryptFiles 1701 + // ACEAddSFX 1702 + // ACEAddAV 1703 + 1704 + 1705 + #define ACE_CALLBACK_ERROR_ARCHIVESPACE 0x271 1706 + 1707 + // not enough space to save archive 1708 + //--------------------------------------------- 1709 + // structure type: 1710 + // ACE_CALLBACK_TYPE_SPACE 1711 + // operations: 1712 + // ACEDelete 1713 + // ACEAdd 1714 + // ACESetComments 1715 + // ACEEncryptFiles 1716 + // ACEAddSFX 1717 + // ACELock 1718 + // ACEAddAV 1719 + // ACEAddRecoveryRecord 1720 + // ACERepair 1721 + 1722 + 1723 + #define ACE_CALLBACK_ERROR_READINGSFXFILE 0x280 1724 + 1725 + // error reading SFX file: 1726 + // is no SFX file, 1727 + // file does not exist or could not be opened 1728 + // for reading 1729 + //--------------------------------------------- 1730 + // structure type: 1731 + // ACE_CALLBACK_TYPE_SFXFILE 1732 + // operations: 1733 + // ACEAdd 1734 + // ACEAddSFX 1735 + 1736 + 1737 + //��������������������������������������������������������������������������� 1738 + //================--- Part 2.7: request callback function ---============== 1739 + //��������������������������������������������������������������������������� 1740 + // Declaration of ACERequestCallbackProc() parameter and explanation of 1741 + // callback request codes. 1742 + //--------------------------------------------------------------------------- 1743 + 1744 + //----------------------------------------------------------------------- 1745 + // Union parameter used at ACERequestCallbackProc(). 1746 + //----------------------------------------------------------------------- 1747 + 1748 + typedef union sACERequestCallbackProcStruc 1749 + { 1750 + ULONG StructureType; // indicates which of the fol- 1751 + // lowing structures is used 1752 + tACECallbackGlobalStruc Global; 1753 + tACECallbackArchiveStruc Archive; 1754 + tACECallbackArchivedFileStruc ArchivedFile; 1755 + tACECallbackRealFileStruc RealFile; 1756 + } tACERequestCallbackProcStruc; 1757 + 1758 + 1759 + //----------------------------------------------------------------------- 1760 + // Question constants are passed to the RequestCallbackProc callback 1761 + // function to request further data. 1762 + // RequestCallbackProc may return ACE_CALLBACK_RETURN_OK, 1763 + // ACE_CALLBACK_RETURN_NO or ACE_CALLBACK_RETURN_CANCEL. 1764 + //----------------------------------------------------------------------- 1765 + 1766 + #define ACE_CALLBACK_REQUEST_REGISTER 0x300 1767 + 1768 + // Global.UserAV has to be set 1769 + // to continue registration process; 1770 + // not used in ACL 1771 + //--------------------------------------------- 1772 + // structure type: 1773 + // ACE_CALLBACK_TYPE_GLOBAL 1774 + // operations: 1775 + // ACERegister 1776 + 1777 + 1778 + #define ACE_CALLBACK_REQUEST_MARKASSOLID 0x320 1779 + 1780 + // ArchiveHeader damaged, 1781 + // set solid flag for the new archive? 1782 + // (in case of doubt return yes!) 1783 + //--------------------------------------------- 1784 + // structure type: 1785 + // ACE_CALLBACK_TYPE_ARCHIVE 1786 + // operations: 1787 + // ACERepair 1788 + 1789 + 1790 + #define ACE_CALLBACK_REQUEST_CHANGEVOLUME 0x321 1791 + // Asks for permission to process next volume. 1792 + // If operation is ACE_CALLBACK_OPERATION_ADD 1793 + // then a new volume will be created. 1794 + // The application may change the name 1795 + // of the archive by modifying 1796 + // ArchiveData->ArchiveName 1797 + //--------------------------------------------- 1798 + // structure type: 1799 + // ACE_CALLBACK_TYPE_ARCHIVE 1800 + // operations: 1801 + // ACEDelete 1802 + // ACEAdd 1803 + // ACESetComments 1804 + // ACEEncryptFiles 1805 + // ACEList 1806 + // ACETest 1807 + // ACEExtract 1808 + 1809 + 1810 + #define ACE_CALLBACK_REQUEST_ARCHIVEEXISTS 0x322 1811 + // Asks whether to overwrite a file with 1812 + // the same name as the archive. 1813 + //--------------------------------------------- 1814 + // structure type: 1815 + // ACE_CALLBACK_TYPE_ARCHIVE 1816 + // operations: 1817 + // ACEDelete 1818 + // ACEAdd 1819 + // ACESetComments 1820 + // ACEEncryptFiles 1821 + 1822 + 1823 + #define ACE_CALLBACK_REQUEST_OVERWRITE 0x340 1824 + 1825 + // Overwrite existing file? 1826 + //--------------------------------------------- 1827 + // structure type: 1828 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1829 + // operations: 1830 + // ACEAdd 1831 + // ACEExtract 1832 + 1833 + 1834 + #define ACE_CALLBACK_REQUEST_DELARCHIVEDSYSFILE 0x341 1835 + 1836 + // Delete rdonly/hidden/system file 1837 + //--------------------------------------------- 1838 + // structure type: 1839 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1840 + // operations: 1841 + // ACEDelete 1842 + 1843 + 1844 + #define ACE_CALLBACK_REQUEST_ADDBROKENFILE 0x342 1845 + 1846 + // repair function found file with 1847 + // broken header, add file? 1848 + //--------------------------------------------- 1849 + // structure type: 1850 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1851 + // operations: 1852 + // ACERepair 1853 + 1854 + 1855 + #define ACE_CALLBACK_REQUEST_PASSWORD 0x343 1856 + 1857 + // password required; attention: may be 1858 + // decryption _and_ encryption; but passwords 1859 + // can be different --> better changing 1860 + // passwords at StateCallbackProc 1861 + //--------------------------------------------- 1862 + // structure type: 1863 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1864 + // operations: 1865 + // ACEDelete 1866 + // ACETest 1867 + // ACEExtract 1868 + // ACEAdd 1869 + // ACEEncryptFiles 1870 + 1871 + 1872 + #define ACE_CALLBACK_REQUEST_OVERWRITESYSFILE 0x344 1873 + 1874 + // Overwrite rdonly/hidden/system file 1875 + //--------------------------------------------- 1876 + // structure type: 1877 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1878 + // operations: 1879 + // ACEAdd 1880 + // ACEExtract 1881 + 1882 + 1883 + #define ACE_CALLBACK_REQUEST_MOVEDELREALSYSFILE 0x360 1884 + 1885 + // Delete rdonly/hidden/system file 1886 + // (move to archive operation) 1887 + //--------------------------------------------- 1888 + // structure type: 1889 + // ACE_CALLBACK_TYPE_REALFILE 1890 + // operations: 1891 + // ACEAdd 1892 + 1893 + 1894 + //��������������������������������������������������������������������������� 1895 + //=================--- Part 2.8: state callback function ---=============== 1896 + //��������������������������������������������������������������������������� 1897 + // Declaration of ACEStateCallbackProc() parameter and explanation of 1898 + // callback state codes. 1899 + //--------------------------------------------------------------------------- 1900 + 1901 + //----------------------------------------------------------------------- 1902 + // Union parameter used at ACEStateCallbackProc(). 1903 + //----------------------------------------------------------------------- 1904 + 1905 + typedef union sACEStateCallbackProcStruc 1906 + { 1907 + ULONG StructureType; // indicates which of the fol- 1908 + // lowing structures is used 1909 + tACECallbackArchiveStruc Archive; 1910 + tACECallbackArchivedFileStruc ArchivedFile; 1911 + tACECallbackArchivedFileStruc RealFile; 1912 + tACECallbackProgressStruc Progress; 1913 + tACECallbackCRCCheckStruc CRCCheck; 1914 + } tACEStateCallbackProcStruc; 1915 + 1916 + 1917 + //----------------------------------------------------------------------- 1918 + // Calls to (*StateCallbackProc)() with ACE_CALLBACK_STATE values in the 1919 + // Code field are made to enable the application to show the progress of 1920 + // an operation. 1921 + //----------------------------------------------------------------------- 1922 + 1923 + #define ACE_CALLBACK_STATE_STARTARCHIVE 0x400 1924 + 1925 + // procession of archive is about to begin 1926 + //--------------------------------------------- 1927 + // structure type: 1928 + // ACE_CALLBACK_TYPE_ARCHIVE 1929 + // operations: 1930 + // ACEList 1931 + // ACEDelete 1932 + // ACETest 1933 + // ACEExtract 1934 + // ACEAdd 1935 + // ACERepair 1936 + // ACESetComments 1937 + // ACEEncryptFiles 1938 + // ACEAddSFX 1939 + // ACEAddAV 1940 + // ACELock 1941 + // ACEAddRecoveryRecord 1942 + 1943 + 1944 + #define ACE_CALLBACK_STATE_STARTFILE 0x410 1945 + 1946 + // procession of file is about to begin 1947 + //--------------------------------------------- 1948 + // structure type: 1949 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1950 + // operations: 1951 + // ACEList 1952 + // ACEDelete 1953 + // ACETest 1954 + // ACEExtract 1955 + // ACEAdd 1956 + // ACERepair 1957 + // ACESetComments 1958 + // ACEEncryptFiles 1959 + 1960 + 1961 + #define ACE_CALLBACK_STATE_ENDNOCRCCHECK 0x411 1962 + 1963 + // end of file procession 1964 + // (no CRC chceck for this operation) 1965 + //--------------------------------------------- 1966 + // structure type: 1967 + // ACE_CALLBACK_TYPE_ARCHIVEDFILE 1968 + // operations: 1969 + // ACEList 1970 + // ACEDelete 1971 + // ACEAdd 1972 + // ACERepair 1973 + // ACESetComments 1974 + // ACEEncryptFiles 1975 + 1976 + 1977 + #define ACE_CALLBACK_STATE_PROGRESS 0x420 1978 + 1979 + // informs about the progress of a file 1980 + // operation 1981 + //--------------------------------------------- 1982 + // structure type: 1983 + // ACE_CALLBACK_TYPE_PROGRESS 1984 + // operations: 1985 + // ACEDelete 1986 + // ACETest 1987 + // ACEExtract 1988 + // ACEAdd 1989 + // ACERepair 1990 + // ACEEncryptFiles 1991 + 1992 + 1993 + #define ACE_CALLBACK_STATE_ENDCRCCHECK 0x430 1994 + 1995 + // end of file procession, CRC-check 1996 + // result is passed 1997 + //--------------------------------------------- 1998 + // structure type: 1999 + // ACE_CALLBACK_TYPE_CRCCHECK 2000 + // operations: 2001 + // ACETest 2002 + // ACEExtract 2003 + // ACEDelete 2004 + // ACEAdd 2005 + 2006 + 2007 + 2008 + 2009 +//�������������������������������������������������������������������������������� 2010 +//��������=====--- Part 3: Functions supported by UNAceV2.Dll ---====������������ 2011 +//�������������������������������������������������������������������������������� 2012 + 2013 + //--------------------------------------------------------------------------- 2014 + // 2015 + // UnAceV2.Dll supports the following functions: 2016 + // 2017 + // ACEInitDll 2018 + // ACEReadArchiveData 2019 + // ACEList 2020 + // ACETest 2021 + // ACEExtract 2022 + // 2023 + // First of all - before any other function is called - the Dll has to be 2024 + // initialized by ACEInitDll(). Using this function the application has 2025 + // to set temporary directory, key file path, comment buffer and 2026 + // callback function pointers. 2027 + // (callback function pointers can be set to NULL for first-try-runs) 2028 + // 2029 + // See description of each function for details about their task, input and 2030 + // output. Return codes of those functions are listed in part 3.1. 2031 + // 2032 + //--------------------------------------------------------------------------- 2033 + // 2034 + // Contents: 2035 + // Part 3.1: ACE.DLL function return codes 2036 + // Part 3.2: functions and parameter structures 2037 + // 2038 + //--------------------------------------------------------------------------- 2039 + 2040 + 2041 + //��������������������������������������������������������������������������� 2042 + //=============--- Part 3.1: ACE.DLL function return codes ---============= 2043 + //��������������������������������������������������������������������������� 2044 + 2045 + //----------------------------------------------------------------------- 2046 + // These error codes are returned by the ACE.DLL-functions. The meanings 2047 + // of the codes are the same, as they are for the exit codes of ACE.EXE. 2048 + //----------------------------------------------------------------------- 2049 + 2050 + #define ACE_ERROR_NOERROR 0 // no error; operation succesful 2051 + #define ACE_ERROR_MEM 1 // insufficient memory 2052 + #define ACE_ERROR_FILES 2 // no files specified 2053 + #define ACE_ERROR_FOUND 3 // specified archive not found 2054 + #define ACE_ERROR_FULL 4 // disk full 2055 + #define ACE_ERROR_OPEN 5 // could not open file 2056 + #define ACE_ERROR_READ 6 // read error 2057 + #define ACE_ERROR_WRITE 7 // write error 2058 + #define ACE_ERROR_CLINE 8 // invalid command line 2059 + #define ACE_ERROR_CRC 9 // CRC error 2060 + #define ACE_ERROR_OTHER 10 // other error 2061 + #define ACE_ERROR_EXISTS 11 // file already exists 2062 + #define ACE_ERROR_USER 255 // user break (application 2063 + // returned cancel code at 2064 + // callback function) 2065 + 2066 + 2067 + //----------------------------------------------------------------------- 2068 + // These error codes are returned by the ACE.DLL-functions. They are not 2069 + // used by ACE.EXE yet. 2070 + //----------------------------------------------------------------------- 2071 + 2072 + #define ACE_ERROR_PARAM 128 // might be used later 2073 + 2074 + 2075 + //��������������������������������������������������������������������������� 2076 + //============--- Part 3.2: functions and parameter structures ---========== 2077 + //��������������������������������������������������������������������������� 2078 + 2079 + //��������������������������� ACEInitDll �������������������������������� 2080 + // Initializes ACE dynamic link library. Has to be called before any 2081 + // other function call. May be called more than one time. 2082 + //------------------------------------------------------------------------- 2083 + // Input : 2084 + // Output: 2085 + //------------------------------------------------------------------------- 2086 + 2087 + //----------------------------------------------------------------------- 2088 + // ACEInitDll() parameter structure. 2089 + //----------------------------------------------------------------------- 2090 + 2091 + typedef struct sACEInitDllStruc 2092 + { 2093 + tACEGlobalDataStruc 2094 + GlobalData; 2095 + CHAR Reserved[64]; // has to be filled with zeroes 2096 + } tACEInitDllStruc, 2097 + *pACEInitDllStruc; 2098 + 2099 + 2100 + //----------------------------------------------------------------------- 2101 + // ACEInitDll() function declaration. 2102 + //----------------------------------------------------------------------- 2103 + 2104 + INT __stdcall ACEInitDll(pACEInitDllStruc DllData); 2105 + 2106 + 2107 + //����������������������� ACEReadArchiveData ���������������������������� 2108 + // Tests a file whether it is an archive or not and reads out the archive 2109 + // data. 2110 + //------------------------------------------------------------------------- 2111 + 2112 + //----------------------------------------------------------------------- 2113 + // ACEReadArchiveData() parameter structure. 2114 + //----------------------------------------------------------------------- 2115 + 2116 + typedef struct sACEReadArchiveDataStruc 2117 + { 2118 + pACEArchiveDataStruc // if this pointer is NULL, the 2119 + ArchiveData; // file passed to ACEReadArchiveData 2120 + // is no archive; otherwise it points 2121 + // to a tACEArchiveDataStruc structure 2122 + // that contains information about the 2123 + // archive 2124 + CHAR Reserved[64]; // has to be filled with zeroes 2125 + } tACEReadArchiveDataStruc, 2126 + *pACEReadArchiveDataStruc; 2127 + 2128 + 2129 + //----------------------------------------------------------------------- 2130 + // ACEReadArchiveData() function declaration. 2131 + //----------------------------------------------------------------------- 2132 + 2133 + INT __stdcall ACEReadArchiveData(LPSTR ArchiveName, 2134 + pACEReadArchiveDataStruc ArchiveData); 2135 + 2136 + 2137 + //���������������������������� ACEList ���������������������������������� 2138 + // Passes the specified files in the archive to StateCallbackProc(). 2139 + //------------------------------------------------------------------------- 2140 + 2141 + //----------------------------------------------------------------------- 2142 + // ACEList() parameter structure. 2143 + //----------------------------------------------------------------------- 2144 + 2145 + typedef struct sACEListStruc 2146 + { 2147 + tACEFilesStruc // specifies files to be listed; 2148 + Files; // see tACEFilesStruc structure 2149 + CHAR Reserved[64]; // has to be filled with zeroes 2150 + } tACEListStruc, 2151 + *pACEListStruc; 2152 + 2153 + 2154 + //----------------------------------------------------------------------- 2155 + // ACEList() function declaration. 2156 + //----------------------------------------------------------------------- 2157 + 2158 + INT __stdcall ACEList(LPSTR ArchiveName, pACEListStruc List); 2159 + 2160 + 2161 + //���������������������������� ACETest ���������������������������������� 2162 + // Tests specified files in archive. 2163 + //------------------------------------------------------------------------- 2164 + 2165 + //----------------------------------------------------------------------- 2166 + // ACETest() parameter structure. 2167 + //----------------------------------------------------------------------- 2168 + 2169 + typedef struct sACETestStruc 2170 + { 2171 + tACEFilesStruc // specifies files to test; 2172 + Files; // see tACEFilesStruc structure 2173 + LPSTR DecryptPassword; // zero-terminated string, 2174 + // case-sensitive (maxlen=56) 2175 + CHAR Reserved[64]; // has to be filled with zeroes 2176 + } tACETestStruc, 2177 + *pACETestStruc; 2178 + 2179 + 2180 + //----------------------------------------------------------------------- 2181 + // ACETest() function declaration. 2182 + //----------------------------------------------------------------------- 2183 + 2184 + INT __stdcall ACETest(LPSTR ArchiveName, pACETestStruc Test); 2185 + 2186 + 2187 + //��������������������������� ACEExtract �������������������������������� 2188 + // Extracts specified files. 2189 + //------------------------------------------------------------------------- 2190 + 2191 + //----------------------------------------------------------------------- 2192 + // ACEExtract() parameter structure. 2193 + //----------------------------------------------------------------------- 2194 + 2195 + typedef struct sACEExtractStruc 2196 + { 2197 + tACEFilesStruc // specifies files to extract; 2198 + Files; // see tACEFilesStruc structure 2199 + LPSTR DestinationDir; // directory to extract files to 2200 + BOOL ExcludePath; // extract files without path 2201 + LPSTR DecryptPassword; // password for decryption (if files 2202 + // are encrypted); 2203 + // zero-terminated string, 2204 + // case-sensitive (maxlen=56) 2205 + CHAR Reserved[64]; // has to be filled with zeroes 2206 + } tACEExtractStruc, 2207 + *pACEExtractStruc; 2208 + 2209 + 2210 + //----------------------------------------------------------------------- 2211 + // ACEExtract() function declaration. 2212 + //----------------------------------------------------------------------- 2213 + 2214 + INT __stdcall ACEExtract(LPSTR ArchiveName, 2215 + pACEExtractStruc Extract); 2216 + 2217 + 2218 +#ifdef __cplusplus 2219 + } 2220 +#endif 2221 +#endif 2222 +
Added uninst/StdAfx.cpp version [9e5388a0a29da425]
1 +// stdafx.cpp : �W���C���N���[�h�t�@�C�����܂ރ\�[�X �t�@�C�� 2 +// kinst.pch ���������v���R���p�C���σw�b�_�[ 3 +// stdafx.obj ���������v���R���p�C���σ^�C�v��� 4 + 5 +#include "stdafx.h" 6 + 7 +// TODO: STDAFX.H �Ɋ܂܂�Ă��āA���̃t�@�C���ɋL�q����Ă��Ȃ� 8 +// �w�b�_�[�t�@�C����lj����Ă��������B
Added uninst/StdAfx.h version [8794fb8b22c7b701]
1 +// stdafx.h : frequently used headers 2 + 3 +#ifndef AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_ 4 +#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_ 5 + 6 +// windows general header 7 +#undef WINVER 8 +#define WINVER 0x0400 9 +#include <windows.h> 10 + 11 +// shell header 12 +#undef _WIN32_IE 13 +#define _WIN32_IE 0x0200 14 +#include <shlobj.h> 15 + 16 +#endif
Added uninst/del.ico version [a5746f6223d32e37]
cannot compute difference between binary files
Added uninst/kinst.cpp version [683230bf72bb28e0]
1 + 2 +#include "stdafx.h" 3 +#include "../kilib/kilib.h" 4 +#include "resource.h" 5 + 6 + 7 +//-- �G�pFunctions ---------------------------------------------------------- 8 + 9 +void getProgramFiles( kiPath* path ) 10 +{ 11 + // �P�D���W�X�g������ 12 + kiRegKey key; 13 + if( key.open( HKEY_CLASSES_ROOT, "Software\\Microsoft\\Windows\\CurrentVersion", KEY_QUERY_VALUE ) ) 14 + if( key.get( "ProgramFilesDir", path ) 15 + || key.get( "ProgramFilesPath", path ) ) 16 + return; 17 + 18 + // �Q�DWindows�f�B���N�g������̗ސ� 19 + char buf[MAX_PATH]; 20 + if( ::GetWindowsDirectory( buf, MAX_PATH ) ) 21 + { 22 + for( char* p=buf; *p!='\\' && *p; p++ ); 23 + *p='\0'; 24 + 25 + *path= buf, *path += '\\', *path += "Program Files"; 26 + if( ::GetFileAttributes( *path ) != 0xffffffff ) 27 + return; 28 + } 29 + 30 + // �R�D����[�Ȃ��̂ŋN���f�B���N�g�� 31 + path->beSpecialPath( kiPath::Exe ); 32 +} 33 + 34 +void createShortCut( const kiPath& original, const kiPath& at, const char* name ) 35 +{ 36 + IShellLink* psl; 37 + if( SUCCEEDED(::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,IID_IShellLink,(void**)&psl)) ) 38 + { 39 + psl->SetPath( original ); 40 + 41 + IPersistFile* ppf; 42 + if( SUCCEEDED(psl->QueryInterface(IID_IPersistFile,(void**)&ppf)) ) 43 + { 44 + WORD wsz[MAX_PATH]; 45 + kiPath lnkfile( at ); 46 + lnkfile += name, lnkfile += ".lnk"; 47 + ::MultiByteToWideChar(CP_ACP,0,lnkfile,-1,wsz,MAX_PATH); 48 + ppf->Save(wsz,TRUE); 49 + ppf->Release(); 50 + } 51 + psl->Release(); 52 + } 53 +} 54 + 55 + 56 +//-- ���C�� ------------------------------------------------------------------- 57 + 58 +class CKInstApp : public kiApp, kiDialog // kiApp�̃R���X�g���N�^����ɌĂ�Ȃ��Ǝ��ʁB��낵���Ȃ��B 59 +{ 60 + CKInstApp() : kiDialog( IDD_MAIN ) {} 61 + friend void kilib_create_new_app(); 62 + 63 +//-- ���C�����[�`�� --------- 64 + 65 + void run( kiCmdParser& cmd ) 66 + { 67 + if( cmd.option().len() ) 68 + if( cmd.option()[0][1] == 'i' ) 69 + { 70 + install(); 71 + return; 72 + } 73 + else if( cmd.option()[0][1] == 'u' && cmd.param().len() ) 74 + { 75 + uninstall( cmd.param()[0] ); 76 + return; 77 + } 78 + boot_uninstaller(); 79 + } 80 + 81 + void install() 82 + { 83 + doModal(); 84 + if( IDCANCEL == getEndCode() ) 85 + return; 86 + 87 + if( !copy() ) 88 + { 89 + msgBox( kiStr().loadRsrc(IDS_COPYFAIL) ); 90 + return; 91 + } 92 + 93 + if( !regist() ) 94 + msgBox( kiStr().loadRsrc(IDS_REGISTFAIL) ); 95 + 96 + do_caldix(); 97 + 98 + msgBox( kiStr().loadRsrc(IDS_INSTALLFINISH),"Noah",MB_OK|MB_ICONINFORMATION ); 99 + } 100 + 101 + void uninstall( const char* dir ) 102 + { 103 + m_destdir = dir; 104 + for( int i=0; i!=sizeof(m_assoc)/sizeof(bool); i++ ) 105 + m_assoc[i]=false; 106 + Sleep(200); 107 + unregist(); 108 + remove(); 109 + kill_later( kiPath(kiPath::Exe_name) ); 110 + msgBox( kiStr().loadRsrc(IDS_UNINSTALLFINISH),"Noah",MB_OK|MB_ICONINFORMATION ); 111 + } 112 + 113 + void boot_uninstaller() 114 + { 115 + if( IDNO==msgBox( kiStr(500).loadRsrc(IDS_UNINSTOK), "Noah", MB_YESNO|MB_ICONQUESTION ) ) 116 + return; 117 + 118 + kiPath self(kiPath::Exe_name), to(kiPath::Tmp), pos(kiPath::Exe); 119 + to += "noaunins.exe"; 120 + ::CopyFile( self, to, FALSE ); 121 + to += " -u \"", to += pos, to+='"'; 122 + 123 + PROCESS_INFORMATION pi; 124 + STARTUPINFO si; ki_memzero( &si,sizeof(si) ); si.cb=sizeof(si); 125 + if( !::CreateProcess( NULL,const_cast<char*>((const char*)to), 126 + NULL,NULL,FALSE,CREATE_NEW_PROCESS_GROUP|NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi ) ) 127 + return; // �N���ł��Ȃ������c�B 128 + 129 + ::CloseHandle( pi.hThread ); 130 + ::CloseHandle( pi.hProcess ); 131 + 132 + // ���W�X�g���̃A���C���X�g�[�����폜 133 + kiRegKey key; 134 + if( key.open( HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall" ) ) 135 + key.delSubKey( "Noah" ); 136 + } 137 + 138 +//-- ���C���_�C�A���O�̏��� -- 139 + 140 + bool onOK() 141 + { 142 + char str[MAX_PATH]; 143 + sendMsgToItem( IDC_INSTALLTO, WM_GETTEXT, MAX_PATH, (LPARAM)str ); 144 + if( str[1]!=':' || str[2]!='\\' ) 145 + { 146 + msgBox( kiStr().loadRsrc(IDS_BADPATH) ); 147 + return false; 148 + } 149 + 150 + m_destdir = str; 151 + m_destdir.beBackSlash(true); 152 + for( UINT i=IDC_LZH; i<=IDC_DSK; i++ ) 153 + m_assoc[i-IDC_LZH] = (BST_CHECKED==sendMsgToItem( i, BM_GETCHECK )); 154 + m_assoc[IDC_STT-IDC_LZH] = true; 155 + 156 + return true; 157 + } 158 + BOOL onInit() 159 + { 160 + for( int j=0; j<18; j++ ) 161 + m_assoc[j] = true; 162 + 163 + kiPath prg; 164 + getPrevPos( &prg ); 165 + if( prg.len()==0 ) // �V�K�C���X�g�[�� 166 + getProgramFiles( &prg ), prg.beBackSlash(true), prg += "Noah\\"; 167 + else // ���ɑ��݂��Ă�ꍇ 168 + { 169 + HINSTANCE hDLL = kiSUtil::loadLibrary( "NoahXt.dll" ); 170 + if( hDLL ) 171 + { 172 + typedef bool (WINAPI * XT_IA)(); 173 + XT_IA Init = (XT_IA)::GetProcAddress( hDLL, "Init" ); 174 + if( Init() ) 175 + { 176 + typedef void (WINAPI * XT_LS)(bool*,bool*); 177 + typedef void (WINAPI * XT_AS)(bool*); 178 + typedef void (WINAPI * XT_LSEX)(const char*,bool*); 179 + XT_LS LoadSE = (XT_LS)::GetProcAddress( hDLL, "LoadSE" ); 180 + XT_AS LoadAssoc = (XT_AS)::GetProcAddress( hDLL, "LoadAS" ); 181 + XT_LSEX LoadASEx = (XT_LSEX)::GetProcAddress( hDLL, "LoadASEx" ); 182 + LoadSE( &m_assoc[13], &m_assoc[14] ); 183 + LoadASEx( "7z\0", &m_assoc[12] ); 184 + LoadAssoc( m_assoc ); 185 + } 186 + ::FreeLibrary( hDLL ); 187 + } 188 + m_assoc[15] = kiSUtil::exist( kiPath(kiPath::Snd)+="Noah.lnk" ); 189 + m_assoc[16] = kiSUtil::exist( kiPath(kiPath::Dsk)+="Noah.lnk" ); 190 + } 191 + 192 + sendMsgToItem( IDC_INSTALLTO, WM_SETTEXT, 0, (LPARAM)(const char*)prg ); 193 + for( UINT i=IDC_LZH; i<=IDC_DSK; i++ ) 194 + if( m_assoc[i-IDC_LZH] ) 195 + sendMsgToItem( i, BM_SETCHECK, BST_CHECKED ); 196 + return FALSE; 197 + } 198 + BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp ) 199 + { 200 + if( msg != WM_COMMAND ) 201 + return FALSE; 202 + switch( LOWORD(wp) ) 203 + { 204 + case IDC_REF:{ 205 + char str[MAX_PATH]; 206 + sendMsgToItem( IDC_INSTALLTO, WM_GETTEXT, MAX_PATH, (LPARAM)str ); 207 + if( kiSUtil::getFolderDlg( str, hwnd(), kiStr().loadRsrc(IDS_DIR), str ) ) 208 + { 209 + kiPath x(str); x.beBackSlash(true); x+="Noah\\"; 210 + sendMsgToItem( IDC_INSTALLTO, WM_SETTEXT, 0, (LPARAM)(const char*)x ); 211 + } 212 + }break; 213 + case IDC_ALL:{ 214 + for( UINT i=IDC_LZH; i<=IDC_DSK; i++ ) 215 + sendMsgToItem( i, BM_SETCHECK, BST_UNCHECKED ); 216 + }break; 217 + default: 218 + return FALSE; 219 + } 220 + return TRUE; 221 + } 222 + 223 +//-- �C���X�g�[�� --------- 224 + 225 + bool m_assoc[18]; // LZH-JAK, 7Z, CMP MLT, SND DSK STT 226 + kiPath m_destdir; 227 + 228 + bool copy() 229 + { 230 + kiPath exe(kiPath::Exe,false), inst(m_destdir); 231 + inst.beBackSlash(false); 232 + 233 + // �Ƃ肠�����S�R�s 234 + bool r = copy_dir2dir(exe,inst); 235 + 236 + // manual�̌�����Ă��Ɓ[�ɒ��� 237 + kiPath manE(m_destdir), manJ(m_destdir); 238 + manE.beBackSlash(true), manJ.beBackSlash(true); 239 + manE += "manual-e.htm", manJ += "manual.htm"; 240 + if( ::GetACP() != 932 ) 241 + ::CopyFile( manE, manJ, FALSE ); 242 + ::DeleteFile( manE ); 243 + 244 + return r; 245 + } 246 + 247 + bool regist() 248 + { 249 + // NoahXt.dll�ɂ�鏈�� 250 + kiPath xtdll( m_destdir ); 251 + xtdll += "NoahXt.dll"; 252 + HINSTANCE hDLL = kiSUtil::loadLibrary( xtdll ); 253 + if( hDLL ) 254 + { 255 + typedef bool (WINAPI * XT_IA)(); 256 + typedef void (WINAPI * XT_LS)(bool*,bool*); 257 + typedef void (WINAPI * XT_SS)(bool,bool); 258 + typedef void (WINAPI * XT_AS)(bool*); 259 + typedef void (WINAPI * XT_SSEX)(const char*,bool); 260 + XT_IA Init = (XT_IA)::GetProcAddress( hDLL, "Init" ); 261 + if( Init() ) 262 + { 263 + XT_SS SaveSE = (XT_SS)::GetProcAddress( hDLL, "SaveSE" ); 264 + XT_AS SaveAssoc = (XT_AS)::GetProcAddress( hDLL, "SaveAS" ); 265 + XT_SSEX SaveASEx = (XT_SSEX)::GetProcAddress( hDLL, "SaveASEx" ); 266 + SaveSE( m_assoc[13], m_assoc[14] ); 267 + SaveASEx( "7z\0", m_assoc[12] ); 268 + SaveAssoc( m_assoc ); 269 + } 270 + ::FreeLibrary( hDLL ); 271 + } 272 + 273 + // �V���[�g�J�b�g 274 + ::CoInitialize( NULL ); 275 + kiPath tmp(m_destdir); tmp += "Noah.exe"; 276 + if( m_assoc[15] ) 277 + createShortCut( tmp, kiPath(kiPath::Snd), "Noah" ); 278 + if( m_assoc[16] ) 279 + createShortCut( tmp, kiPath(kiPath::Dsk), "Noah" ); 280 + if( m_assoc[17] ) 281 + { 282 + kiPath StartMenu( CSIDL_PROGRAMS ),rsrc; 283 + StartMenu += "Noah\\"; 284 + StartMenu.mkdir(); 285 + 286 + createShortCut( tmp, StartMenu, "Noah" ); 287 + tmp = m_destdir, tmp += "caldix.exe"; 288 + createShortCut( tmp, StartMenu, rsrc.loadRsrc(IDS_CALDIX) ); 289 + tmp = m_destdir, tmp += "manual.htm"; 290 + createShortCut( tmp, StartMenu, rsrc.loadRsrc(IDS_HELP) ); 291 + tmp = m_destdir, tmp += "uninst.exe"; 292 + createShortCut( tmp, StartMenu, rsrc.loadRsrc(IDS_UNINSTALLER) ); 293 + } 294 + ::CoUninitialize(); 295 + 296 + // �A���C���X�g�[���������W�X�g���� 297 + kiPath uninst( m_destdir ); 298 + uninst += "uninst.exe"; 299 + 300 + kiRegKey key; 301 + if( !key.create( HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Noah", KEY_WRITE ) ) 302 + return false; 303 + key.set( "DisplayName", kiStr().loadRsrc(IDS_NOAH) ); 304 + key.set( "UninstallString", uninst ); 305 + return true; 306 + } 307 + 308 + void do_caldix() 309 + { 310 + if( IDYES==msgBox( kiStr(1000).loadRsrc(IDS_DLLINST),"Noah",MB_YESNO|MB_ICONQUESTION ) ) 311 + { 312 + kiStr cld; 313 + cld += '"'; 314 + cld += m_destdir; 315 + cld += "caldix.exe"; 316 + cld += '"'; 317 + 318 + // �v���Z�X�J�n 319 + PROCESS_INFORMATION pi; 320 + STARTUPINFO si; ki_memzero( &si,sizeof(si) ); si.cb=sizeof(si); 321 + if( !::CreateProcess( NULL,const_cast<char*>((const char*)cld), 322 + NULL,NULL,FALSE,CREATE_NEW_PROCESS_GROUP|NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi ) ) 323 + return; 324 + 325 + // �I���ҋ@ 326 + ::CloseHandle( pi.hThread ); 327 + ::WaitForSingleObject( pi.hProcess, INFINITE ); 328 + ::CloseHandle( pi.hProcess ); 329 + } 330 + } 331 + 332 + bool copy_dir2dir( kiPath& from, kiPath& to ) 333 + { 334 + if( !kiSUtil::isdir(from) ) 335 + { 336 + if( ::CopyFile( from, to, FALSE ) ) 337 + return true; 338 + if( 0==ki_strcmpi( from.ext(), "dll" ) ) 339 + return copy_later(from, to); 340 + return false; 341 + } 342 + 343 + from += '\\', to += '\\', to.mkdir(); 344 + if( !kiSUtil::isdir(to) ) 345 + return false; 346 + 347 + kiFindFile find; 348 + WIN32_FIND_DATA fd; 349 + kiPath src, dst, wild(from); wild+="\\*"; 350 + for( find.begin( wild ); find.next(&fd); ) 351 + { 352 + src = from, src+='\\', src += fd.cFileName; 353 + dst = to , dst+='\\', dst += fd.cFileName; 354 + if( !copy_dir2dir( src, dst ) ) 355 + return false; 356 + } 357 + return true; 358 + } 359 + 360 + void getPrevPos( kiPath* path ) 361 + { 362 + *path = ""; 363 + 364 + kiRegKey key; 365 + if( !key.open( HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Noah", KEY_READ ) ) 366 + return; 367 + key.get( "UninstallString", path ); 368 + path->beDirOnly(); 369 + } 370 + 371 +//-- �A���C���X�g�[�� --------- 372 + 373 + typedef bool (WINAPI * XT_IA)(); 374 + typedef void (WINAPI * XT_LS)(bool*,bool*); 375 + typedef void (WINAPI * XT_SS)(bool,bool); 376 + typedef void (WINAPI * XT_AS)(bool*); 377 + typedef void (WINAPI * XT_SAX)(const char*,bool); 378 + typedef void (WINAPI * XT_LAX)(const char*,bool*); 379 + bool unregist() 380 + { 381 + // NoahXt.dll�ɂ�鏈�� 382 + kiPath xtdll( m_destdir ); 383 + xtdll += "NoahXt.dll"; 384 + HINSTANCE hDLL = kiSUtil::loadLibrary( xtdll ); 385 + if( hDLL ) 386 + { 387 + XT_IA Init = (XT_IA)::GetProcAddress( hDLL, "Init" ); 388 + if( Init() ) 389 + { 390 + XT_SAX SaveASEx = (XT_SAX)::GetProcAddress( hDLL, "SaveASEx" ); 391 + XT_LAX LoadASEx = (XT_LAX)::GetProcAddress( hDLL, "LoadASEx" ); 392 + unregist_b2e( SaveASEx, LoadASEx ); 393 + 394 + XT_SS SaveSE = (XT_SS)::GetProcAddress( hDLL, "SaveSE" ); 395 + XT_AS SaveAssoc = (XT_AS)::GetProcAddress( hDLL, "SaveAS" ); 396 + SaveSE( m_assoc[13], m_assoc[14] ); 397 + SaveAssoc( m_assoc ); 398 + } 399 + ::FreeLibrary( hDLL ); 400 + } 401 + 402 + // �V���[�g�J�b�g 403 + ::CoInitialize( NULL ); 404 + kiPath snd(kiPath::Snd); snd += "Noah.lnk"; 405 + kiPath dsk(kiPath::Dsk); dsk += "Noah.lnk"; 406 + kiPath stt(CSIDL_PROGRAMS); stt += "Noah"; 407 + ::DeleteFile(snd), ::DeleteFile(dsk), stt.remove(); 408 + 409 + return true; 410 + } 411 + 412 + static void crack_str( char* p ) 413 + { 414 + for( ; *p; p=kiStr::next(p) ) 415 + if( *p=='.' ) 416 + *p++ = '\0'; 417 + *++p = '\0'; 418 + } 419 + 420 + void unregist_b2e( XT_SAX SaveASEx, XT_LAX LoadASEx ) 421 + { 422 + char* first_dot; 423 + kiFindFile f; 424 + WIN32_FIND_DATA fd; 425 + kiPath b2ewild(m_destdir); 426 + b2ewild.beBackSlash(true); 427 + 428 + f.begin( b2ewild+="b2e\\*.b2e" ); 429 + while( f.next(&fd) ) 430 + if( fd.cFileName[0] != '#' ) // # �t���͈��k��p 431 + { 432 + // �g���q���o�� 433 + ::CharLower( fd.cFileName ); 434 + first_dot = const_cast<char*>(kiPath::ext_all(fd.cFileName)-1); 435 + *first_dot = '\0'; 436 + crack_str( fd.cFileName ); 437 + // �֘A�Â��폜 438 + SaveASEx( fd.cFileName, false ); 439 + } 440 + SaveASEx( "7z\0", false ); 441 + } 442 + 443 + bool remove() 444 + { 445 + ::SetCurrentDirectory( kiPath(kiPath::Exe) ); 446 + 447 + kiPath tmp; 448 + m_destdir.beBackSlash(true); 449 + // �C���X�g�[���������m�����S�폜 450 + tmp=m_destdir, tmp+="Noah.exe", ::DeleteFile(tmp); 451 + tmp=m_destdir, tmp+="Noah.ini", ::DeleteFile(tmp); 452 + tmp=m_destdir, tmp+="uninst.exe", ::DeleteFile(tmp); 453 + tmp=m_destdir, tmp+="caldix.exe", ::DeleteFile(tmp); 454 + tmp=m_destdir, tmp+="caldix.ini", ::DeleteFile(tmp); 455 + tmp=m_destdir, tmp+="ReadMe.txt", ::DeleteFile(tmp); 456 + tmp=m_destdir, tmp+="manual.htm", ::DeleteFile(tmp); 457 + tmp=m_destdir, tmp+="html", tmp.remove(); 458 + tmp=m_destdir, tmp+="b2e\\jak.b2e", ::DeleteFile(tmp); 459 + tmp=m_destdir, tmp+="b2e\\aboutb2e.txt",::DeleteFile(tmp); 460 + tmp=m_destdir, tmp+="b2e", ::RemoveDirectory(tmp); 461 + tmp=m_destdir, tmp+="NoahXt.dll", ::DeleteFile(tmp); 462 + ::RemoveDirectory(m_destdir); 463 + // NoahXt.dll�͍ċN����ɉ����m��Ȃ� 464 + if( kiSUtil::exist(tmp) ) 465 + { 466 + kill_later(tmp); 467 + tmp.beDirOnly(); 468 + tmp.beBackSlash(false); 469 + kill_later(tmp); 470 + } 471 + 472 + return true; 473 + } 474 + 475 + void kill_later( const char* pszFile ) 476 + { 477 + // "MoveFileEx Not Supported in Windows 95 But Functionality Is" 478 + if( ::MoveFileEx( pszFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT ) ) 479 + return; 480 + char shortPath[MAX_PATH]; 481 + ::GetShortPathName( pszFile, shortPath, sizeof(shortPath) ); 482 + 483 + kiPath inifile( kiPath::Win ); inifile+="wininit.ini"; 484 + 485 + char buf[30000]; 486 + ::GetPrivateProfileSection( "Rename", buf, 30000, inifile ); 487 + char* p = buf; 488 + while(*p)while(*p++); 489 + 490 + ::lstrcpy( p, "NUL=" ); 491 + ::lstrcat( p, shortPath ); 492 + while(*p++); 493 + *p='\0'; 494 + 495 + ::WritePrivateProfileSection( "Rename", buf, inifile ); 496 + 497 + // �m���ɏ������� 498 + ::WritePrivateProfileString( NULL, NULL, NULL, inifile ); 499 + } 500 + 501 + bool copy_later( const char* from, const char* to ) 502 + { 503 + char from_temp[MAX_PATH]; 504 + ::lstrcpy( from_temp, to ); 505 + ::lstrcat( from_temp, ".new" ); 506 + if( !::CopyFile( from, from_temp, FALSE ) ) 507 + return false; 508 + 509 + char shortFrom[MAX_PATH]; 510 + ::GetShortPathName( from_temp, shortFrom, sizeof(shortFrom) ); 511 + char shortTo[MAX_PATH]; 512 + ::GetShortPathName( to, shortTo, sizeof(shortTo) ); 513 + kiPath inifile( kiPath::Win ); inifile+="wininit.ini"; 514 + 515 + char buf[30000]; 516 + ::GetPrivateProfileSection( "Rename", buf, 30000, inifile ); 517 + char* p = buf; 518 + while(*p)while(*p++); 519 + 520 + ::lstrcpy( p, "NUL=" ); 521 + ::lstrcat( p, shortTo ); 522 + while(*p++); 523 + *p++='\r',*p++='\n'; 524 + ::lstrcpy( p, shortTo ); 525 + ::lstrcat( p, "=" ); 526 + ::lstrcat( p, shortFrom ); 527 + while(*p++); 528 + *p='\0'; 529 + 530 + ::WritePrivateProfileSection( "Rename", buf, inifile ); 531 + 532 + // �m���ɏ������� 533 + ::WritePrivateProfileString( NULL, NULL, NULL, inifile ); 534 + return true; 535 + } 536 +}; 537 + 538 +void kilib_create_new_app() 539 +{ 540 + new CKInstApp; 541 +}
Added uninst/kinst.dsp version [bbc78b6a1b23b544]
1 +# Microsoft Developer Studio Project File - Name="kinst" - Package Owner=<4> 2 +# Microsoft Developer Studio Generated Build File, Format Version 6.00 3 +# ** �ҏW���Ȃ��ł������� ** 4 + 5 +# TARGTYPE "Win32 (x86) Application" 0x0101 6 + 7 +CFG=kinst - Win32 Debug 8 +!MESSAGE ����͗L����Ҳ�̧�قł͂���܂���B ������ۼު�Ă�����ނ��邽�߂ɂ� NMAKE ���g�p���Ă��������B 9 +!MESSAGE [Ҳ�̧�ق̴���߰�] ����ނ��g�p���Ď��s���Ă������� 10 +!MESSAGE 11 +!MESSAGE NMAKE /f "kinst.mak". 12 +!MESSAGE 13 +!MESSAGE NMAKE �̎��s���ɍ\�����w��ł��܂� 14 +!MESSAGE ����� ײݏ��ϸۂ̐ݒ���`���܂��B��: 15 +!MESSAGE 16 +!MESSAGE NMAKE /f "kinst.mak" CFG="kinst - Win32 Debug" 17 +!MESSAGE 18 +!MESSAGE �I���\������� Ӱ��: 19 +!MESSAGE 20 +!MESSAGE "kinst - Win32 Release" ("Win32 (x86) Application" �p) 21 +!MESSAGE "kinst - Win32 Debug" ("Win32 (x86) Application" �p) 22 +!MESSAGE 23 + 24 +# Begin Project 25 +# PROP AllowPerConfigDependencies 0 26 +# PROP Scc_ProjName "kinst" 27 +# PROP Scc_LocalPath ".." 28 +CPP=cl.exe 29 +MTL=midl.exe 30 +RSC=rc.exe 31 + 32 +!IF "$(CFG)" == "kinst - Win32 Release" 33 + 34 +# PROP BASE Use_MFC 0 35 +# PROP BASE Use_Debug_Libraries 0 36 +# PROP BASE Output_Dir "Release" 37 +# PROP BASE Intermediate_Dir "Release" 38 +# PROP BASE Target_Dir "" 39 +# PROP Use_MFC 0 40 +# PROP Use_Debug_Libraries 0 41 +# PROP Output_Dir "../tmp/relui" 42 +# PROP Intermediate_Dir "../tmp/relui" 43 +# PROP Ignore_Export_Lib 0 44 +# PROP Target_Dir "" 45 +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c 46 +# ADD CPP /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c 47 +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 48 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 49 +# ADD BASE RSC /l 0x411 /d "NDEBUG" 50 +# ADD RSC /l 0x411 /d "NDEBUG" 51 +BSC32=bscmake.exe 52 +# ADD BASE BSC32 /nologo 53 +# ADD BSC32 /nologo 54 +LINK32=link.exe 55 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 56 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib /nologo /entry:"kilib_startUp" /subsystem:windows /machine:I386 /out:"../Release/uninst.exe" /opt:"nowin98" 57 +# SUBTRACT LINK32 /pdb:none 58 + 59 +!ELSEIF "$(CFG)" == "kinst - Win32 Debug" 60 + 61 +# PROP BASE Use_MFC 0 62 +# PROP BASE Use_Debug_Libraries 1 63 +# PROP BASE Output_Dir "Debug" 64 +# PROP BASE Intermediate_Dir "Debug" 65 +# PROP BASE Target_Dir "" 66 +# PROP Use_MFC 0 67 +# PROP Use_Debug_Libraries 1 68 +# PROP Output_Dir "../tmp/dbgui" 69 +# PROP Intermediate_Dir "../tmp/dbgui" 70 +# PROP Ignore_Export_Lib 0 71 +# PROP Target_Dir "" 72 +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c 73 +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "KILIB_LOG" /Yu"stdafx.h" /FD /GZ /c 74 +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 75 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 76 +# ADD BASE RSC /l 0x411 /d "_DEBUG" 77 +# ADD RSC /l 0x411 /d "_DEBUG" 78 +BSC32=bscmake.exe 79 +# ADD BASE BSC32 /nologo 80 +# ADD BSC32 /nologo 81 +LINK32=link.exe 82 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept 83 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib /nologo /entry:"kilib_startUp" /subsystem:windows /debug /machine:I386 /out:"../Debug/uninst.exe" /pdbtype:sept 84 + 85 +!ENDIF 86 + 87 +# Begin Target 88 + 89 +# Name "kinst - Win32 Release" 90 +# Name "kinst - Win32 Debug" 91 +# Begin Group "Source Files" 92 + 93 +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 94 +# Begin Source File 95 + 96 +SOURCE=.\kinst.cpp 97 +# End Source File 98 +# Begin Source File 99 + 100 +SOURCE=.\kinst.rc 101 +# End Source File 102 +# Begin Source File 103 + 104 +SOURCE=.\StdAfx.cpp 105 +# ADD CPP /Yc"stdafx.h" 106 +# End Source File 107 +# End Group 108 +# Begin Group "Header Files" 109 + 110 +# PROP Default_Filter "h;hpp;hxx;hm;inl" 111 +# Begin Source File 112 + 113 +SOURCE=.\resource.h 114 +# End Source File 115 +# Begin Source File 116 + 117 +SOURCE=.\StdAfx.h 118 +# End Source File 119 +# End Group 120 +# Begin Group "Resource Files" 121 + 122 +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 123 +# Begin Source File 124 + 125 +SOURCE=.\del.ico 126 +# End Source File 127 +# Begin Source File 128 + 129 +SOURCE=..\noah.ico 130 +# End Source File 131 +# Begin Source File 132 + 133 +SOURCE=.\noah.ico 134 +# End Source File 135 +# Begin Source File 136 + 137 +SOURCE=.\real.ico 138 +# End Source File 139 +# End Group 140 +# Begin Group "kilib" 141 + 142 +# PROP Default_Filter "" 143 +# Begin Source File 144 + 145 +SOURCE=..\kilib\kilib.h 146 +# End Source File 147 +# Begin Source File 148 + 149 +SOURCE=..\kilib\kilibext.h 150 +# End Source File 151 +# Begin Source File 152 + 153 +SOURCE=..\kilib\kl_app.cpp 154 +# End Source File 155 +# Begin Source File 156 + 157 +SOURCE=..\kilib\kl_app.h 158 +# End Source File 159 +# Begin Source File 160 + 161 +SOURCE=..\kilib\kl_carc.cpp 162 +# End Source File 163 +# Begin Source File 164 + 165 +SOURCE=..\kilib\kl_carc.h 166 +# End Source File 167 +# Begin Source File 168 + 169 +SOURCE=..\kilib\kl_cmd.cpp 170 +# End Source File 171 +# Begin Source File 172 + 173 +SOURCE=..\kilib\kl_cmd.h 174 +# End Source File 175 +# Begin Source File 176 + 177 +SOURCE=..\kilib\kl_dnd.cpp 178 +# End Source File 179 +# Begin Source File 180 + 181 +SOURCE=..\kilib\kl_dnd.h 182 +# End Source File 183 +# Begin Source File 184 + 185 +SOURCE=..\kilib\kl_file.cpp 186 +# End Source File 187 +# Begin Source File 188 + 189 +SOURCE=..\kilib\kl_file.h 190 +# End Source File 191 +# Begin Source File 192 + 193 +SOURCE=..\kilib\kl_find.cpp 194 +# End Source File 195 +# Begin Source File 196 + 197 +SOURCE=..\kilib\kl_find.h 198 +# End Source File 199 +# Begin Source File 200 + 201 +SOURCE=..\kilib\kl_misc.h 202 +# End Source File 203 +# Begin Source File 204 + 205 +SOURCE=..\kilib\kl_reg.cpp 206 +# End Source File 207 +# Begin Source File 208 + 209 +SOURCE=..\kilib\kl_reg.h 210 +# End Source File 211 +# Begin Source File 212 + 213 +SOURCE=..\kilib\kl_rythp.cpp 214 +# End Source File 215 +# Begin Source File 216 + 217 +SOURCE=..\kilib\kl_rythp.h 218 +# End Source File 219 +# Begin Source File 220 + 221 +SOURCE=..\kilib\kl_str.cpp 222 +# End Source File 223 +# Begin Source File 224 + 225 +SOURCE=..\kilib\kl_str.h 226 +# End Source File 227 +# Begin Source File 228 + 229 +SOURCE=..\kilib\kl_wcmn.cpp 230 +# End Source File 231 +# Begin Source File 232 + 233 +SOURCE=..\kilib\kl_wcmn.h 234 +# End Source File 235 +# Begin Source File 236 + 237 +SOURCE=..\kilib\kl_wnd.cpp 238 +# End Source File 239 +# Begin Source File 240 + 241 +SOURCE=..\kilib\kl_wnd.h 242 +# End Source File 243 +# End Group 244 +# End Target 245 +# End Project
Added uninst/kinst.plg version [53de5328b4b3ff47]
1 +<html> 2 +<body> 3 +<pre> 4 +<h1>����ނ�۸�</h1> 5 +<h3> 6 +--------------------�\��: kinst - Win32 Release-------------------- 7 +</h3> 8 +<h3>����� ײ�</h3> 9 +Creating command line "rc.exe /l 0x411 /fo"../tmp/relui/kinst.res" /d "NDEBUG" "C:\Develop\Projects\Noah\uninst\kinst.rc"" 10 +�ꎞ̧�� "C:\Users\kinaba\AppData\Local\Temp\RSP8E45.tmp" ���쐬���A���̓��e���L�^���܂� 11 +[ 12 +/nologo /ML /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Fp"../tmp/relui/kinst.pch" /Yu"stdafx.h" /Fo"../tmp/relui/" /Fd"../tmp/relui/" /FD /c 13 +"C:\Develop\Projects\Noah\uninst\kinst.cpp" 14 +"C:\Develop\Projects\Noah\kilib\kl_app.cpp" 15 +"C:\Develop\Projects\Noah\kilib\kl_carc.cpp" 16 +"C:\Develop\Projects\Noah\kilib\kl_cmd.cpp" 17 +"C:\Develop\Projects\Noah\kilib\kl_dnd.cpp" 18 +"C:\Develop\Projects\Noah\kilib\kl_file.cpp" 19 +"C:\Develop\Projects\Noah\kilib\kl_find.cpp" 20 +"C:\Develop\Projects\Noah\kilib\kl_reg.cpp" 21 +"C:\Develop\Projects\Noah\kilib\kl_rythp.cpp" 22 +"C:\Develop\Projects\Noah\kilib\kl_str.cpp" 23 +"C:\Develop\Projects\Noah\kilib\kl_wcmn.cpp" 24 +"C:\Develop\Projects\Noah\kilib\kl_wnd.cpp" 25 +] 26 +Creating command line "cl.exe @C:\Users\kinaba\AppData\Local\Temp\RSP8E45.tmp" 27 +�ꎞ̧�� "C:\Users\kinaba\AppData\Local\Temp\RSP8E46.tmp" ���쐬���A���̓��e���L�^���܂� 28 +[ 29 +/nologo /ML /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Fp"../tmp/relui/kinst.pch" /Yc"stdafx.h" /Fo"../tmp/relui/" /Fd"../tmp/relui/" /FD /c 30 +"C:\Develop\Projects\Noah\uninst\StdAfx.cpp" 31 +] 32 +Creating command line "cl.exe @C:\Users\kinaba\AppData\Local\Temp\RSP8E46.tmp" 33 +�ꎞ̧�� "C:\Users\kinaba\AppData\Local\Temp\RSP8E57.tmp" ���쐬���A���̓��e���L�^���܂� 34 +[ 35 +kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib /nologo /entry:"kilib_startUp" /subsystem:windows /incremental:no /pdb:"../tmp/relui/uninst.pdb" /machine:I386 /out:"../Release/uninst.exe" /opt:"nowin98" 36 +\Develop\Projects\Noah\tmp\relui\kinst.obj 37 +\Develop\Projects\Noah\tmp\relui\StdAfx.obj 38 +\Develop\Projects\Noah\tmp\relui\kl_app.obj 39 +\Develop\Projects\Noah\tmp\relui\kl_carc.obj 40 +\Develop\Projects\Noah\tmp\relui\kl_cmd.obj 41 +\Develop\Projects\Noah\tmp\relui\kl_dnd.obj 42 +\Develop\Projects\Noah\tmp\relui\kl_file.obj 43 +\Develop\Projects\Noah\tmp\relui\kl_find.obj 44 +\Develop\Projects\Noah\tmp\relui\kl_reg.obj 45 +\Develop\Projects\Noah\tmp\relui\kl_rythp.obj 46 +\Develop\Projects\Noah\tmp\relui\kl_str.obj 47 +\Develop\Projects\Noah\tmp\relui\kl_wcmn.obj 48 +\Develop\Projects\Noah\tmp\relui\kl_wnd.obj 49 +\Develop\Projects\Noah\tmp\relui\kinst.res 50 +] 51 +����� ײ� "link.exe @C:\Users\kinaba\AppData\Local\Temp\RSP8E57.tmp" �̍쐬�� 52 +<h3>����߯� ����</h3> 53 +ؿ������ْ߲�... 54 +���ْ߲�... 55 +StdAfx.cpp 56 +���ْ߲�... 57 +kinst.cpp 58 +kl_app.cpp 59 +kl_carc.cpp 60 +kl_cmd.cpp 61 +kl_dnd.cpp 62 +kl_file.cpp 63 +kl_find.cpp 64 +kl_reg.cpp 65 +kl_rythp.cpp 66 +kl_str.cpp 67 +kl_wcmn.cpp 68 +kl_wnd.cpp 69 +���ނ���... 70 +�ݸ��... 71 + 72 + 73 + 74 +<h3>����</h3> 75 +uninst.exe - �װ 0�A�x�� 0 76 +</pre> 77 +</body> 78 +</html>
Added uninst/kinst.rc version [e476e025a2369adb]
1 +//Microsoft Developer Studio generated resource script. 2 +// 3 +#include "resource.h" 4 + 5 +#define APSTUDIO_READONLY_SYMBOLS 6 +///////////////////////////////////////////////////////////////////////////// 7 +// 8 +// Generated from the TEXTINCLUDE 2 resource. 9 +// 10 +#include "afxres.h" 11 + 12 +///////////////////////////////////////////////////////////////////////////// 13 +#undef APSTUDIO_READONLY_SYMBOLS 14 + 15 +///////////////////////////////////////////////////////////////////////////// 16 +// ���{�� resources 17 + 18 +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) 19 +#ifdef _WIN32 20 +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT 21 +#pragma code_page(932) 22 +#endif //_WIN32 23 + 24 +///////////////////////////////////////////////////////////////////////////// 25 +// 26 +// Dialog 27 +// 28 + 29 +IDD_MAIN DIALOG DISCARDABLE 0, 0, 283, 195 30 +STYLE DS_ABSALIGN | DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | 31 + WS_CAPTION | WS_SYSMENU 32 +CAPTION "���k�𓀃\�t�g�uNoah�v�̃C���X�g�[��" 33 +FONT 9, "�l�r �o�S�V�b�N" 34 +BEGIN 35 + ICON IDI_NOAH,IDC_STATIC,7,9,20,20,SS_REALSIZEIMAGE 36 + LTEXT "�@Noah�̂����p���肪�Ƃ��������܂��B\n�u�J�n�v�{�^���������ƁANoah�����̃R���s���[�^�փC���X�g�[�����܂��B\n�u���~�v�{�^���������ƍ�Ƃ͍s���܂���B", 37 + IDC_STATIC,32,7,238,28,SS_SUNKEN | WS_TABSTOP 38 + DEFPUSHBUTTON "�J�n",IDOK,130,42,67,22 39 + PUSHBUTTON "���~",IDCANCEL,201,42,67,21 40 + GROUPBOX "�ڍאݒ�i�㋉�Ҍ����j",IDC_STATIC,7,80,269,108 41 + CTEXT "���ɂ����߂̐ݒ�ɂȂ��Ă���܂��̂ŁA�ڍאݒ�͕ύX�����Ƃ����͂���܂���B", 42 + IDC_STATIC,16,91,253,19,SS_CENTERIMAGE | SS_SUNKEN 43 + LTEXT "�֘A�t���F",IDC_STATIC,29,117,31,8 44 + CONTROL "LZH",IDC_LZH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,63, 45 + 116,22,10 46 + CONTROL "ZIP",IDC_ZIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,63, 47 + 128,20,10 48 + CONTROL "CAB",IDC_CAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,88, 49 + 116,25,10 50 + CONTROL "RAR",IDC_RAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,88, 51 + 128,24,10 52 + CONTROL "TAR",IDC_TAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,116, 53 + 116,24,10 54 + CONTROL "YZ1",IDC_YZ1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,116, 55 + 128,21,10 56 + CONTROL "GCA",IDC_GCA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143, 57 + 116,25,10 58 + CONTROL "ARJ",IDC_ARJ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143, 59 + 128,24,10 60 + CONTROL "BGA",IDC_BGA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,171, 61 + 116,25,10 62 + CONTROL "ACE",IDC_ACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,171, 63 + 128,24,10 64 + CONTROL "CPT",IDC_CPT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,199, 65 + 116,24,10 66 + CONTROL "JAK",IDC_JAK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,199, 67 + 128,23,10 68 + CONTROL "7Z",IDC_7Z,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,228, 69 + 116,23,10 70 + LTEXT "�V�F���g���F",IDC_STATIC,24,143,36,8 71 + CONTROL "�����Ɉ��k",IDC_CMP,"Button",BS_AUTOCHECKBOX | 72 + WS_TABSTOP,63,142,47,10 73 + CONTROL "�����ɉ�",IDC_MLT,"Button",BS_AUTOCHECKBOX | 74 + WS_TABSTOP,116,142,47,10 75 + LTEXT "�V���[�g�J�b�g�F",IDC_STATIC,18,157,42,8 76 + CONTROL "����",IDC_SND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,63, 77 + 156,23,10 78 + CONTROL "�f�X�N�g�b�v",IDC_DSK,"Button",BS_AUTOCHECKBOX | 79 + WS_TABSTOP,116,156,46,10 80 + PUSHBUTTON "�SOFF",IDC_ALL,239,151,24,14 81 + LTEXT "�C���X�g�[����F",IDC_STATIC,13,172,47,8 82 + EDITTEXT IDC_INSTALLTO,62,171,176,12,ES_AUTOHSCROLL 83 + PUSHBUTTON "�w��...",IDC_REF,241,170,22,14 84 +END 85 + 86 + 87 +///////////////////////////////////////////////////////////////////////////// 88 +// 89 +// DESIGNINFO 90 +// 91 + 92 +#ifdef APSTUDIO_INVOKED 93 +GUIDELINES DESIGNINFO DISCARDABLE 94 +BEGIN 95 + IDD_MAIN, DIALOG 96 + BEGIN 97 + LEFTMARGIN, 7 98 + RIGHTMARGIN, 276 99 + TOPMARGIN, 7 100 + BOTTOMMARGIN, 188 101 + END 102 +END 103 +#endif // APSTUDIO_INVOKED 104 + 105 + 106 +#ifdef APSTUDIO_INVOKED 107 +///////////////////////////////////////////////////////////////////////////// 108 +// 109 +// TEXTINCLUDE 110 +// 111 + 112 +1 TEXTINCLUDE DISCARDABLE 113 +BEGIN 114 + "resource.h\0" 115 +END 116 + 117 +2 TEXTINCLUDE DISCARDABLE 118 +BEGIN 119 + "#include ""afxres.h""\r\n" 120 + "\0" 121 +END 122 + 123 +3 TEXTINCLUDE DISCARDABLE 124 +BEGIN 125 + "\r\n" 126 + "\0" 127 +END 128 + 129 +#endif // APSTUDIO_INVOKED 130 + 131 + 132 +///////////////////////////////////////////////////////////////////////////// 133 +// 134 +// Icon 135 +// 136 + 137 +// Icon with lowest ID value placed first to ensure application icon 138 +// remains consistent on all systems. 139 +IDI_MAIN ICON DISCARDABLE "del.ico" 140 +IDI_NOAH ICON DISCARDABLE "..\\noah.ico" 141 + 142 +///////////////////////////////////////////////////////////////////////////// 143 +// 144 +// String Table 145 +// 146 + 147 +STRINGTABLE DISCARDABLE 148 +BEGIN 149 + IDS_DIR "�����őI�t�H���_�̉���""Noah""�t�H���_������ĉ𓀂��܂��B" 150 + IDS_BADPATH "�C���X�g�[����́uC:\\Noah�v�̂悤�ɁA�h���C�u���܂Ŋ܂߂Ďw�肵�Ă��������B" 151 + IDS_COPYFAIL "�t�@�C���̃R�s�[�Ɏ��s���܂����B�C���X�g�[���ł��܂���ł����B" 152 + IDS_REGISTFAIL "�o�^�Ɏ��s���܂����B�A���C���X�g�[���͎蓮�ōs���Ă��������B" 153 + IDS_NOAH "���k�𓀃\�t�g Noah" 154 + IDS_HELP "Noah ���p�����" 155 + IDS_UNINSTALLER "Noah �A���C���X�g�[��" 156 + IDS_CALDIX "DLL�����_�E�����[�h" 157 + IDS_UNINSTOK "Noah�̃A���C���X�g�[�����J�n���Ă�낵���ł����H" 158 + IDS_INSTALLFINISH "�C���X�g�[���������܂����B" 159 + IDS_DLLINST "Noah�{�̂̃C���X�g�[�����������܂����B���ɁANoah�̎��s�ɕK�v�ȁuDLL�v�������_�E�����[�h���܂����H�i���̍�Ƃ͌�ł��ł��܂��B�j" 160 + IDS_UNINSTALLFINISH "�A���C���X�g�[���������܂����B" 161 +END 162 + 163 +#endif // ���{�� resources 164 +///////////////////////////////////////////////////////////////////////////// 165 + 166 + 167 +///////////////////////////////////////////////////////////////////////////// 168 +// �p�� (��ض) resources 169 + 170 +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 171 +#ifdef _WIN32 172 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 173 +#pragma code_page(1252) 174 +#endif //_WIN32 175 + 176 +///////////////////////////////////////////////////////////////////////////// 177 +// 178 +// Dialog 179 +// 180 + 181 +IDD_MAIN DIALOG DISCARDABLE 0, 0, 283, 177 182 +STYLE DS_ABSALIGN | DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | 183 + WS_CAPTION | WS_SYSMENU 184 +CAPTION "Install Noah" 185 +FONT 9, "MS Sans Serif" 186 +BEGIN 187 + ICON IDI_NOAH,-1,7,9,20,20,SS_REALSIZEIMAGE 188 + LTEXT " Thank you for downloading Noah!\nClick the button 'Begin' if you are ready to install.\n* Before installation, you should terminate older version Noah.", 189 + -1,32,7,238,28,SS_SUNKEN | WS_TABSTOP 190 + DEFPUSHBUTTON "&Begin",IDOK,130,42,67,22 191 + PUSHBUTTON "&Cancel",IDCANCEL,201,42,67,21 192 + GROUPBOX "Advanced",-1,7,79,269,91 193 + LTEXT "Association:",-1,23,94,41,8 194 + CONTROL "LZH",IDC_LZH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,67, 195 + 94,28,10 196 + CONTROL "ZIP",IDC_ZIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,67, 197 + 106,26,10 198 + CONTROL "CAB",IDC_CAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,95, 199 + 94,30,10 200 + CONTROL "RAR",IDC_RAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,95, 201 + 106,30,10 202 + CONTROL "TAR",IDC_TAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125, 203 + 94,29,10 204 + CONTROL "YZ1",IDC_YZ1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125, 205 + 106,27,10 206 + CONTROL "GCA",IDC_GCA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,154, 207 + 94,30,10 208 + CONTROL "ARJ",IDC_ARJ,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,154, 209 + 106,29,10 210 + CONTROL "BGA",IDC_BGA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,185, 211 + 94,30,10 212 + CONTROL "ACE",IDC_ACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,185, 213 + 106,29,10 214 + CONTROL "CPT",IDC_CPT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,216, 215 + 94,29,10 216 + CONTROL "JAK",IDC_JAK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,216, 217 + 106,29,10 218 + LTEXT "Shell Extension:",-1,13,120,51,8 219 + CONTROL "Compress Here",IDC_CMP,"Button",BS_AUTOCHECKBOX | 220 + WS_TABSTOP,67,120,71,10 221 + CONTROL "Extract Here",IDC_MLT,"Button",BS_AUTOCHECKBOX | 222 + WS_TABSTOP,147,120,66,10 223 + LTEXT "ShortCut:",-1,32,135,32,8 224 + CONTROL "SendTo",IDC_SND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, 225 + 67,134,44,10 226 + CONTROL "Desktop",IDC_DSK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, 227 + 122,134,51,10 228 + PUSHBUTTON "all &off",IDC_ALL,244,129,22,14 229 + LTEXT "Install to:",-1,32,150,29,8 230 + EDITTEXT IDC_INSTALLTO,67,149,176,12,ES_AUTOHSCROLL 231 + PUSHBUTTON "&ref...",IDC_REF,247,148,20,14 232 +END 233 + 234 + 235 +///////////////////////////////////////////////////////////////////////////// 236 +// 237 +// DESIGNINFO 238 +// 239 + 240 +#ifdef APSTUDIO_INVOKED 241 +GUIDELINES DESIGNINFO DISCARDABLE 242 +BEGIN 243 + IDD_MAIN, DIALOG 244 + BEGIN 245 + LEFTMARGIN, 7 246 + RIGHTMARGIN, 276 247 + TOPMARGIN, 7 248 + BOTTOMMARGIN, 170 249 + END 250 +END 251 +#endif // APSTUDIO_INVOKED 252 + 253 + 254 +///////////////////////////////////////////////////////////////////////////// 255 +// 256 +// String Table 257 +// 258 + 259 +STRINGTABLE DISCARDABLE 260 +BEGIN 261 + IDS_DIR "Select Target Directory." 262 + IDS_BADPATH "Target Directory must be specified in full path." 263 + IDS_COPYFAIL "Failed To Copy Files. Installation Aborted." 264 + IDS_REGISTFAIL "Failed." 265 + IDS_NOAH "Noah Archiver" 266 + IDS_HELP "Noah Manual" 267 + IDS_UNINSTALLER "Noah Uninstall" 268 + IDS_CALDIX "DLL Download" 269 + IDS_UNINSTOK "Do you want to uninstall Noah?" 270 + IDS_INSTALLFINISH "Finished installing Noah." 271 + IDS_DLLINST "Download DLLs from Internet ? ( You can do this also after installation. )" 272 + IDS_UNINSTALLFINISH "Uninstallation finished." 273 +END 274 + 275 +#endif // �p�� (��ض) resources 276 +///////////////////////////////////////////////////////////////////////////// 277 + 278 + 279 + 280 +#ifndef APSTUDIO_INVOKED 281 +///////////////////////////////////////////////////////////////////////////// 282 +// 283 +// Generated from the TEXTINCLUDE 3 resource. 284 +// 285 + 286 + 287 +///////////////////////////////////////////////////////////////////////////// 288 +#endif // not APSTUDIO_INVOKED 289 +
Added uninst/resource.h version [ef72d68202c16529]
1 +//{{NO_DEPENDENCIES}} 2 +// Microsoft Developer Studio generated include file. 3 +// Used by kinst.rc 4 +// 5 +#define IDS_DIR 1 6 +#define IDS_BADPATH 2 7 +#define IDS_COPYFAIL 3 8 +#define IDS_REGISTFAIL 4 9 +#define IDS_NOAH 5 10 +#define IDS_HELP 6 11 +#define IDS_UNINSTALLER 7 12 +#define IDS_CALDIX 8 13 +#define IDS_UNINSTOK 9 14 +#define IDS_INSTALLFINISH 10 15 +#define IDS_DLLINST 11 16 +#define IDS_UNINSTALLFINISH 12 17 +#define IDD_DIALOG1 101 18 +#define IDD_MAIN 101 19 +#define IDI_MAIN 102 20 +#define IDI_NOAH 103 21 +#define IDC_LZH 1001 22 +#define IDC_ZIP 1002 23 +#define IDC_CAB 1003 24 +#define IDC_RAR 1004 25 +#define IDC_TAR 1005 26 +#define IDC_YZ1 1006 27 +#define IDC_GCA 1007 28 +#define IDC_ARJ 1008 29 +#define IDC_BGA 1009 30 +#define IDC_ACE 1010 31 +#define IDC_CPT 1011 32 +#define IDC_JAK 1012 33 +#define IDC_7Z 1013 34 +#define IDC_CMP 1014 35 +#define IDC_MLT 1015 36 +#define IDC_SND 1016 37 +#define IDC_DSK 1017 38 +#define IDC_STT 1018 39 +#define IDC_INSTALLTO 1019 40 +#define IDC_REF 1020 41 +#define IDC_ALL 1022 42 + 43 +// Next default values for new objects 44 +// 45 +#ifdef APSTUDIO_INVOKED 46 +#ifndef APSTUDIO_READONLY_SYMBOLS 47 +#define _APS_NEXT_RESOURCE_VALUE 104 48 +#define _APS_NEXT_COMMAND_VALUE 40001 49 +#define _APS_NEXT_CONTROL_VALUE 1024 50 +#define _APS_NEXT_SYMED_VALUE 101 51 +#endif 52 +#endif