C++ Run Batch File без перенаправления вывода

tempString = (string("cmd.exe /C \"") + tempString + "\"");

STARTUPINFO si = { sizeof(STARTUPINFO) };

PROCESS_INFORMATION pi;

CreateProcess(NULL, (LPSTR)tempString.c_str(), 0, 0, FALSE, CREATE_UNICODE_ENVIRONMENT, NULL, 0, &si, &pi);

Я запускаю пакетный скрипт из другого процесса через DLL. Проблема в том, что процесс отображает:

ошибка: перенаправление ввода не поддерживается, выход из процесса немедленно.

Как я могу запустить пакетный скрипт, чтобы он не зависел от вызывающего процесса (не закрывается при закрытии вызываемого) и не выводится на консоль вызывающего процесса?

2 ответа

Если вы не хотите показывать окно консоли при выполнении командной строки, вы можете сделать следующее:

tempString = (string(" /C \"") + tempString + "\"");
ShellExecute(NULL, NULL, "cmd.exe", tempString.c_str(), NULL, SW_HIDE);

CREATE_NEW_CONSOLE Параметр flag выделяет новую консоль для использования процессом, чтобы он не использовал тот же стандартный вывод, что и вызывающий процесс.

Другие вопросы по тегам