BOOL ExecCmdline(WCHAR *title, WCHAR *path, WCHAR *cmd) { if(NULL == cmd || NULL == title) { return FALSE; } if(NULL == path) { SetCurrentDirectory(path); lstrcpy(szSubPathLast, path); } SetWindowText(hConsole, szTitle); STARTUPINFO si = { sizeof(si) }; PROCESS_INFORMATION pi; si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = TRUE; BOOL bRet = CreateProcess(NULL, cmd, NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi); if(bRet) { dwChildrenPid = MyGetProcessId(pi.hProcess); } else { wprintf(L"ExecCmdline \"%s\" failed!\n", cmd); MessageBox(NULL, cmd, L"Error: Cannot execute!", MB_OK); ExitProcess(0); } CloseHandle(pi.hThread); CloseHandle(pi.hProcess); lstrcpy(szSubTitleLast, title); lstrcpy(szSubCommandLast, cmd); return TRUE; }
CString GetProcessInfo( HANDLE hProcess ) { const DWORD id = MyGetProcessId(hProcess); CString s; TCHAR szExe[MAX_PATH] = _T(""); GetModuleFileNameEx( hProcess, NULL, szExe, MAX_PATH ); s.Format( _T("handle: %X, id: 0x%X (%d), image: \"%s\""), hProcess, id, id, szExe ); return s; }
BOOL ExecCmdline() { SetWindowText(hConsole, szTitle); STARTUPINFO si = { sizeof(si) }; PROCESS_INFORMATION pi; si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = TRUE; BOOL bRet = CreateProcess(NULL, szCommandLine, NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi); if(bRet) { dwChildrenPid = MyGetProcessId(pi.hProcess); } else { wprintf(L"ExecCmdline \"%s\" failed!\n", szCommandLine); MessageBox(NULL, szCommandLine, L"Error: \x6267\x884c\x547d\x4ee4\x5931\x8d25!", MB_OK); ExitProcess(0); } CloseHandle(pi.hThread); CloseHandle(pi.hProcess); return TRUE; }