📄 xacrett.cpp
字号:
//fname傪TCHAR偵 by uema2.
_MultiByteToWideChar(CP_ACP, 0, fname, strlen(fname)+1,
t_fname, strlen(fname)+1);
// HANDLE h = FindFirstFile( fname,&find );
HANDLE h = FindFirstFile( t_fname,&find ); // by uema2.
if( h==INVALID_HANDLE_VALUE )
{
g_nError[ NOT_A_FILE ]++;
return;
}
FindClose( h );
// 僠僃僢僋偺傒偩偭偨傜偙偙偱廔傢傝
if( bCheckOnly )
{
// char string[1000];
TCHAR string[500]; //char->TCHAR by uema2.
TCHAR t_Routine[500];
char *temp;
TCHAR t_temp[32];
if( p ){
//p->GetRoutineName()傪TCHAR偵 by uema2.
_MultiByteToWideChar(CP_ACP, 0, p->GetRoutineName(), strlen(p->GetRoutineName())+1,
t_Routine, strlen(p->GetRoutineName())+1);
/////////////
temp = (char*)LocalAlloc(LPTR, 1);
*temp = (char)0xff;
_MultiByteToWideChar(CP_ACP, 0, temp, strlen(temp)+1,
t_temp, strlen(temp)+1);
/////////////
*t_temp = L'\\';
// sprintf( string,"OK: \"%s\" (by %s)",
// find.cFileName, p->GetRoutineName() );
wsprintf( string,L"OK: \"%s\" (by %s)",
find.cFileName, t_Routine); // by uema2.
}else{
// sprintf( string,"Unsupported: \"%s\"", find.cFileName );
wsprintf(string, L"Unsupported: \"%s\"", find.cFileName); // by uema2.
}
MessageBox( NULL, string,
// "XacRett", MB_OK|MB_ICONINFORMATION|MB_TOPMOST );
L"XacRett", MB_OK|MB_ICONINFORMATION|MB_TOPMOST ); // by uema2.
return;
}
// 旕懳墳彂屔偩偭偨傜僄儔乕
if( p==NULL )
{
g_nError[ UNSUPPORTED ]++;
return;
}
// 彂屔柤傪LongFileName偵抲偒姺偊偰偍偔
// CE偼慡晹LongFileName側偺偱偼丠 by uema2.
// int y,dummy;
// kiutil::pathSplit( fname,&y,&dummy );
char my_fname[MAX_PATH];
// strcpy( my_fname, fname );
// strcpy( &my_fname[y+1], find.cFileName );
//find.cFileName傪char偵 by uema2.
char* pChar = (char *)LocalAlloc(LPTR, MAX_PATH*sizeof(char));
strcpy( my_fname, fname );
DWORD charlength = _WideCharToMultiByte(CP_ACP, 0, find.cFileName,
-1, NULL, 0, NULL, NULL);
_WideCharToMultiByte(CP_ACP, 0, find.cFileName,
-1, pChar, charlength, NULL, NULL);
// 忬嫷昞帵僟僀傾儘僌弨旛
// CInfoDlg inf( find.cFileName, p );
CInfoDlg inf( pChar, p ); // by uema2.
// 偮偄偱偵僼僅儖僟傪嶌偭偨傝丅
char my_ddir[MAX_PATH*2];
strcpy( my_ddir, ueutil::GetExtractPath() ); //added by uema2.
// strcpy( my_ddir, g_DestDir );
// if( *CharPrev( my_ddir, my_ddir+strlen(my_ddir) ) != '\\' )
// strcat( my_ddir, "\\" );
if( g_bMake )
{
char* x;
// for( x=find.cFileName; *x!=0; x=CharNext(x) )
for( x=pChar; *x!=0; x=ueutil::CharNext(x) ) // by uema2.
if( *x=='.' )
break;
*x='\0';
// strcat( my_ddir, find.cFileName );
// strcat( my_ddir, "\\" );
strcat( my_ddir, pChar ); //added by uema2.
ueutil::CopyToFilename(pChar);
}
strcat( my_ddir, "\\" ); //added by uema2.
kiutil::pathMakeAbs( my_ddir );
TCHAR t_my_ddir[MAX_PATH*2];
_MultiByteToWideChar(CP_ACP, 0, my_ddir, strlen(my_ddir)+1,
t_my_ddir, strlen(my_ddir)+1); //added by uema2.
// MessageBox(NULL, t_my_ddir, L"t_my_ddir", MB_OK);
// 夝搥両
// SetCurrentDirectory( ); //by uema2.
if( g_bDlg )
inf.Start();
if( !p->Extract( my_fname, my_ddir ) )
{
g_nError[ FAILED ]++;
return;
}
// 夝搥愭傪奐偔
if( g_bOpen )
{
/* char str[MAX_PATH+50] = "explorer \"";
my_ddir[ strlen(my_ddir)-1 ]='\0';
strcat( str, my_ddir );
strcat( str, "\"" );
WinExec( str,SW_SHOWDEFAULT );
*/ CreateProcess(L"explorer", t_my_ddir, NULL, NULL, FALSE,
0, NULL, NULL, NULL, NULL); //added by uema2.
}
LocalFree(pChar);
}
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
//int APIENTRY WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, int )
int WINAPI WinMain(HINSTANCE hInst,
HINSTANCE hPrevInstance,
LPWSTR lpszCmdParam,
int nCmdShow)
{
// 弶婜壔
KctrlInit(); //by uema2.
kiutil::pathInit();
CTool::AllocWorkSpace();
fdinit();
g_Inst = hInst; //added by uema2.
// 暅尦儖乕僠儞儘乕僪
// 旕埑弅宯
/* g_pToolList = new CJakTool;
g_pToolList->AddTail( new CTarTool );
g_pToolList->AddTail( new CCpioTool );
g_pToolList->AddTail( new CQPakTool );
// 傢傝偲儅僩儌宯( 僠僃僢僋偑懍偄傕偺 )
// g_pToolList->AddTail( new CYz1Tool );
g_pToolList->AddTail( new CTgzTool );
g_pToolList->AddTail( new CTbzTool );
g_pToolList->AddTail( new CTaZTool );
g_pToolList->AddTail( new CCpioGzTool );
g_pToolList->AddTail( new CCpioBzTool );
g_pToolList->AddTail( new CCpioZTool );
g_pToolList->AddTail( new CMSCompressTool );
*/
g_pToolList = new CLzhTool;
g_pToolList->AddTail( new CRarTool );
g_pToolList->AddTail( new CZipTool );
g_pToolList->AddTail( new CTgzTool );
g_pToolList->AddTail( new CTbzTool );
g_pToolList->AddTail( new CTaZTool );
g_pToolList->AddTail( new CGzTool );
g_pToolList->AddTail( new CBz2Tool );
g_pToolList->AddTail( new CTarTool );
g_pToolList->AddTail( new CArjTool );
/*
// 傢傝偲儅僩儌宯( 僠僃僢僋偑抶偄傕偺 )
g_pToolList->AddTail( new CBgaTool );
g_pToolList->AddTail( new CLzhTool );
g_pToolList->AddTail( new CZipTool );
g_pToolList->AddTail( new CRarTool );
g_pToolList->AddTail( new CAceTool );
g_pToolList->AddTail( new CArjTool );
// g_pToolList->AddTail( new CGcaTool );
g_pToolList->AddTail( new CImpTool );
// g_pToolList->AddTail( new CCabTool );
g_pToolList->AddTail( new CZooTool );
g_pToolList->AddTail( new CHqxTool );
g_pToolList->AddTail( new CCptTool );
g_pToolList->AddTail( new CPitTool );
g_pToolList->AddTail( new CIshTool );
// 偰偒偲乣宯
g_pToolList->AddTail( new CAsdTool );
g_pToolList->AddTail( new CRezTool );
g_pToolList->AddTail( new CGzTool );
g_pToolList->AddTail( new CBz2Tool );
g_pToolList->AddTail( new CCompressZTool );
g_pToolList->AddTail( new CArcTool );
g_pToolList->AddTail( new CArgTool );
g_pToolList->AddTail( new CSplTool );
g_pToolList->AddTail( new CPackzTool );
g_pToolList->AddTail( new CFrzTool );
g_pToolList->AddTail( new CCompactCTool );
g_pToolList->AddTail( new CArTool );
// xacrgpl.dll強懏偺傕偺
CGPLTool::LoadAll( g_pToolList );
// 傎傏奼挘巕Only宯
g_pToolList->AddTail( new CMimeTool );
g_pToolList->AddTail( new CUueTool );
g_pToolList->AddTail( new CXxeTool );
g_pToolList->AddTail( new CSharTool );
g_pToolList->AddTail( new CBooTool );
g_pToolList->AddTail( new CFishTool );
g_pToolList->AddTail( new CBelTool );
g_pToolList->AddTail( new CJamTool );
g_pToolList->AddTail( new CAtoBTool );
*/
// 愝掕傪儘乕僪
/*
// ini僼傽僀儖柤嶌惉( 偙傟丄屻傠偺曽偱Save偵傕巊偆偺偱拲堄 )
char ininame[MAX_PATH];
GetModuleFileName( NULL, ininame, MAX_PATH );
int l = strlen( ininame );
ininame[l-3]='I', ininame[l-2]='N', ininame[l-1]='I';
*/
// 夝搥愭僨傿儗僋僩儕
// GetPrivateProfileString 偼CE偵偼側偄偺偱儖乕僩僨傿儗僋僩儕傪擖傟偰偍偔
// by uema2.
strcpy(g_DestDir, "\\");
/*
GetPrivateProfileString( "xacr","Dir","",g_DestDir,MAX_PATH,ininame );
if( g_DestDir[0]=='\0' )
{
ITEMIDLIST *pidl;
SHGetSpecialFolderLocation( NULL, CSIDL_DESKTOPDIRECTORY, &pidl );
SHGetPathFromIDList( pidl, g_DestDir );
IMalloc* pMalloc;
SHGetMalloc( &pMalloc );
pMalloc->Free( pidl );
pMalloc->Release();
}
// 塀偟愝掕俁偮
g_bOpen = (0!=GetPrivateProfileInt( "xacr","Open",1,ininame ));
g_bMake = (0!=GetPrivateProfileInt( "xacr","Make",1,ininame ));
g_bDlg = (0!=GetPrivateProfileInt( "xacr","Dlg" ,1,ininame ));
*/
g_bDlg = 1; // fixed by uema2.
g_bMake = ueutil::GetMakeDirectory();
g_bOpen = ueutil::GetOpenDirectory();
// 僉乕儃乕僪擖椡撉傒偲傝
GetAsyncKeyState(VK_SHIFT); // 側傫偐偙偺僟儈乕傪屇偽側偄偲帪乆曄乧
bool shift_pushed = ( 0!=(GetAsyncKeyState(VK_SHIFT)>>15) );
bool ctrl_pushed = ( 0!=(GetAsyncKeyState(VK_CONTROL)>>15) );
// 僐儅儞僪儔僀儞張棟側偳
// Shift偑墴偝傟偰偄偨傜暅尦儖乕僠儞慖戰夋柺偱慖偽偣傞
CTool* def = NULL;
if( shift_pushed && !ctrl_pushed )
{
def = (CTool*)DialogBox( hInst,
MAKEINTRESOURCE(IDD_TYPE), NULL, TypeProc );
}
// if( __argc<=1 )
if(0==lstrcmp(lpszCmdParam, L"")) //added by uema2.
{
// 堷悢偑柍偗傟偽丄愝掕夋柺
// if( Configuration(g_DestDir) )
// WritePrivateProfileString( "xacr","Dir",g_DestDir,ininame );
ueutil::b_config = true; //added by uema2.
CCfgDlg cfg((struct HINSTANCE__ *)g_Inst);
cfg.Start();
}
else
{
// 堷悢偑偁傟偽丄暅尦
// argc偑側偄偺偱丄堦夞偩偗 by uema2.
ueutil::b_config = false;
// for( int i=1; i!=__argc; i++ )
// {
// if( GetFileAttributes( __argv[i] ) & FILE_ATTRIBUTE_DIRECTORY )
if( GetFileAttributes( lpszCmdParam ) & FILE_ATTRIBUTE_DIRECTORY ){
g_nError[ NOT_A_FILE ]++;
}else{
char pChar[MAX_PATH*2];
// lpszCmdParam傪char偵曄姺 by uema2.
DWORD charlength = _WideCharToMultiByte(CP_ACP, 0, lpszCmdParam,
-1, NULL, 0, NULL, NULL);
_WideCharToMultiByte(CP_ACP, 0, lpszCmdParam,
-1, pChar, charlength, NULL, NULL);
// ProcessFile( __argv[i], def, ctrl_pushed );
ProcessFile( pChar, def, ctrl_pushed ); // by uema2.
}
// }
// (傕偟偁傟偽)僄儔乕曬崘
if( g_nError[0] | g_nError[1] | g_nError[2] )
{
// char errstr[1000];
TCHAR errstr[1000]; //added by uema2.
// sprintf( errstr, " NOT_A_FILE: %d times\n"
// "UNSUPPORTED: %d times\n"
// " FAILED: %d times\n"
wsprintf( errstr, L" NOT_A_FILE: %d times\n"
L"UNSUPPORTED: %d times\n"
L" FAILED: %d times\n"
,g_nError[NOT_A_FILE]
,g_nError[UNSUPPORTED]
,g_nError[FAILED] );
MessageBox( NULL, errstr, NULL, MB_OK );
}
}
// 偟傘乣傝傚乣
// CGPLTool::Free();
delete g_pToolList;
CTool::FreeWorkSpace();
KctrlTerm();
fdclose();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -