Проще говоря нужно чтобы во время выполнения моего app.exe вызывалась командная строка Виндовс. Я догадываюсь что делается это через winapi , но нет ли другого пути?
Вызвать командную строку не проблема. Но что вы хотите делать с ней дальше? От ответа на этот вопрос зависит и вариант вызова командной строки.
В варианте в ответе ниже через system() с cmd вы ничего не сможете сделать из программы, и ваша программа будет ждать пока не завершиться cmd.exe, как правило, требуется иное поведение.
Михаил Main, В cmd нет команды end, соответственно она не закроется.
Я имел ввиду, что, видимо в cmd вы захотите выполнить какую-то команду, затем, возможно вы захотите получить вывод этой команды в вашей программе и как-то обработать его или просто получить код возврата. Обычно для этих целей программно запускают cmd.
Михаил Main, Общий принцип, если вам нужно управлять запущенной консолью (или другим приложением) - это перенаправить стандартные потоки ввода вывода (stdin, stdout, stderr) в каналы (pipe). Используя первые части каналов в своей программе вы можете отправлять cmd нужные команды на выполнение и получать вывод команд. Вторые части каналов будет использовать cmd.
Соответственно, гуглите по перенаправлению ввода/вывода, а затем читайте микрософтовскую документацию. Кстати у микрософта есть уже готовые примеры на эту тему, когда-то натыкался.
В этом есть одна некрасивая мелочь: system("команда") работает как %ComSpec% /c команда
и больше подходит для вызова внутренних команд командного процессора или таких его возможностей как перенаправление ввода-вывода. В данном же случае CMD.EXE дёргается дважды (сам запускает себя).