I have some code that starts up an executable with system(). It works fine except that it shows up a command prompt for a little while.
We want to get rid of that, so I changed the code to use CreateProcess. Now no window shows up but the program crashes. Anyone know what Im doing wrong?
Code:int doCmdLineCall(std::string command) const { //return system(command.c_str()); // mimic return value of system() to not change error handling behaviour STARTUPINFO info = {0}; PROCESS_INFORMATION procInfo = {0}; BOOL ret = FALSE; std::string::size_type i = command.find_first_of(' '); std::string cmd; std::string param; if (i != std::string::npos) { cmd = command.substr(0, i); i++; param = command.substr(i, command.length()); info.cb = sizeof(info); info.dwFlags = STARTF_USESHOWWINDOW; info.wShowWindow = SW_HIDE; ret = CreateProcessA(cmd.c_str(), (char *)param.c_str(), NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &info, &procInfo); if (ret) { WaitForSingleObject(procInfo.hProcess, (DWORD)-1L); DWORD exitcode; GetExitCodeProcess(procInfo.hProcess, &exitcode); ret = (intptr_t)(int)exitcode; CloseHandle(procInfo.hProcess); CloseHandle(procInfo.hThread); } } return 0;// system(command.c_str()); }



LinkBack URL
About LinkBacks


