Что такое точно “Консоль”?

Я пробую к записи консольного приложения. Это имеет свою исходную консоль, давайте назовем это консолью A. И я хочу, чтобы это приложение сделало следующие вещи через C#:

  1. Откройте другую консоль B в другом потоке, затем будьте введены от A и произведите его к B;
  2. введите команду в A, таком как dir, и покажите вывод в B;

при выполнении вышеупомянутых вещей (все еще не сделанный все же. X_X), я оказываюсь, недостают через понимание того, что консоль, и как это присвоено консольному приложению, особенно самая первая консоль, когда мое консольное приложение начинает работать. Кто-то мог пролить некоторый свет на меня?

Консоль является физически областью памяти в видеопамяти? Или что-то еще? Могли различные потоки в рамках того же процесса иметь другую собственную консоль для ее собственного ввода-вывода?

Большое спасибо...

Привет, парни, теперь я использую одно консольное приложение для запуска другого консольного приложения в новом процессе. Таким образом у меня может быть 2 консольных вывода одновременно.


Мое понимание теперь - то, что для Windows OS консоль является специальным окном, и это - системный ресурс, который ОС присвоила приложению без UI как необходимый пользовательский интерфейс. Windows OS обрабатывает проводное соединение между подготовленной к системе консолью с нашим приложением UI меньше.

9
задан smwikipedia 26 February 2010 в 08:25
поделиться

5 ответов

В терминах Windows консоль - это текстовое окно графического интерфейса, которое вы видите при запуске cmd.exe. Это позволяет вам писать текст и читать текст из окна без окна, имеющего какой-либо другой хром пользовательского интерфейса, такой как панели инструментов, меню, вкладки и т. Д.

Для начала вам нужно загрузить Visual Studio, создайте новый проект и выберите «Консольное приложение». Измените шаблонный код, создаваемый Visual Studio, на:

using System;
using System.Text;

namespace MyConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Hello, world!");
            Console.ReadKey();
        }
    }
}

При запуске приложения открывается окно консоли с текстом «Hello, world!». и он будет оставаться открытым, пока вы не нажмете клавишу. Это консольное приложение.

Является ли окно консоли физически областью памяти видеопамяти? Или что-то еще?

Физически это не область видеопамяти, это «что-то еще». Страница Wikipedia Win32 console дает довольно подробное описание всех входов и выходов.

6
ответ дан 4 December 2019 в 20:23
поделиться

Консольное приложение имеет только одно окно. У него нет функций управления окнами для создания дочерних «консолей».

Вы можете запускать дополнительные консольные приложения, но это отдельные объекты.

2
ответ дан 4 December 2019 в 20:23
поделиться

Нет. Это подсистема графического интерфейса windows. В WinAPI есть функции для работы с консолью: http://msdn.microsoft.com/en-us/library/ms682073%28VS.85 %29. aspx

1
ответ дан 4 December 2019 в 20:23
поделиться

Консоль (OS) - это процесс (содержащий один или несколько потоков выполнения, все они делят одно и то же пространство памяти), и этот процесс имеет:

  • стандартный ввод (поток входных байт), то, что вы вводите
  • стандартный вывод (поток выходных байт), то, что печатает программа
  • стандартная ошибка (поток выходных байт), то, что программа печатает, когда она жалуется на что-то

Так что если вы хотите создать другую консоль (из . Net) и связать вход/выход, как я понимаю, вы должны создать процесс (выполняя "cmd.exe", например).

Я не знаю API .Net для работы с процессами, но если он похож на Java, вы можете подключить stdin, out и err, чтобы вы могли играть с созданным процессом из исходного.

1
ответ дан 4 December 2019 в 20:23
поделиться

Приложение windows может иметь одну консоль или не иметь консоли, оно не может иметь более одной. См. документацию по AllocConsole. Консоль, по сути, является эмуляцией "до-Windows" дней, когда буквально существовала "консоль управления", т.е. клавиатура и экран, подключенные к компьютеру мэйнфрейма. Чтобы сделать то, что вы хотите, вы можете породить другой процесс с собственной консолью и общаться между ними, или сделать GUI-приложение, которое выглядит как окно консоли.

1
ответ дан 4 December 2019 в 20:23
поделиться
Другие вопросы по тегам:

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