@danij_com

Как передать вывод?

Наверное ужасно сформулированный заголовок.
У меня есть ф-ция, которая получает значение, выведенное в консоль
this->_returnValue = system(this->_command.c_str());

_returnValue - интовая переменная.

Но данный код при каждом вызове спавнит окно консоли, что не есть хорошо. В других частях кода я решил появление консоли через
ShellExecute(NULL, "open", "cmd.exe", (this->_command.c_str()), NULL, SW_HIDE);

Но тут проблема в том, что значение из консоли все-же нужно получить, и тут мой вариант не работает.
Есть другие варианты реализации этого?
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
1. Чтобы получить ссылку на CMD.EXE, прочитайте переменную окружения COMSPEC.
2. Не используйте ShellExecute для запуска того, что гарантированно программа, для этого есть CreateProcess.
3. Да, и не забывайте, что ShellExecute заканчивает работу, когда программа пошла на исполнение. Если нужен результат исполнения — всё тот же CreateProcess + ввод-вывод через каналы + WaitForSingleObject.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы