Что такое консоль в программировании
Перейти к содержимому

Что такое консоль в программировании

  • автор:

Консоль (информатика)

В большинстве современных компьютеров консолью является комплект устройств интерактивного ввода-вывода, присоединённых к компьютеру непосредственно (не через сеть): дисплей, клавиатура, мышь. Консольный сеанс в многопользовательских операционных системах — это сеанс, осуществляемый человеком, сидящим непосредственно перед компьютером (в противоположность сеансу удалённого доступа, например через ssh, X Window System, RDP и т. п.). Данная трактовка термина консоль безотносительна к типу пользовательского интерфейса: текстовому (CUI) или графическому (GUI).

См. также: KVM-переключатель

Текстовые терминалы

В старых компьютерных системах консолью называлось устройство для вывода системных сообщений: АЦПУ или монитор. Впоследствии вместо АЦПУ стали применять мониторы, снабжённые знакогенератором, что позволило быстро и удобно организовывать диалог с пользователем. Отсюда происходит традиция называть программы с текстовым интерфейсом консольными.

В некоторых системах (в том числе в современных встраиваемых системах) в качестве консоли используется текстовый терминал, подключённый к последовательному порту.

Иные значения, имеющие отношение к информатике

  • В различных программах и играх консолью стали называть окно для вывода системных сообщений и приёма команд (см.: интерфейс командной строки).
  • Консолью называют программное обеспечение, реализующее текстовый интерфейс. В UNIX-подобных системах поддержка текстового интерфейса встроена в ядро.
  • Microsoft Management Console в Microsoft Windows — оболочка для управления системной конфигурацией Windows. Существует также специальный тип окна, используемый текстовыми программами (ошибочно называемый окном MS-DOS, из-за использования коммандного интерпретатора DOS, в ранних версиях Windows) — такие окна также могут быть названы консольными.
  • Игровая консоль — синоним приставки.

Wikimedia Foundation . 2010 .

Функции консоли

Для доступа к консоли используются следующие функции.

Function Description
AddConsoleAlias Определяет псевдоним консоли для указанного исполняемого файла.
AllocConsole Выделяет новую консоль для вызывающего процесса.
AttachConsole Присоединяет вызывающий процесс к консоли указанного процесса.
ClosePseudoConsole Закрывает псевдоконсоль из заданного дескриптора.
CreatePseudoConsole Выделяет новый псевдоконсол для вызывающего процесса.
CreateConsoleScreenBuffer Создает буфер экрана консоли.
FillConsoleOutputAttribute Задает атрибуты цвета текста и фона для указанного количества ячеек символов.
FillConsoleOutputCharacter Записывает символ в буфер экрана консоли в заданное количество раз.
FlushConsoleInputBuffer Очищает входной буфер консоли.
FreeConsole Отсоединяет вызывающий процесс от консоли.
GenerateConsoleCtrlEvent Отправляет указанный сигнал в группу процессов консоли, которая предоставляет общий доступ к консоли, связанной с вызывающим процессом.
GetConsoleAlias Извлекает указанный псевдоним для указанного исполняемого файла.
GetConsoleAliases Извлекает все определенные псевдонимы консоли для указанного исполняемого файла.
GetConsoleAliasesLength Возвращает размер буфера в байтах, необходимый для хранения всех псевдонимов консоли для указанного исполняемого файла.
GetConsoleAliasExes Извлекает имена всех исполняемых файлов с определенными псевдонимами консоли.
GetConsoleAliasExesLength Возвращает размер буфера в байтах, необходимый для хранения имен всех исполняемых файлов с определенными псевдонимами консоли.
GetConsoleCP Извлекает входную кодовую страницу, используемую консолью, связанной с вызывающим процессом.
GetConsoleCursorInfo Извлекает сведения о размере и видимости курсора для указанного буфера экрана консоли.
GetConsoleDisplayMode Извлекает режим отображения текущей консоли.
GetConsoleFontSize Извлекает размер шрифта, используемого указанным буфером экрана консоли.
GetConsoleHistoryInfo Извлекает параметры журнала для консоли вызывающего процесса.
GetConsoleMode Извлекает текущий входной режим входного буфера консоли или текущий выходной режим буфера экрана консоли.
GetConsoleOriginalTitle Извлекает исходное название текущего окна консоли.
GetConsoleOutputCP Извлекает выходную кодовую страницу, используемую консолью, связанной с вызывающим процессом.
GetConsoleProcessList Извлекает список процессов, подключенных к текущей консоли.
GetConsoleScreenBufferInfo Извлекает сведения о указанном буфере экрана консоли.
GetConsoleScreenBufferInfoEx Извлекает расширенные сведения о указанном буфере экрана консоли.
GetConsoleSelectionInfo Извлекает сведения о текущем выборе консоли.
GetConsoleTitle Извлекает заголовок текущего окна консоли.
GetConsoleWindow Извлекает дескриптор окна, используемый консолью, связанной с вызывающим процессом.
GetCurrentConsoleFont Извлекает сведения о текущем шрифте консоли.
GetCurrentConsoleFontEx Извлекает расширенные сведения о текущем шрифте консоли.
GetLargestConsoleWindowSize Извлекает размер максимального возможного окна консоли.
GetNumberOfConsoleInputEvents Извлекает количество непрочитанных входных записей в входном буфере консоли.
GetNumberOfConsoleMouseButtons Извлекает количество кнопок мыши, используемых текущей консолью.
GetStdHandle Извлекает дескриптор стандартного входного, стандартного выходного или стандартного устройства ошибок.
HandlerRoutine Определяемая приложением функция, используемая с функцией SetConsoleCtrlHandler .
PeekConsoleInput Считывает данные из указанного входного буфера консоли, не удаляя его из буфера.
ReadConsole Считывает входные данные символов из буфера ввода консоли и удаляет его из буфера.
ReadConsoleInput Считывает данные из входного буфера консоли и удаляет его из буфера.
ReadConsoleInputEx Считывает данные из входного буфера консоли и удаляет его из буфера с настраиваемым поведением.
ReadConsoleOutput Считывает данные символов и атрибутов цвета из прямоугольного блока ячеек символов в буфере экрана консоли.
ReadConsoleOutputAttribute Копирует указанное количество атрибутов переднего плана и фона из последовательных ячеек буфера экрана консоли.
ReadConsoleOutputCharacter Копирует несколько символов из последовательных ячеек буфера экрана консоли.
ResizePseudoConsole Изменяет размер внутренних буферов для псевдоконсоля до заданного размера.
ScrollConsoleScreenBuffer Перемещает блок данных в буфере экрана.
SetConsoleActiveScreenBuffer Задает указанный буфер экрана для текущего отображаемого буфера экрана консоли.
SetConsoleCP Задает входную кодовую страницу, используемую консолью, связанной с вызывающим процессом.
SetConsoleCtrlHandler Добавляет или удаляет определяемый приложением ОбработчикRoutine из списка функций обработчика для вызывающего процесса.
SetConsoleCursorInfo Задает размер и видимость курсора для указанного буфера экрана консоли.
SetConsoleCursorPosition Задает позицию курсора в указанном буфере экрана консоли.
SetConsoleDisplayMode Задает режим отображения указанного буфера экрана консоли.
SetConsoleHistoryInfo Задает параметры журнала для консоли вызывающего процесса.
SetConsoleMode Задает режим ввода для входного буфера консоли или режим вывода для буфера экрана консоли.
SetConsoleOutputCP Задает выходную кодовую страницу, используемую консолью, связанной с вызывающим процессом.
SetConsoleScreenBufferInfoEx Задает расширенные сведения о указанном буфере экрана консоли.
SetConsoleScreenBufferSize Изменяет размер указанного буфера экрана консоли.
SetConsoleTextAttribute Задает атрибуты переднего плана (текста) и фона символов, записанных в буфер экрана консоли.
SetConsoleTitle Задает заголовок текущего окна консоли.
SetConsoleWindowInfo Задает текущий размер и положение окна буфера экрана консоли.
SetCurrentConsoleFontEx Задает расширенные сведения о текущем шрифте консоли.
SetStdHandle Задает дескриптор стандартного входного, стандартного выходного или стандартного устройства ошибок.
WriteConsole Записывает строку символов в буфер экрана консоли, начиная с текущего положения курсора.
WriteConsoleInput Записывает данные непосредственно в буфер входных данных консоли.
WriteConsoleOutput Записывает данные символов и атрибутов цвета в указанный прямоугольный блок ячеек символов в буфере экрана консоли.
WriteConsoleOutputAttribute Копирует ряд атрибутов переднего плана и фона в последовательные ячейки буфера экрана консоли.
WriteConsoleOutputCharacter Копирует ряд символов в последовательные ячейки буфера экрана консоли.

Дополнительные ресурсы

Значок отказа согласно Закону Калифорнии о защите конфиденциальности потребителей (CCPA)

Что такое командная строка или консоль

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

Запуск командной строки

Существуют, как минимум, три способа запуска командной строки в операционной системе Windows. Один из наиболее быстрых – одновременно нажать на клавиатуре клавишу Windows (с иконкой Windows) и R. При этом откроется меню «Выполнить». Достаточно ввести cmd, нажать кнопку «ОК». Обратите внимание, что командная строка откроется с правами локального пользователя. Если необходимо открыть командную строку с правами администратора, то воспользуйтесь другим способом. komandnaya-stroka-konsol-1Второй способ – открыть строку поиска и ввести в нее cmd или «командная строка», запустить командную строку, щелкнув по ней мышью. Если требуется запустить командную строку от имени администратора, щелкните по ней правой кнопкой мыши и выберите «Запуск от имени администратора». Этот способ сработает, если у вас Windows 7 и более поздних версий. Пользователям более ранних версий Windows, чтобы запустить командную строку с правами администратора, нужно найти ее в стандартных программах, щелкнуть правой кнопкой мыши по командной строке и выбрать «Запуск от имени администратора». komandnaya-stroka-konsol-2 komandnaya-stroka-konsol-3

Команды

komandnaya-stroka-konsol-4

Для командной строки существует набор допустимых команд, которые необходимо вводить, соблюдая синтаксис. Для просмотра списка допустимых команд введите команду help и нажмите Enter. Давайте рассмотрим команды, которые могут пригодиться при настройке средств анонимизации.

ping

komandnaya-stroka-konsol-5

Эта команда позволяет определить наличие соединения с удаленным компьютером, а также скорость передачи данных и процент потерь. Удаленный компьютер, который будем пинговать (определим параметры соединения с ним) можно указывать по названию (например, yandex.ru) или ip (например, 77.88.55.60) ping yandex.ru ping 77.88.55.60

tracert

komandnaya-stroka-konsol-6

Эта команда служит для определения какие серверы в сетевом пути к указанному ресурсу и время отклика каждого из них. Например, для определения пути до yandex.ru введите в командной строке tracert yandex.ru.

ipconfig /all

komandnaya-stroka-konsol-7

Команда предназначена для вывода деталей текущего соединения и управления клиентскими сервисами DHCP и DNS, позволяет определять значения конфигурации.

route

Команда обеспечивает доступ к содержимому таблицы IP-маршрутизации. Для просмотра функций введите команду без параметров: route komandnaya-stroka-konsol-8Для вывода на экран: route print komandnaya-stroka-konsol-9Для добавления маршрута до конечной точки: route add Например, маршрут по умолчанию с адресом стандартного шлюза 192.168.12.1: route add 0.0.0.0 mask 0.0.0.0 192.168.12.1 Чтобы добавить постоянный маршрут нужно добавить после route параметр –р, например: route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1 komandnaya-stroka-konsol-10

Итог

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

lock

Управляй мультиаккаунтами безопасно

Обеспечь анонимность с помощью мощного антидетект-браузера

Учебники. Программирование для начинающих.

Programm.ws — это сайт, на котором вы можете почитать литературу по языкам программирования , а так-же посмотреть примеры работающих программ на С++, ассемблере, паскале и много другого..

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

Ассемблер — примеры и задачи

Глава 5. Работа с консолью в программах на ассемблере

Работа с консолью в среде Windows

Если ничто другое не помогает,
прочтите, наконец, инструкцию.
Прикладная Мерфология

В этом разделе будут рассмотрены средства для работы с консолью в среде операционной системы Windows. Как известно, Windows поддерживает работу двух типов приложений — оконных, в полной мере использующих все достоинства графического интерфейса, и консольных, работающих исключительно в текстовом режиме. Поэтому не следует путать понятие «консоли», используемое выше, с понятием «консольного приложения» Windows. В предшествующем материале под «консолью» подразумевались средства для ввода информации с клавиатуры и вывода ее на экран. Для однозначности изложения далее под термином «консоль» мы будем иметь в виду либо само консольное приложение, либо его видимую часть — окно консольного приложения.
Далее мы рассмотрим порядок ввода-вывода данных в консольное приложение для Windows, написанное на ассемблере. Организация ввода-вывода в оконном приложении Windows здесь рассматриваться не будет, так как в уроках 18 «Создание Windows-приложений на ассемблере» и 19 «Архитектура и программирование сопроцессора» учебника этот вопрос был рассмотрен очень подробно и полно. Что-либо существенное добавить к уже сказанному трудно. Данная книга рассматривается как практическое продолжение учебника, поэтому повторяться просто не имеет смысла. Что же касается организации работы с консольным приложением, то этот вопрос в учебнике был рассмотрен слабо — в контексте одной из задач урока 20 «ММХ-технология микропроцессоров Intel». Поэтому есть смысл рассмотреть его более систематично, попутно осветив проблемы ввода-вывода в консольном приложении Windows. Это тем более актуально, что при программировании на ассемблере необходимость написания консольного приложения возникает более часто, чем оконного. Причина проста — малыми затратами нам становятся доступны многие возможности API Win32.

Организация ввода-вывода в консольном приложении Windows

Язык ассемблера — язык системных программистов, исследователей принципов работы операционных систем, программ и аппаратных средств. Здесь не нужны красивые графические оболочки, а, наоборот, велика потребность в удобных средствах для работы с текстовой информацией. Операционная система Windows обеспечивает встроенную поддержку консолей, которые, по определению, являются интерфейсами ввода-вывода для приложений, работающих в текстовом режиме.
Консоль состоит из одного входного и нескольких экранных буферов. Входной буфер представляет собой очередь, каждая запись которой содержит информацию относительно отдельного входного события консоли. Экранный буфер — h двумерный массив, содержащий символы, выводимые в окно консоли, и данные [ об их цвете.
Очередь входного буфера содержит информацию о следующих событиях:

  • нажатии и отпускании клавиш;
  • манипуляциях мышью — движение, нажатие-отпускание кнопок;
  • изменение размера активного экранного буфера, состояние прокрутки.

Для поддержки работы консольных приложений API Win32 содержит более сорока функций, предназначенных для интеграции в среду Windows программ, работающих в текстовом режиме. Данные функции предоставляют два уровня доступа к консоли — высокий и низкий. Консольные функции ввода высокого уровня позволяют приложению извлечь данные, полученные при вводе с клавиатуры и сохраненные во входном буфере консоли. Консольные функции вывода высокого уровня позволяют приложению записать данные в устройства стандартного вывода или ошибки с тем, чтобы отобразить этот текст в экранном буфере консоли. Функции высокого уровня также поддерживают переназначение стандартных дескрипторов ввода-вывода и управление режимами работы консоли. Консольные функции низкого уровня позволяют приложениям получить детальную информацию о вводе с клавиатуры, событиях нажатия-отпускания кнопок мыши и о манипуляциях пользователя с окном консоли, а также осуществить больший контроль над выводом данных на экран.
Таким образом, API Win32 предоставляет два разных подхода для обеспечения ввода-вывода с консолью, выбор нужного зависит от гибкости и полноты контроля, которыми хочет обладать приложение для обеспечения своей работы с консолью. Функции высокого уровня обеспечивают простоту процесса ввода-вывода путем использования стандартных дескрипторов ввода-вывода, но при этом невозможен доступ к входному и экранным буферам консоли. Функции низкого уровня требуют учета большего количества деталей и объема кода, но это компенсируется большей гибкостью.
Высокоуровневый и низкоуровневый консольный ввод-вывод не являются взаимоисключающими, и приложение может использовать любую комбинацию этих функций.
С каждой консолью связаны две кодовые таблицы — по одной для ввода и вывода. Консоль использует входную кодовую таблицу для трансляции ввода с клавиатуры в соответствующее символьное значение. Аналогичным образом используется кодовая таблица вывода — для трансляции символьных значений, формируемых различными функциями вывода, в символ, отображаемый в окне консоли. Для работы с кодовыми таблицами приложение может использовать пары — функции SetConsoleCP и GetConsoleCP для входных кодовых таблиц и функции SetConsoleOutputCP и GetConsoieOutputCP для выходных кодовых таблиц. Идентификаторы кодовых таблиц, доступные на данном компьютере, сохраняются в системном реестре следующим ключом: :prg05_12.asm — программа, демонстрирующая использование пользовательского обработчика события.
.data
Text_CTRL_C db «Нажаты CTRL+C»
Len_Text_CTRL=$-Text_CTRL_C
TextJREAK db «Нажаты CTRL+BREAK»
Len_BREAK=$-Text_BREAK
.code
CtrlHandler proc
arg @@dwCtrlType:DWORD
uses ebx.edi. esi ;эти регистры обязательно должны сохраняться
:анализируем тип сигнала управления
cmp @@dwCtrlType.CTRL_C_EVENT
je h_CTRL_C_EVENT
cmp (a@dwCtrlType.CTRL_BREAK_EVENT
je h_CTRL_BREAK_EVENT
jmp h_default
h_CTRL_C_EVENT: :при нажатии CTRL+C выводим сообщение: установим курсор

call SetConsoleCursorPosition :вывести строку Text_CTRL_C call WriteConsoleA
; возвращаем признак обработки
mov eax.l
jmp exit_CtrlHandler h_CTRL_BREAK_EVENT:
;при нажатии CTRL+BREAK выводим сообщение:
установим курсор
call SetConsoleCursorPosition : вывести строку
call WriteConsoleA
;возвращаем признак обработки
mov eax.l
jmp exit_CtrlHandler
h_default: mov eax.Offffffffh;возвращаем остальное не обрабатываем
exit_CtrlHandler: ret CtrlHandler endp start proc near ;точка входа в программу:
:работаем .
:получим стандартные дескрипторы ввода-вывода
установим функцию-обработчик сигналов управления
push TRUE
push offset cs: CtrlHandler
call SetConsoleCtrlHandler
onp eax. 0
jz exit :если неуспех ;введем строку в буфер TitleText установим курсор в позицию (2.6)
call SetConsoleCursorPosition call ReadConsoleA
:выведем введенную строку в заголовок окна консоли: push offset TitleText call SetConsoleTitleA
:выведем строку в окно консоли с различных позиций и с разными цветами
mov ecx.10 :строку выведем 10 раз
mov bl.10000001b начальные атрибуты ml: push ecx установим курсор в позицию
call SetConsoleCursorPosition
определим атрибуты выводимых символов — будем получать их циклически сдвигом регистра BL хог еах.еах
rol Ы .1
mov al ,Ы
push eax
push d0ut
call SetConsoleTextAttribute . :вывести строку TitleText
call WriteConsoleA cmp eax.0
jz exit ;если неуспех pop ecx
loop ml

Относительно этой программы можно сделать два замечания. Первое касается функции Handl erRoutine, которая в нашей программе называется Ctrl Handler. Как упоминалось, эта функция является функцией обратного вызова. Ее вызов производится при возникновении определенных событий неявно — из системы Windows. По структуре и алгоритму работы она аналогична оконной функции, которую мы рассматривали в уроке 18 «Создание Windows-приложений на ассемблере» учебника. Поэтому за всеми подробностями отсылаем читателя к этому материалу. Второе замечание касается порядка отладки приложений, содержащих определяемые пользователем функции (процедуры) обратного вызова. Первое, что нужно сделать в процессе пошагового выполнения программы в отладчике, — выяснить адрес процедуры обратного вызова. В программе выше это можно сделать, выяснив, какое значение будет помещено в стек при выполнении команд:

.
[установим функцию-обработчик сигналов управления
push TRUE
push offset cs: Ctrl Handler
call SetConsoleCtrlHandler
cmp eax. 0
jz exit [если неуспех
.

После этого, сделав активным окно отладчика CPU (выбрав в меню команду
View CPU), необходимо установить указатель мыши в окно с командами процес-; сора и щелкнуть правой кнопкой мыши. В появившемся контекстном меню вы-
бер*етс пункт Goto. В результате этих действий отладчик отобразит диалоговое ¦ окно, в которое необходимо внести адрес программы-обработчика Ctrl Handler. ; В результате этого в верхней части окна команд отобразится первая команда [‘ процедуры Ctrl Handler. Установите на нее курсор и нажмите клавишу F4. Все, S программа начнет выполняться по своему алгоритму. При нажатии пользователем
управляющих комбинаций клавиш, допустимых функцией Handl erRoutine, управ-I ление будет передано этой функции, и вы сможете произвести ее отладку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *