void NL::System::Initialize() { int width,height,flags; DWORD whitecol,blackcol,bordercolor; bool fullscreen,mirror; std::ifstream f("Data/config.cfg"); f >> width >> height >> fullscreen; f >> whitecol >> blackcol >> bordercolor >> mirror; f.close(); flags = SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_OPENGL; if (fullscreen) { flags |= SDL_FULLSCREEN; } ResourceManager::getSingleton().AddResource("Window width",&width,sizeof(width)); ResourceManager::getSingleton().AddResource("Window height",&height,sizeof(height)); ResourceManager::getSingleton().AddResource("Mirror",&mirror,sizeof(mirror)); ResourceManager::getSingleton().AddResource("Border color",&bordercolor,sizeof(bordercolor)); ResourceManager::getSingleton().AddResource("White color",&whitecol,sizeof(whitecol)); ResourceManager::getSingleton().AddResource("Black color",&blackcol,sizeof(blackcol)); ADD_LOG("Initializing SDL...",(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) >= 0)); ADD_LOG("Initializing SDL_VideoMode...",SDL_SetVideoMode(width,height,24,flags)); SDL_ShowCursor(SDL_DISABLE); SDL_EnableUNICODE(1); SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); };
bool JudgeDB::saveSourceFile(const char* sCodePath, int nRunID) { CAutoLock _LOCK(getLock()); std::string sql_query; BaseFunc::strFormat(sql_query, JUDGE_CONFIG::SQL_FETCH_SUBMITION_CODE, nRunID ); CDBObject* p_judge_db = getDBObj(); if( !p_judge_db->Query(sql_query.c_str()) ) { ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error()); assert(false); return false; } CDBObject::PQUERY_RESULT sql_res = NULL; sql_res = p_judge_db->StoreResult(); if (sql_res == NULL) return false; bool b_ret = false; char** res_body = NULL; res_body = p_judge_db->FetchRow(sql_res); if( res_body == NULL) goto end; b_ret = true; FILE* p_file = fopen(sCodePath, "wb"); if (p_file == NULL) { ADD_LOG("%s:%d Save File Fault!", __FUNCTION__, __LINE__); b_ret = false; goto end; } if( -1 == fputs(res_body[1], p_file)) b_ret = false; fclose(p_file); end: p_judge_db->FreeResult(sql_res); p_judge_db->ClearResult(); return b_ret; }
void COptionDlg::OnTcnSelchangeTabOption(NMHDR *pNMHDR, LRESULT *pResult) { ADD_LOG(); switch (m_tb_TabOption.GetCurSel()) { case 0: { m_ptbpage_Program->ShowWindow(SW_HIDE); m_ptbpage_Log->ShowWindow(SW_HIDE); m_ptbpage_Routine->ShowWindow(SW_SHOW); } break; case 1: { m_ptbpage_Program->ShowWindow(SW_SHOW); m_ptbpage_Log->ShowWindow(SW_HIDE); m_ptbpage_Routine->ShowWindow(SW_HIDE); } break; case 2: case 3: { m_ptbpage_Log->ShowWindow(SW_SHOW); m_ptbpage_Program->ShowWindow(SW_HIDE); m_ptbpage_Routine->ShowWindow(SW_HIDE); } break; } *pResult = 0; }
DWORD WINAPI CloseProcessThread(LPVOID para) { ADD_LOG(); CProcessControl* p = (CProcessControl*)para; int nTotal = p->GetSurplusTime(); if (p->GetWatchCount() == 0 || p->GetActiveWatchCount() == 0) {::PostMessage((p->m_hWnd), WM_CLOSE, NULL, NULL); return 1;} while(p->GetWatchCount() > 0) { ::PostMessage(p->m_hWnd, WM_UPDATESHOWESTABLISHPRO, nTotal, FALSE); PWATCH_PROCESS_INFORMATION pwatch = p->GetWatchData(p->GetWatchCount()-1); if (pwatch->nstatus == CProcessControl::RUN) { Sleep(p->GetConfigData(pwatch->nParents)->nTime); if (pwatch->proinfo.hProcess != NULL) { ::EnumWindows((WNDENUMPROC)CProcessControl::EnumClosePro, (LPARAM)pwatch->proinfo.dwProcessId); if (WaitForSingleObject(pwatch->proinfo.hProcess, 5000) == WAIT_TIMEOUT) { TerminateProcess(pwatch->proinfo.hProcess, -1); } } } p->EraseWatchData(p->GetWatchCount()-1); } p->FreeWatchData(); WaitForSingleObject(p->m_hCloseWndEvent, INFINITE); ::PostMessage((p->m_hWnd), WM_CLOSE, NULL, NULL); return 0; }
BOOL CProcessControl::CreateProcessList() { ADD_LOG(); m_cSection.Lock(); int n = m_pTransformData->m_pConfigData->size(); for (int i = 0; i < n; i++) { ConfigData* tp = m_pTransformData->m_pConfigData->at(i); char_t* pchar = new char_t[tp->strParam.GetLength() + 2]; _tcscpy_s(pchar, tp->strParam.GetLength() + 2, tp->strParam.GetString()); if (i == n-1) { UpdateProcessList(i, tp->strPath.GetString(), pchar, tp->bAtoRecover, tp->nNumber, tp->nTime, _T("last no sleep")); } else { UpdateProcessList(i, tp->strPath.GetString(), pchar, tp->bAtoRecover, tp->nNumber, tp->nTime); } delete[] pchar; } m_cSection.Unlock(); return TRUE; }
LoadingScreen::LoadingScreen() : _gui(xNew1(GUI,("LoadingScreen"))) { ADD_LOG("Creating LoadScreen"); InitGui(); GUIManager::Instance()->RegisterGUI("LoadingScreen", _gui); }
bool JudgeDB::uploadCompileResult( int nRunID, int nUserID, int nGameID, bool bCompileRes, const char* sCompileError) { CAutoLock _LOCK(getLock()); std::string sql_query; BaseFunc::strFormat(sql_query, JUDGE_CONFIG::SQL_UPLOAD_COMPILE_RESULT, nRunID, nUserID, nGameID, bCompileRes, sCompileError); CDBObject* p_judge_db = getDBObj(); if( !p_judge_db->Query(sql_query.c_str()) ) { ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error()); assert(false); return false; } return true; }
BOOL CProcessControl::IsRunningWatchThread(BOOL bwatch) { ADD_LOG(); if (bwatch) { ADD_WORSELOG_CONTAINER(m_pTransformData->m_pWatchData); if (m_pTransformData->m_pWatchData->size() <= 0) return FALSE; if (m_hThread != NULL) { ::SetEvent(m_hExitEvent); if (WaitForSingleObject(m_hThread, 5000) == WAIT_TIMEOUT) TerminateThread(m_hThread, -1); CLOSE_HANDLE(m_hThread); ::ResetEvent(m_hExitEvent); } m_hThread = ::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)WatchThread, this, NULL, 0); } else { if (m_hThread != NULL) { ::SetEvent(m_hExitEvent); if (WaitForSingleObject(m_hThread, 5000) == WAIT_TIMEOUT) TerminateThread(m_hThread, -1); CLOSE_HANDLE(m_hThread); ::ResetEvent(m_hExitEvent); } } return TRUE; }
BOOL COptionDlg::OnInitDialog() { CDialog::OnInitDialog(); ADD_LOG(); m_tb_TabOption.InsertItem(0, _T("常规")); m_tb_TabOption.InsertItem(1, _T("程序")); m_tb_TabOption.InsertItem(2, _T("日志")); m_tb_TabOption.InsertItem(3, _T("快速配置")); m_tb_TabOption.SetCurSel(1); m_ptbpage_Program->Create(IDC_TABPAGE_PROGRAM, &m_tb_TabOption); m_ptbpage_Log->Create(IDC_TABPAGE_LOG, &m_tb_TabOption); m_ptbpage_Routine->Create(IDC_TABPAGE_ROUTINE, &m_tb_TabOption); CRect rc; m_tb_TabOption.GetClientRect(&rc); rc.top += 22; rc.left += 1; rc.right -= 1; rc.bottom -= 3; m_ptbpage_Program->MoveWindow(&rc); m_ptbpage_Log->MoveWindow(&rc); m_ptbpage_Routine->MoveWindow(&rc); m_ptbpage_Program->ShowWindow(SW_SHOW); m_ptbpage_Log->ShowWindow(SW_HIDE); m_ptbpage_Routine->ShowWindow(SW_HIDE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
CreateGameScreen::CreateGameScreen() : IMenuScreen(xNew1(GUI,"CreateGameScreen"), "CreateGameScreen"), _loaded(false), _onMapSelected(this), _onStartPosLeftClicked(this), _onStartPosRightClicked(this), _selectedStartLoc(-1), _onAllReadyChanged(this) { ADD_LOG("Begin Creating CreateGameScreen"); LoadNewGameSettings(); InitGui(); _loaded = true; _buttonStart->setEnabled(false); ADD_LOG("End Creating CreateGameScreen"); }
BOOL CTabPageProgram::UpdateList(INT nIndex /*=-1*/) { ASSERT(m_pProgress); if (!IsWindow(m_hWnd)) return FALSE; ADD_LOG(); s_nNumber = 0; m_lt_ShowProgram.DeleteAllItems(); m_ImageList.DeleteImageList(); m_ImageList.Create(16, 16, ILC_COLOR32, 0, 0); m_ImageList.SetImageCount(0); m_lt_ShowProgram.SetImageList(&m_ImageList, LVSIL_SMALL); if (m_pProgress->m_pProcessControl->GetConfigCount() <= 0)return FALSE; int n = m_pProgress->m_pProcessControl->GetConfigCount(); for (int i = 0; i < n; i++) { ConfigData* tp = m_pProgress->m_pProcessControl->GetConfigData(i); AddWatchProgramList(tp->strPath.GetString(), tp->strId.GetString(), tp->strName.GetString(), tp->nNumber, tp->nTime, tp->bAtoRecover, tp->strEvent.GetString()); } return TRUE; }
BOOL CTabPageProgram::OnInitDialog() { CDialog::OnInitDialog(); ADD_LOG(); m_lt_ShowProgram.SetExtendedStyle(LVS_EX_SUBITEMIMAGES | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES); m_lt_ShowProgram.ModifyStyle(0, LVS_REPORT, 0); m_lt_ShowProgram.InsertColumn(0, _T("自动恢复"), LVCFMT_CENTER, 100); m_lt_ShowProgram.InsertColumn(1, _T("编号"), LVCFMT_CENTER, 50); m_lt_ShowProgram.InsertColumn(2, _T("进程标识符"), LVCFMT_CENTER, 100); m_lt_ShowProgram.InsertColumn(3, _T("进程名称"), LVCFMT_CENTER, 80); m_lt_ShowProgram.InsertColumn(4, _T("数量"), LVCFMT_CENTER, 50); m_lt_ShowProgram.InsertColumn(5, _T("等待时间"), LVCFMT_CENTER, 100); m_lt_ShowProgram.InsertColumn(6, _T(" "), LVCFMT_CENTER, 40); m_lt_ShowProgram.InsertColumn(7, _T("事件名称"), LVCFMT_CENTER, 100); CHeaderCtrl* pHeaderCtrl = m_lt_ShowProgram.GetHeaderCtrl(); INT nCount = pHeaderCtrl->GetItemCount(); LPINT pOder = (LPINT)malloc(nCount*sizeof(int)); pHeaderCtrl->GetOrderArray(pOder, nCount); int nTemp = 0; nTemp = pOder[0], pOder[0] = pOder[nCount - 2], pOder[nCount - 2] = nTemp; pHeaderCtrl->SetOrderArray(nCount, pOder); free(pOder); UpdateList(); return TRUE; }
VOID CProcessControl::UnInitialize() { ADD_LOG(); if (m_hExitEvent!= NULL) SetEvent(m_hExitEvent); if (m_hThread != NULL) { if (WaitForSingleObject(m_hThread, 5000) == WAIT_TIMEOUT) TerminateProcess(m_hThread, -1); CLOSE_HANDLE(m_hThread); } if (m_hExitEvent!= NULL) ResetEvent(m_hExitEvent); CLOSE_HANDLE(m_hExitEvent); int nsum = m_pTransformData->m_pWatchData->size(); for (int i = 0; i < nsum; i++) { PWATCH_PROCESS_INFORMATION pwatch = m_pTransformData->m_pWatchData->at(i); if (pwatch->proinfo.hProcess != NULL) { ::EnumWindows((WNDENUMPROC)EnumClosePro, (LPARAM)pwatch->proinfo.dwProcessId); if (WaitForSingleObject(pwatch->proinfo.hProcess, 5000) == WAIT_TIMEOUT) { TerminateProcess(pwatch->proinfo.hProcess, -1); } } } FreeWatchData(); }
VOID CProcessControl::ReCreateProcess(INT nIndex) { ADD_LOG(); m_cSection.Lock(); PWATCH_PROCESS_INFORMATION pWatch = m_pTransformData->m_pWatchData->at(nIndex); ::EnumWindows((WNDENUMPROC)EnumClosePro, (LPARAM)pWatch->proinfo.dwProcessId); UpdateSimpleProcessList(pWatch, NULL, NULL); m_cSection.Unlock(); }
VOID CProcessControl::ReCreateEstablishThread() { ADD_LOG(); UnInitialize(); HANDLE h = ::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)EstablishThread, (LPVOID)this, NULL, 0); CLOSE_HANDLE(h); }
void LoadingScreen::Unload() { if(_gui.IsValid()) { ADD_LOG("Unloading LoadingScreen"); _gui->UnloadAllLayouts(); } }
LoadingScreen::~LoadingScreen() { ADD_LOG("Destroying LoadScreen"); if(_gui.IsValid()) { GUIManager::Instance()->UnregisterGUI("LoadingScreen"); _gui->UnloadAllLayouts(); } }
void CreateGameScreen::Unload() { if(_gui.IsValid() && _loaded) { ADD_LOG("Unloading CreateGameScreen"); GUIManager::Instance()->UnregisterGUI("CreateGameScreen"); xDeleteSafe(_mapList); xDeleteSafe(_mapPreview); xDeleteSafe(_playersSettings); _gui->UnloadAllLayouts(); _loaded = false; } }
VOID CProcessControl::CloseNProcess(INT nIndex) { ADD_LOG(); m_cSection.Lock(); PWATCH_PROCESS_INFORMATION pWatch = m_pTransformData->m_pWatchData->at(nIndex); ::EnumWindows((WNDENUMPROC)EnumClosePro, (LPARAM)pWatch->proinfo.dwProcessId); GetWatchData(nIndex)->nstatus = EXIT; m_cSection.Unlock(); if (WaitForSingleObject(pWatch->proinfo.hProcess, 5000) == WAIT_TIMEOUT) { TerminateProcess(pWatch->proinfo.hProcess, -1); } CLOSE_HANDLE(pWatch->proinfo.hProcess); }
void CTabPageProgram::OnBnClickedButtonDown() { ADD_LOG(); if (!m_bUndateList) { MessageBox(_T("进程已经运行,请勿修改。或暂停监听"), _T("提示"), MB_OKCANCEL); return; } int nindex = m_lt_ShowProgram.GetSelectionMark(); if (nindex >= m_lt_ShowProgram.GetItemCount()) return; m_pProgress->m_pProcessControl->DownConfigItem(nindex); UpdateList(); m_lt_ShowProgram.SetFocus(); m_lt_ShowProgram.SetItemState(nindex+1, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); }
void CTabPageProgram::OnBnClickedButtonDelete() { ADD_LOG(); if (!m_bUndateList) { MessageBox(_T("进程已经运行,请勿修改。或暂停监听"), _T("提示"), MB_OKCANCEL); return; } int n = m_lt_ShowProgram.GetSelectionMark(); if (n < 0 || n > m_lt_ShowProgram.GetItemCount()) return; if (m_pProgress->m_pProcessControl != NULL){ m_pProgress->m_pProcessControl->EraseConfigData(n); UpdateList(); } }
OptionsAudio::OptionsAudio(RefPtr<GUI> parentGui) : IOptionsPanel(parentGui, parentGui->FindWidget("OptionsMainPanel"), "OptionsAudio"), _pendingSettingChanges(false), _loaded(false) { ADD_LOG("Begin Create OptionsAudio"); // InitGui if( _gui->LoadLayout("OptionsAudio.layout", _parentPanel, true) != ErrorCodes::Success) { ADD_LOG("Couldn't load layout : OptionsAudio.layout"); } // Assign widgets RefPtr<Layout> mainLayout = _gui->GetLayout("OptionsAudio.layout"); //_panel = static_cast<MyGUI::Widget*>(_gui->FindInLayout(mainLayout, "PanelVideo")); //_buttonAccept = static_cast<MyGUI::Button*>(_gui->FindInLayout(mainLayout, "ButtonApply")); //_labelMaster = static_cast<MyGUI::EditBox*>(_gui->FindInLayout(mainLayout, "LabelMasterVolume")); // Create sliders //_sliderMaster = CreateVolumeSlider(parentGui, mainLayout, "MasterVolume"); // Set event handlers //_buttonAccept->eventMouseButtonClick += MyGUI::newDelegate(this, &OptionsAudio::ButtonAcceptClicked); // Set locale texts //_buttonAccept->setCaption(GET_TEXT("ButtonApply","Gui.MainMenu.Options.Video")); // Find settings values from configs //_newSettings = SystemSettings::GetAudioSettings(); // Fill controls with data and set current values //_sliderMaster->SetCurrentValue( _newSettings.MasterVolume ); _loaded = true; ADD_LOG("End Create OptionsVideo"); }
void CreateGameScreen::InitGui() { // InitGui if( _gui->LoadLayout("SkirmishSetup.layout", 0, true) != ErrorCodes::Success) { ADD_LOG("Couldn't load layout : SkirmishSetup.layout"); } AssignWidgets(); SetWidgetTexts(); SetEventHandlers(); FillModesCombos(); GUIManager::Instance()->RegisterGUI("CreateGameScreen", _gui); }
void CTabPageProgram::OnBnClickedButtonModify() { ADD_LOG(); if (!m_bUndateList) { MessageBox(_T("进程已经运行,请勿修改。或暂停监听"), _T("提示"), MB_OKCANCEL); return; } int n = m_lt_ShowProgram.GetSelectionMark(); if (n < 0 || n > m_lt_ShowProgram.GetItemCount()) return; ConfigData* p_tran = m_pProgress->m_pProcessControl->GetConfigData(n); if (p_tran != NULL) { CAddExecuteDlg dlg(p_tran, m_pProgress, TRUE); dlg.DoModal(); } UpdateList(); }
bool JudgeDB::uploadMatchResult(int nMatchID, const char* sMatchResult) { CAutoLock _LOCK(getLock()); std::string sql_query; BaseFunc::strFormat(sql_query, JUDGE_CONFIG::SQL_UPLOAD_JUDGE_RESULT, nMatchID, sMatchResult); CDBObject* p_judge_db = getDBObj(); if( !p_judge_db->Query(sql_query.c_str()) ) { ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error()); assert(false); return false; } return true; }
bool JudgeDB::fetchNewMatch(MatchInfo* miBody) { CAutoLock _LOCK(getLock()); const char* sql_query = JUDGE_CONFIG::SQL_FETCH_NEW_MATCH; CDBObject* p_judge_db = getDBObj(); if( !p_judge_db->Query(sql_query) ) { ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error()); assert(false); return false; } CDBObject::PQUERY_RESULT sql_res = NULL; sql_res = p_judge_db->StoreResult(); if (sql_res == NULL) return false; bool b_ret = false; char** res_body = NULL; res_body = p_judge_db->FetchRow(sql_res); if( res_body == NULL) goto end; b_ret = true; memset(miBody, 0, sizeof(MatchInfo)); miBody->MatchID = BaseFunc::strToInteger(res_body[0]); miBody->GameID = BaseFunc::strToInteger(res_body[1]); miBody->PalyerCnt = BaseFunc::strToInteger(res_body[2]); for (int i=0; i<miBody->PalyerCnt; ++i) miBody->Players[i] = BaseFunc::strToInteger(res_body[i+3]); end: p_judge_db->FreeResult(sql_res); p_judge_db->ClearResult(); return b_ret; }
bool JudgeDB::getJudgerExecInfo(int nGameID, std::string& sPath, std::string& sMd5, std::string& sConfig) { CAutoLock _LOCK(getLock()); std::string sql_query; BaseFunc::strFormat(sql_query, JUDGE_CONFIG::SQL_GET_JUDGER_EXEC_INFO, nGameID ); CDBObject* p_judge_db = getDBObj(); if( !p_judge_db->Query(sql_query.c_str()) ) { ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error()); assert(false); return false; } CDBObject::PQUERY_RESULT sql_res = NULL; sql_res = p_judge_db->StoreResult(); if (sql_res == NULL) return false; bool b_ret = false; char** res_body = NULL; res_body = p_judge_db->FetchRow(sql_res); if( res_body == NULL) goto end; b_ret = true; sPath = res_body[1]; sMd5 = res_body[2]; sConfig = res_body[3]; end: p_judge_db->FreeResult(sql_res); p_judge_db->ClearResult(); return b_ret; }
bool JudgeDB::fetchNewSubmit(SubmitionInfo* siBody) { CAutoLock _LOCK(getLock()); const char* sql_query = JUDGE_CONFIG::SQL_FETCH_NEW_SUBMITION; CDBObject* p_judge_db = getDBObj(); if( !p_judge_db->Query(sql_query) ) { ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error()); assert(false); return false; } CDBObject::PQUERY_RESULT sql_res = NULL; sql_res = p_judge_db->StoreResult(); if (sql_res == NULL) return false; bool b_ret = false; char** res_body = NULL; res_body = p_judge_db->FetchRow(sql_res); if( res_body == NULL) goto end; b_ret = true; memset(siBody, 0, sizeof(SubmitionInfo)); siBody->RunID = BaseFunc::strToInteger(res_body[0]); siBody->GameID = BaseFunc::strToInteger(res_body[1]); siBody->UserID = BaseFunc::strToInteger(res_body[2]); siBody->LanguageID = (CodeLanguage)BaseFunc::strToInteger(res_body[3]); end: p_judge_db->FreeResult(sql_res); p_judge_db->ClearResult(); return b_ret; }
bool JudgeDB::storePlayerExecFile(int nRunID, const char* sFilePath, const char* sFileMd5 ) { CAutoLock _LOCK(getLock()); std::string sql_query; BaseFunc::strFormat(sql_query, JUDGE_CONFIG::SQL_STORE_PLAYER_EXEC_FILE, nRunID, sFilePath, sFileMd5); CDBObject* p_judge_db = getDBObj(); if( !p_judge_db->Query(sql_query.c_str()) ) { ADD_LOG("DBError %s, %d: %s", __FUNCTION__, __LINE__, p_judge_db->Error()); assert(false); return false; } return true; }
BOOL CProcessControl::UpdateSimpleProcessList( WATCH_PROCESS_INFORMATION* pWatch, LPCTSTR lpszPath, LPTSTR lpszParam, DWORD dwExtra /* = NULL */) { ADD_LOG(); STARTUPINFO si = { 0 }; PROCESS_INFORMATION pi = { 0 }; si.cb = sizeof(si); si.wShowWindow = SW_SHOW; si.lpTitle = _T("sobey"); si.dwFlags = STARTF_FORCEONFEEDBACK | STARTF_USESHOWWINDOW; if (lpszPath == NULL) { PConfigData ptran = m_pTransformData->m_pConfigData->at(pWatch->nParents); lpszPath = ptran->strPath.GetBuffer(); } if (lpszParam == NULL) { PConfigData ptran = m_pTransformData->m_pConfigData->at(pWatch->nParents); lpszParam = ptran->strParam.GetBuffer(); } BOOL b = ::CreateProcess(lpszPath, lpszParam, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi); int nerror = GetLastError(); ADD_WORSELOG(0==nerror, "GetLastError Code"); ADD_CHECKLOG_BOOL(b); if (b) { pWatch->nstatus = RUN; pWatch->proinfo = pi; } else { pWatch->nstatus = EXIT; pWatch->proinfo = pi; } if (m_hWnd) ::PostMessage(m_hWnd, WM_UPDATEWATCHLIST, TRUE, (LPARAM)dwExtra); return b; }