Как сделать оболочку?

Как каждый делает оболочку?
- Это может запустить консольные приложения как менеджер по FAR с цветами и всеми...
Перенаправление консольного вывода, кажется, не достаточно.
- PowerShell, действительно кажется, делает это, не используя cmd.exe.

Игра конца должна была бы создать графическую оболочку (не использующий консоль по умолчанию).
Таким образом от того, что я собрал, мне будет нужно к не, только получают консоль IO, но и прерывают вызовы к Win32Api о консоли (как WriteConsoleOutput, SetConsoleCursorPosition...)

8
задан CiNN 28 December 2009 в 01:37
поделиться

4 ответа

Большинство DOS-приложений с графическим интерфейсом пользователя не будут работать, если вы просто перехватываете (перенаправляете) выход и ввод. Эти программы, которые по умолчанию пишут непосредственно на видеоаппаратуру или используют прерывания DOS, должны будут запускаться в консольном окне, если вы используете Windows. Консоль Windows будет эмулировать достаточно среды DOS, чтобы эти типы программ функционировали должным образом.

Как упоминал Нил Баттерворт, для запуска программ вы должны использовать одну из исполняемых функций. Для DOS-программ нет ничего особенного: операционная система может сказать, глядя на исполняемый файл, является ли программа программой для Windows или консольной программой

.
0
ответ дан 6 December 2019 в 00:07
поделиться

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

.
3
ответ дан 6 December 2019 в 00:07
поделиться

Я не уверен, но на ваш взгляд это консольные Win32 API. Это то, что вы должны вызывать, чтобы детально взаимодействовать с консольным окном в символьном режиме.

Если вы хотите что-то вроде оболочки, которая на самом деле не является консольным окном, то вам нужно узнать о Win32 трубах и CreateProcess API. Вы будете использовать трубы для захвата вывода и подачи на вход.

Если вы хотите смешивать в GUI-приложениях, то у вас впереди гигантская работа, если вы действительно хотите заставить их окна быть в дереве окон вашего приложения.

.
1
ответ дан 6 December 2019 в 00:07
поделиться

Полный, но сложный пример интерактивной оболочки доступен в дистрибутиве Microsoft F# . Код интерактивной оболочки F# находится в папке C:\Program Files\FSharp-1.9.7.8\source\fsharp\Fsi.

Другой пример в C доступен как часть дистрибутива TCL. Код, реализующий командную оболочку TCL, находится в папке \win.

.
0
ответ дан 6 December 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: