Я пробую к записи консольного приложения. Это имеет свою исходную консоль, давайте назовем это консолью A. И я хочу, чтобы это приложение сделало следующие вещи через C#:
- Откройте другую консоль B в другом потоке, затем будьте введены от A и произведите его к B;
- введите команду в A, таком как dir, и покажите вывод в B;
при выполнении вышеупомянутых вещей (все еще не сделанный все же. X_X), я оказываюсь, недостают через понимание того, что консоль, и как это присвоено консольному приложению, особенно самая первая консоль, когда мое консольное приложение начинает работать. Кто-то мог пролить некоторый свет на меня?
Консоль является физически областью памяти в видеопамяти? Или что-то еще? Могли различные потоки в рамках того же процесса иметь другую собственную консоль для ее собственного ввода-вывода?
Большое спасибо...
Привет, парни, теперь я использую одно консольное приложение для запуска другого консольного приложения в новом процессе. Таким образом у меня может быть 2 консольных вывода одновременно.
Мое понимание теперь - то, что для Windows OS консоль является специальным окном, и это - системный ресурс, который ОС присвоила приложению без UI как необходимый пользовательский интерфейс. Windows OS обрабатывает проводное соединение между подготовленной к системе консолью с нашим приложением UI меньше.
В терминах 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 дает довольно подробное описание всех входов и выходов.
Консольное приложение имеет только одно окно. У него нет функций управления окнами для создания дочерних «консолей».
Вы можете запускать дополнительные консольные приложения, но это отдельные объекты.
Нет. Это подсистема графического интерфейса windows. В WinAPI есть функции для работы с консолью: http://msdn.microsoft.com/en-us/library/ms682073%28VS.85 %29. aspx
Консоль (OS) - это процесс (содержащий один или несколько потоков выполнения, все они делят одно и то же пространство памяти), и этот процесс имеет:
Так что если вы хотите создать другую консоль (из . Net) и связать вход/выход, как я понимаю, вы должны создать процесс (выполняя "cmd.exe", например).
Я не знаю API .Net для работы с процессами, но если он похож на Java, вы можете подключить stdin, out и err, чтобы вы могли играть с созданным процессом из исходного.
Приложение windows может иметь одну консоль или не иметь консоли, оно не может иметь более одной. См. документацию по AllocConsole. Консоль, по сути, является эмуляцией "до-Windows" дней, когда буквально существовала "консоль управления", т.е. клавиатура и экран, подключенные к компьютеру мэйнфрейма. Чтобы сделать то, что вы хотите, вы можете породить другой процесс с собственной консолью и общаться между ними, или сделать GUI-приложение, которое выглядит как окно консоли.