2024-12-21 10:04:04 +08:00
# include "stdafx.h"
# include "NxFileSystemTool.h"
# include "NxFileSystemToolDlg.h"
# include "FileIOThread.h"
# include ".\NxFileSystemTool.h"
# include "StringUtil.h"
# include "BugReporter.h"
# ifdef _DEBUG
# define new DEBUG_NEW
# endif
# pragma comment(lib,"dbghelp.lib")
/*
# ifdef _DEBUG
# pragma comment( lib, "zlib_MTd.lib" )
# pragma comment( lib, "EtFileSystem_MTd.lib" )
# else
# pragma comment( lib, "zlib_MT.lib" )
# pragma comment( lib, "EtFileSystem_MT.lib" )
# endif
*/
// CNxFileSystemToolApp
BEGIN_MESSAGE_MAP ( CNxFileSystemToolApp , CWinApp )
END_MESSAGE_MAP ( )
// CNxFileSystemToolApp <20> <> <EFBFBD> <EFBFBD>
CNxFileSystemToolApp : : CNxFileSystemToolApp ( )
{
// TODO: <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ڵ带 <20> ߰<EFBFBD> <DFB0> մϴ<D5B4> .
// InitInstance<63> <65> <20> <> <EFBFBD> <EFBFBD> <20> ߿<EFBFBD> <DFBF> <EFBFBD> <20> ʱ<EFBFBD> ȭ <20> ۾<EFBFBD> <DBBE> <EFBFBD> <20> <> ġ<EFBFBD> մϴ<D5B4> .
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ) ; //
_CrtMemDumpAllObjectsSince ( 0 ) ;
//_CrtSetBreakAlloc(15359);
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> CNxFileSystemToolApp <20> <> ü<EFBFBD> Դϴ<D4B4> .
CNxFileSystemToolApp theApp ;
// CNxFileSystemToolApp <20> ʱ<EFBFBD> ȭ
BOOL CNxFileSystemToolApp : : InitInstance ( )
{
BugReporter : : ReportingServerInfo info ;
gs_BugReporter . SetReportingServerInfo ( info ) ;
gs_BugReporter . Enable ( ) ;
CString szCmdLine ;
szCmdLine = m_lpCmdLine ;
if ( szCmdLine . IsEmpty ( ) = = FALSE )
{
tstring szAgrv = m_lpCmdLine ;
std : : vector < tstring > tokens ;
# ifdef _UNICODE
TokenizeW ( szAgrv , tokens , _T ( " " ) ) ;
# else
TokenizeA ( szAgrv , tokens , _T ( " " ) ) ;
# endif
bool bResult = false ;
std : : string str ;
# ifdef _UNICODE
ToMultiString ( tokens [ 0 ] , str ) ;
# else
str = tokens [ 0 ] ;
# endif
// <20> Ķ<EFBFBD> <C4B6> <EFBFBD> <EFBFBD> <EFBFBD>
// -capa_pak Data 50 <20> <> ŷ<EFBFBD> <C5B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ƿ<EFBFBD> Dz<EFBFBD> <C7B2> <EFBFBD> <EFBFBD>
// -folder_pak <20> <> ŷ<EFBFBD> <C5B7> <EFBFBD> <EFBFBD> xml <20> ƿ<EFBFBD> Dz<EFBFBD> <C7B2> <EFBFBD> <EFBFBD>
if ( str = = " -capacity_pack " )
{
return _CapaPacking ( tokens ) ;
}
else if ( str = = " -folder_pack " )
{
return _FolderPacking ( tokens ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> α <CEB1> <20> Ŵ<EFBFBD> <C5B4> 佺Ʈ<E4BDBA> <C6AE> ComCtl32.dll <20> <> <EFBFBD> <EFBFBD> 6 <20> ̻<EFBFBD> <CCBB> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ͽ<EFBFBD> <20> <> <EFBFBD> ־<EFBFBD> <20> <> Ÿ<EFBFBD> <C5B8> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϵ<EFBFBD> <CFB5> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> , Windows XP <20> <EFBFBD> <20> ݵ<EFBFBD> <DDB5> <EFBFBD> InitCommonControls()<29> <> <20> ʿ<EFBFBD> <CABF> մϴ<D5B4> .
// InitCommonControls()<29> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> â<> <C3A2> <20> <> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> .
InitCommonControls ( ) ;
CWinApp : : InitInstance ( ) ;
AfxEnableControlContainer ( ) ;
// ǥ<> <C7A5> <20> ʱ<EFBFBD> ȭ
// <20> ̵<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ʰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ũ<> ⸦ <20> <> <EFBFBD> ̷<EFBFBD> <CCB7> <EFBFBD>
// <20> Ʒ <EFBFBD> <C6B7> <EFBFBD> <EFBFBD> <EFBFBD> <20> ʿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> Ư<> <C6AF> <20> ʱ<EFBFBD> ȭ <20> <> ƾ<EFBFBD> <C6BE> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ؾ<EFBFBD> <20> մϴ<D5B4> .
// <20> ش<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ʈ<EFBFBD> <C6AE> Ű<> <C5B0> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ͻʽ ÿ<CABD> .
// TODO: <20> <> <20> <> <EFBFBD> ڿ<EFBFBD> <DABF> <EFBFBD> ȸ<> <C8B8> <20> Ǵ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ̸<EFBFBD> <CCB8> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ؾ<EFBFBD> <20> մϴ<D5B4> .
SetRegistryKey ( _T ( " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> α <CEB1> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 翡<EFBFBD> <E7BFA1> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> α <CEB1> " ) ) ;
CNxFileSystemToolDlg dlg ;
m_pMainWnd = & dlg ;
INT_PTR nResponse = dlg . DoModal ( ) ;
if ( nResponse = = IDOK )
{
// TODO: <20> <> <EFBFBD> <20> <> ȭ <20> <> <EFBFBD> ڰ<EFBFBD> Ȯ<> <C8AE> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ó<> <C3B3> <EFBFBD> <EFBFBD>
// <20> ڵ带 <20> <> ġ<EFBFBD> մϴ<D5B4> .
}
else if ( nResponse = = IDCANCEL )
{
// TODO: <20> <> <EFBFBD> <20> <> ȭ <20> <> <EFBFBD> ڰ<EFBFBD> <20> <> <EFBFBD> Ҹ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ó<> <C3B3> <EFBFBD> <EFBFBD>
// <20> ڵ带 <20> <> ġ<EFBFBD> մϴ<D5B4> .
}
// <20> <> ȭ <20> <> <EFBFBD> ڰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> α <CEB1> <D7B7> <EFBFBD> <20> <EFBFBD> <DEBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ʰ<EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> α <CEB1> <D7B7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <20> ֵ<EFBFBD> <D6B5> <EFBFBD> FALSE<53> <45> <20> <> ȯ<EFBFBD> մϴ<D5B4> .
return FALSE ;
}
// <20> 뷮<EFBFBD> <EBB7AE> <20> <> ŷ
BOOL
CNxFileSystemToolApp : : _CapaPacking ( std : : vector < std : : string > & tokens )
{
if ( tokens . size ( ) ! = 5 )
return FALSE ;
int nCapa = atoi ( tokens [ 2 ] . c_str ( ) ) ;
if ( nCapa < 1 | | nCapa > 2000 )
{
nCapa = 50 ;
}
DIVPackingCapacityInfo info ;
info . m_szBaseName = tokens [ 1 ] . c_str ( ) ;
info . m_InputPath = tokens [ 3 ] . c_str ( ) ;
info . m_OutputPath = tokens [ 4 ] . c_str ( ) ;
info . nDivCapacity = nCapa ;
g_pDivPackingCapaThread = new CDivPackingCapacityThread ( NULL , info ) ;
g_pDivPackingCapaThread - > Start ( ) ;
/*
if ( : : WaitForSingleObject ( g_pDivPackingThread - > m_hHandleThread , INFINITE ) = = WAIT_OBJECT_0 )
{
delete g_pDivPackingThread ;
return TRUE ;
} */
if ( g_pDivPackingCapaThread - > WaitForTerminate ( ) )
{
delete g_pDivPackingCapaThread ;
return TRUE ;
}
return FALSE ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ŷ
BOOL
CNxFileSystemToolApp : : _FolderPacking ( std : : vector < std : : string > & tokens )
{
if ( tokens . size ( ) ! = 3 )
return FALSE ;
bool bResult = false ;
std : : vector < _PackingInfo > packingInfo ;
std : : string str = tokens [ 1 ] ;
bResult = ParseSettingFile ( str . c_str ( ) , packingInfo ) ;
if ( bResult = = false )
return FALSE ;
g_pDivPackingThread = new CDivPackingThread ( NULL , CString ( tokens [ 1 ] . c_str ( ) ) , packingInfo ) ;
g_pDivPackingThread - > Start ( ) ;
/*
if ( : : WaitForSingleObject ( g_pDivPackingThread - > m_hHandleThread , INFINITE ) = = WAIT_OBJECT_0 )
{
delete g_pDivPackingThread ;
return TRUE ;
} */
if ( g_pDivPackingThread - > WaitForTerminate ( ) )
{
delete g_pDivPackingThread ;
return TRUE ;
}
return FALSE ;
}