Вставить командную строку в окно? - PullRequest
2 голосов
/ 17 октября 2011

Можно ли встроить системную командную строку прямо в окно вашего приложения?

Я хочу, чтобы командная строка занимала некоторое место в нижней части моего приложения C ++, а мое приложение занималонад пространством.В идеале он должен работать на Mac, Linux и Windows, но для начала Windows - главная цель, так как я занимаюсь этим.

Ответы [ 2 ]

1 голос
/ 17 октября 2011

Говоря о Windows, окно консоли Windows является «особенным» в том смысле, что оно получает специальную обработку, отличную от любого другого окна в системе. Вам не удастся манипулировать им для собственного использования. Для хорошего примера попробуйте использовать Spy ++ в окне консоли.

Обратите внимание, что окно, созданное с помощью AllocConsole, не является интерпретатором командной строки, это просто консольное окно.

Вы должны реализовать свое собственное окно консоли, и что касается интерпретации команд, я могу придумать несколько вариантов для изучения в зависимости от того, что вы ожидаете, с точки зрения поведения и сложности:

  1. Делегирование команд скрытому cmd.exe
  2. Интерпретировать команды самостоятельно
  3. Возможно, есть решения с открытым исходным кодом для интерпретации командной строки.
1 голос
/ 17 октября 2011

В Windows вы можете сделать это, используя некоторые функции WinAPI, такие как ShellExecute и CreateProcess (есть еще несколько, которые я не помню). Вы получаете командную строку из вашего графического интерфейса, передаете ее одной из этих функций WinAPI, а затем отправляете выходные данные обратно в ваш графический интерфейс.

Вы хотите сделать это на нескольких платформах, поэтому я бы предложил создать универсальный модуль (класс или пространство имен функций, в зависимости от того, что вам больше подходит), который позволяет использовать независимость от терминала ОС действующей подчиненной ОС. Затем. когда вы хотите портировать свое приложение на другую ОС, вы просто меняете реализацию этого модуля.

Примечание: Boost имеет (имел?) Разрабатываемую библиотеку, которая упростила запуск команд оболочки, Boost.Process . Но в настоящее время он находится на версии 0.4 и не обновлялся с 4 октября 2010 года (хотя его статус все еще «в работе»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...