|
@@ -11,6 +11,72 @@
|
|
|
#define new DEBUG_NEW
|
|
|
#endif
|
|
|
|
|
|
+INT StartOGCTool()
|
|
|
+{
|
|
|
+ INT nRet = 0;
|
|
|
+ DWORD dwProcId = 0;
|
|
|
+ if ( 0 == ( dwProcId = GLOBAL::FindProcess(_T("Demo.exe"))) )
|
|
|
+ {
|
|
|
+ // 没有找到目标进程,启动;
|
|
|
+ if ( !GLOBAL::StartProcess(GLOBAL::g_config.szOGCToolProgram) )
|
|
|
+ {
|
|
|
+ // 新开失败;
|
|
|
+ MessageBox(NULL, _T("启动进程失败"), _T("错误!"), MB_ICONERROR);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ nRet = 1; // 进程新开;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ TCHAR szModulPath[MAX_PATH] = {0};
|
|
|
+ _stprintf(szModulPath, _T("%s"), GLOBAL::GetModulePath(_T("Demo.exe"), dwProcId));
|
|
|
+ if ( _tcscmp(szModulPath, GLOBAL::g_config.szOGCToolProgram) != 0 )
|
|
|
+ {
|
|
|
+ TCHAR szMsg[1024] = {0};
|
|
|
+ _stprintf_s(szMsg,
|
|
|
+ _T("存在同名进程,目录非指定路径,请手动关闭非目标路径程序")
|
|
|
+ _T("\n\n当前进程路径:%s\n\n正确进程路径:%s\n\n")
|
|
|
+ _T("是:关闭当前进程并启动目标进程\n")
|
|
|
+ _T("否:不关闭当前进程,退出操作\n")
|
|
|
+ _T("取消:不关闭当前进程,启动目标进程\n"),
|
|
|
+ szModulPath,
|
|
|
+ GLOBAL::g_config.szOGCToolProgram);
|
|
|
+ INT nChoose = MessageBox(NULL, szMsg, _T("错误,存在同名进程!"), MB_ICONERROR|MB_YESNOCANCEL);
|
|
|
+ if ( nChoose == IDNO )
|
|
|
+ {
|
|
|
+ // 退出新开;
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ else if ( nChoose == IDYES )
|
|
|
+ {
|
|
|
+ // 关闭当前进程;
|
|
|
+ HANDLE token = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcId);
|
|
|
+ TerminateProcess(token, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ( !GLOBAL::StartProcess(GLOBAL::g_config.szOGCToolProgram) )
|
|
|
+ {
|
|
|
+ // 新开失败;
|
|
|
+ MessageBox(NULL, _T("启动进程失败"), _T("错误!"), MB_ICONERROR);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ nRet = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ nRet = 2;
|
|
|
+ GLOBAL::g_procWndInfo.dwProcId = dwProcId;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新开进程标记未劫持;
|
|
|
+ if ( nRet == 1 )
|
|
|
+ GLOBAL::g_bHijacted = FALSE;
|
|
|
+
|
|
|
+ return nRet;
|
|
|
+}
|
|
|
|
|
|
// COGCAssistToolApp
|
|
|
|
|
@@ -63,52 +129,8 @@ BOOL COGCAssistToolApp::InitInstance()
|
|
|
MTVERIFY(GLOBAL::GetConfigInfo());
|
|
|
|
|
|
#pragma region 打开目标进程;
|
|
|
- DWORD dwProcId = 0;
|
|
|
- if ( 0 == ( dwProcId = GLOBAL::FindProcess(_T("Demo.exe"))) )
|
|
|
- {
|
|
|
- // 没有找到目标进程,启动;
|
|
|
- if ( !GLOBAL::StartProcess(GLOBAL::g_config.szOGCToolProgram) )
|
|
|
- {
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- TCHAR szModulPath[MAX_PATH] = {0};
|
|
|
- _stprintf(szModulPath, _T("%s"), GLOBAL::GetModulePath(_T("Demo.exe"), dwProcId));
|
|
|
- if ( _tcscmp(szModulPath, GLOBAL::g_config.szOGCToolProgram) != 0 )
|
|
|
- {
|
|
|
- TCHAR szMsg[1024] = {0};
|
|
|
- _stprintf_s(szMsg,
|
|
|
- _T("存在同名进程,目录非指定路径,请手动关闭非目标路径程序")
|
|
|
- _T("\n\n当前进程路径:%s\n\n正确进程路径:%s\n\n")
|
|
|
- _T("是:关闭当前进程并启动目标进程\n")
|
|
|
- _T("否:不关闭当前进程,退出登录\n")
|
|
|
- _T("取消:不关闭当前进程,启动目标进程\n"),
|
|
|
- szModulPath,
|
|
|
- GLOBAL::g_config.szOGCToolProgram);
|
|
|
- INT nChoose = MessageBox(NULL, szMsg, _T("错误,存在同名进程!"), MB_ICONERROR|MB_YESNOCANCEL);
|
|
|
- if ( nChoose == IDNO )
|
|
|
- {
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
- else if ( nChoose == IDYES )
|
|
|
- {
|
|
|
- // 关闭当前进程;
|
|
|
- HANDLE token = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcId);
|
|
|
- TerminateProcess(token, 0);
|
|
|
- }
|
|
|
-
|
|
|
- if ( !GLOBAL::StartProcess(GLOBAL::g_config.szOGCToolProgram) )
|
|
|
- {
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- GLOBAL::g_procWndInfo.dwProcId = dwProcId;
|
|
|
- }
|
|
|
- }
|
|
|
+ if ( StartOGCTool() < 0 )
|
|
|
+ return FALSE;
|
|
|
#pragma endregion
|
|
|
|
|
|
#pragma region 登录对话框;
|
|
@@ -119,6 +141,8 @@ BOOL COGCAssistToolApp::InitInstance()
|
|
|
}
|
|
|
#pragma endregion
|
|
|
|
|
|
+ GLOBAL::g_IOCP.Start();
|
|
|
+
|
|
|
COGCAssistToolDlg dlg;
|
|
|
m_pMainWnd = &dlg;
|
|
|
INT_PTR nResponse = dlg.DoModal();
|