📄 autopatchdlg.cpp
字号:
break;
}
//
// 柳青惑炔 焊咯林扁.
dwProLv = (DWORD)(PRO_RANGE_EX * ((float)(dwi + 1) / (float)iMax));
SendMessage( hPro_EX, PBM_SETPOS, dwProLv, 0);
SetDlgItemInt( hDlg, IDC_STATIC_EX1, dwi + 1, FALSE );
}
g_pZip->Close();
//
// 拘绵 促捞倔肺弊 能飘费 焊捞扁.
UpdateDialog_Extract( hDlg, FALSE);
return bReturn;
}
BOOL IsSupportSSE()
{
BOOL bResult = TRUE;
__try
{
// xorps xmm0,xmm0
__asm _emit 0x0f
__asm _emit 0x57
__asm _emit 0xc0
}
__except ( EXCEPTION_EXECUTE_HANDLER)
{
bResult = FALSE;
}
return bResult;
}
BOOL SelectGFunc()
{
if (IsSupportSSE())
CopyFile("SS3DGFuncSSE.dll","SS3DGFunc.dll",FALSE);
else
CopyFile("SS3DGFuncN.dll","SS3DGFunc.dll",FALSE);
return TRUE;
}
// 内冯 角青 内靛.
BOOL RunCorum()
{
//////////////////////////////////////////////////////////////////////////
// YH
{
FILE* fp = fopen("MHAutoPatch.new","rb");
if(fp != NULL)
{
fclose(fp);
_execl("MHExecuter.exe","a",NULL);
}
}
{
FILE* fp = fopen("SS3DGFunc.new","rb");
if(fp != NULL)
{
fclose(fp);
_execl("MHExecuter.exe","a",NULL);
}
}
SelectGFunc();
BOOL bReturn;
STARTUPINFO sp;
memset( &sp, 0, sizeof(STARTUPINFO));
sp.cb = sizeof(STARTUPINFO);
sp.dwFlags = STARTF_USEPOSITION | STARTF_USESIZE | STARTF_USESTDHANDLES; //STARTF_USESHOWWINDOW
sp.wShowWindow = SW_SHOW;
PROCESS_INFORMATION pi;
if(strlen(g_ExecutableFileName) == 0)
return TRUE;
else
{
bReturn = CreateProcess( g_ExecutableFileName, // name of executable module
" anrgideoqkr", // command line string
NULL, // SD
NULL, // SD
FALSE, // handle inheritance option
CREATE_DEFAULT_ERROR_MODE | NORMAL_PRIORITY_CLASS, // creation flags
NULL, // new environment block
NULL, // current directory name
&sp, // startup information
&pi // process information
);
}
if( !bReturn )
return FALSE;
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return TRUE;
}
//
// Update AS Text
void Update_AS( HWND hDlg, char* pszText)
{
SetDlgItemText( hDlg, IDC_STATIC_AS, pszText);
}
void Update_SM( HWND hDlg, char* pszText)
{
SetDlgItemText( hDlg, IDC_STATIC_SM2, pszText);
}
void Update_ER( HWND hDlg, DWORD dwErr)
{
// SetDlgItemInt( hDlg, IDC_STATIC_SM3, dwErr, false);
}
//
// UpdateDialog_DownLoad
void UpdateDialog_DownLoad( HWND hDlg, BOOL bShow)
{
HWND hWnd;
int iShow;
if( bShow )
iShow = SW_SHOW;
else
{
iShow = SW_HIDE;
SetDlgItemText( hDlg, IDC_STATIC_VER2, NULL);
}
SendMessage( hDlg, PBM_SETPOS, 0, 0);
// 促款肺靛 促捞倔肺弊 能飘费 诀单捞飘.
hWnd = GetDlgItem( hDlg, IDC_PROGRESS_DN);
SendMessage( hWnd, PBM_SETPOS, 0, 0); //
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN1);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN2);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN3);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN4);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN5);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN6);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN7);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN8);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN9);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN10);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_DN11);
ShowWindow( hWnd, iShow );
UpdateWindow( hDlg);
}
//
// UpdateDialog_Extract
void UpdateDialog_Extract( HWND hDlg, BOOL bShow)
{
HWND hWnd;
int iShow;
if( bShow )
iShow = SW_SHOW;
else
iShow = SW_HIDE;
// 促款肺靛 促捞倔肺弊 能飘费 诀单捞飘.
hWnd = GetDlgItem( hDlg, IDC_PROGRESS_EX);
SendMessage( hWnd, PBM_SETPOS, 0, 0);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_EX1);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_EX2);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_EX3);
ShowWindow( hWnd, iShow );
hWnd = GetDlgItem( hDlg, IDC_STATIC_EX4);
ShowWindow( hWnd, iShow );
UpdateWindow( hDlg);
}
// 俊矾皋技瘤 免仿 窃荐.
void MessageBox_Error (char* szErrorText)
{
MessageBox( g_HDlgFTP_DownLoader, szErrorText, g_szMBErrCap, MB_OK);
}
// 俊矾皋技瘤 免仿 窃荐.
void MessageBox_Info (char* szInfoText)
{
MessageBox( g_HDlgFTP_DownLoader, szInfoText, g_szMBInfoCap, MB_OK);
}
BOOL SelfUpdate()
{
HANDLE hFind;
WIN32_FIND_DATA wfd;
BOOL bReturn;
hFind = FindFirstFile( SELF_UPDATE_FILE, &wfd);
if( hFind == INVALID_HANDLE_VALUE )
return FALSE;
STARTUPINFO sp;
memset( &sp, 0, sizeof(STARTUPINFO));
sp.cb = sizeof(STARTUPINFO);
sp.dwFlags = STARTF_USEPOSITION | STARTF_USESIZE | STARTF_USESTDHANDLES; //STARTF_USESHOWWINDOW
sp.wShowWindow = SW_SHOW;
PROCESS_INFORMATION pi;
bReturn = CreateProcess( SELF_UPDATE_FILE, // name of executable module
NULL, // command line string
NULL, // SD
NULL, // SD
FALSE, // handle inheritance option
CREATE_DEFAULT_ERROR_MODE | NORMAL_PRIORITY_CLASS, // creation flags
NULL, // new environment block
NULL, // current directory name
&sp, // startup information
&pi // process information
);
if( !bReturn )
{
MessageBox_Error( " SelfUpdate Fail ( Critical Error )");
MessageBox_Error( " 歹捞惑 菩摹甫 柳青且荐 绝嚼聪促.. ");
return TRUE;
}
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return TRUE;
}
BOOL Clear3DData()
{
char CurDir[MAX_PATH];
CStrClass datafolder = "3DData\\";
GetCurrentDirectory(MAX_PATH,CurDir);
BOOL bSD = SetCurrentDirectory("3ddata");
if(bSD == FALSE)
return TRUE;
CDirectoryName dirname(NULL,NULL);
dirname.LoadChild();
SetCurrentDirectory(CurDir);
dirname.SetPositionHead();
DWORD kind;
CStrClass filename;
CStrClass tname;
dirname.SetPositionHead();
while((kind=dirname.GetNextFileName(&filename)) != GETNEXTFILENAME_END)
{
if(kind != GETNEXTFILENAME_FILE)
continue;
if(filename == "")
continue;
tname = datafolder + filename;
BOOL rt = DeleteFile(tname);
}
dirname.SetPositionHead();
while((kind=dirname.GetNextFileName(&filename)) != GETNEXTFILENAME_END)
{
if(kind != GETNEXTFILENAME_DIRECTORY)
continue;
tname = datafolder + filename;
RemoveDirectory(tname);
}
RemoveDirectory(datafolder);
return TRUE;
}
void OnInitDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
FILE* fp = fopen("../DeveloperWorking/_DONOTUSEENGINEPACK","r");
if(fp)
{
g_bUsingEnginePack = FALSE;
fclose(fp);
}
if(g_bUsingEnginePack)
Clear3DData();
// 吝居 困摹
iX = GetSystemMetrics( SM_CXSCREEN );
iY = GetSystemMetrics( SM_CYSCREEN );
GetWindowRect( hDlg, &rcDlg);
SetWindowPos( hDlg,
HWND_TOP,
(iX - (rcDlg.right - rcDlg.left))/2, // horizontal position
(iY - (rcDlg.bottom - rcDlg.top))/2, // vertical position
NULL, // width
NULL, // height
SWP_NOSIZE // window-positioning options
);
g_HDlgFTP_DownLoader = hDlg;
//==================
CWnd * p = AfxGetMainWnd();
// SetHtmlView( )
// m_pHtmlViewNotice = new CHtmlViewNotice;
// m_pHtmlViewNotice->Create( NULL, NULL, WS_CHILD | WS_VISIBLE, CRect(10,60,310,370), this, 0 );
// m_pHtmlViewNotice->Navigate2( "http://www.darkstoryonline.com" );
//==================
//
// 橇肺弊贰胶官 技飘茄促.
hPro_DN = GetDlgItem( hDlg, IDC_PROGRESS_DN);
SendMessage( hPro_DN, PBM_SETRANGE32, 0, PRO_RANGE_DN);
hPro_EX = GetDlgItem( hDlg, IDC_PROGRESS_EX);
SendMessage( hPro_EX, PBM_SETRANGE32, 0, PRO_RANGE_EX);
dwSession = 1;
Update_AS( hDlg, g_sz_Connect);
memcpy( szVersion, CorumFile, VERSION_TOTAL_LENGTH);
szVersion[VERSION_TOTAL_LENGTH] = NULL;
SetDlgItemText( hDlg, IDC_STATIC_VER1, szVersion);
// Connect to FTP
///////////////////////////////////////////////////// FM_CONNECTED
cd.pvExcuteContext = (PVOID) FM_CONNECTED;
cd.bPassiveMode = FALSE;
lstrcpy( cd.szServerName, g_FTPIp);
cd.wServerPort = g_FTPPort;
lstrcpy( cd.szUserName, g_FTPID);
lstrcpy( cd.szUserPassword, g_FTPPW);
iR = g_pFtp->Initialize( hDlg, WM_RAIN_FTP_NOTIFY, 1);
g_hSession = g_pFtp->CreateSession();
if( g_hSession == NULL )
{
EndDialog( hDlg, -1);
return;
}
iR = g_pFtp->Connect( g_hSession, &cd);
bConnecting = TRUE;
}
void OnConnected(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam,LPVOID pvdata)
{
Connect_data* pcd = (Connect_data*)pvdata;
// 辑滚立加肯丰.
// 泅力 叼泛配府甫 掘绰促.
///////////////////////////////////////////////////// FM_GET_CURRENT_DIRECTORY
dd.pvExcuteContext = (PVOID) FM_GET_CURRENT_DIRECTORY;
// lstrcpy( dd.szCurrentDirectory, FTP_FOLDER);
iR = g_pFtp->GetCurrentDirectory( g_hSession, &dd);
_ASSERTE( iR == 0);
bConnecting = FALSE;
}
void OnGetCurrentDirectory(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam,LPVOID pvdata)
{
Connect_data* pcd = (Connect_data*)pvdata;
// Get Current Directory 肯丰.
// Notice.txt 甫 辑滚俊辑 八祸茄促.
///////////////////////////////////////////////////// FM_GETFILELIST
ld_zip.pvExcuteContext = (PVOID) FM_GETFILELIST;
ld_zip.dwFileMax = FIND_DATA_MAX;
ld_zip.pFile = pwfd;
ld_zip.pszSearchFile = CorumFile;
iR = g_pFtp->GetList( g_hSession, &ld_zip);
_ASSERTE( iR == 0);
}
void OnGetFileList(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam,LPVOID pvdata)
{
List_data* pld = (List_data*)pvdata;
if( pld->dwFileNum == 0 )
{
///////////////////////////////////////////////////// SC_DOWNLOAD_NOTICE
fd_newversion.pvExcuteContext = (PVOID) FM_CONFIRM;
fd_newversion.bResume = FALSE;
lstrcpy( fd_newversion.szRemoteFile, newverFilename);
lstrcpy( fd_newversion.szLocalFile, newverFilename);
iR = g_pFtp->DownloadFile( g_hSession, &fd_newversion);
_ASSERTE( iR == 0);
return;
}
dwFileSizeMax = pld->pFile->nFileSizeLow;
// 颇老沥焊 罐扁 己傍.
SetDlgItemText( hDlg, IDC_STATIC_VER2, "Found");
// 颇老 促款肺靛 .
Update_AS( hDlg, g_sz_DownLoad);
//
// 促款肺靛 能飘费 檬扁蔼 技飘.
hPro_DN = GetDlgItem( hDlg, IDC_PROGRESS_DN);
SendMessage( hPro_DN, PBM_SETPOS, 0, 0);
SetDlgItemInt( hDlg, IDC_STATIC_DN1, 0, FALSE );
SetDlgItemInt( hDlg, IDC_STATIC_DN3, dwFileSizeMax / 1024, FALSE );
// K/Sec
SetDlgItemInt( hDlg, IDC_STATIC_DN5, 0, FALSE );
// R.Time
SetDlgItemText( hDlg, IDC_STATIC_DN7, NULL);
SetDlgItemText( hDlg, IDC_STATIC_DN8, NULL);
SetDlgItemText( hDlg, IDC_STATIC_DN9, NULL);
SetDlgItemText( hDlg, IDC_STATIC_DN10, NULL);
dwRtStatus = 0;
//
// 促款肺靛 促捞倔肺弊 能飘费 焊捞扁.
UpdateDialog_DownLoad( hDlg);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -