Консольные приложения: API -функции для работы с консольными приложениями. — КиберПедия 

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Консольные приложения: API -функции для работы с консольными приложениями.

2023-01-01 38
Консольные приложения: API -функции для работы с консольными приложениями. 0.00 из 5.00 0 оценок
Заказать работу

Windows поддерживает два типа приложений:

· основанные на графическом интерфейсе (Graphical User Interface, GUI);

· консольные (Console User Interface, CUI)

Консоль – текстовое окно. Консоль – интерфейс для ввода-вывода в текстовом режиме. Система создает консоль, когда запускается консольное приложение. Консоль состоит из входного буфера (input buffer) и одного или нескольких экранных буферов (screen buffers). Входной буфер содержит очередь входных событий (нажатие клавиш, события мыши, изменение размеров экранного буфера). Выходной буфер – это двумерный массив символов и цветовых данных для вывода на экран. Консольный процесс использует дескрипторы (описатели, handles) для доступа к входному и экранному буферам своей консоли. Дескриптор представляет собой индекс в таблице дескрипторов, принадлежащих процессу. Таблица дескрипторов содержит указатели на все объекты, используемые данным процессом.

Чтобы получить дескриптор консоли, нужно использовать следующую функцию:

    HANDLE GetStdHandle (DWORD nStdHandle)

Функция возвращает дескриптор одного из стандартных устройств:

· стандартного ввода (standard input)

· стандартного вывода (standard output)

· стандартного сообщения об ошибке (standard error)

Аргументом функции GetStdHandle является одна из следующих констант:

· для ввода:

STD_INPUT_HANDLE equ -10

· для вывода:

STD_OUTPUT_HANDLE equ -11

· для сообщения об ошибке:

STD_ERROR_HANDLE equ -12

Для вывода на консоль используется функция WriteConsole:

BOOL WriteConsole (

HANDLE hConsoleOutput,; дескриптор выходного буфера консоли

const VOID * lpBuffer,; адрес строки для вывода на консоль

DWORD nNumberOfCharsToWrite,; длина строки

LPDWORD lpNumberOfCharsWritten,; адрес переменной, куда будет помещено количество действительно выведенных символов

LPVOID lpReserved); зарезервировано, нужно 0

Для завершения приложения используется функция ExitProcess:

VOID ExitProcess(UINT uExitCode)

Для создания консоли из процесса можно воспользоваться двумя способами:

1) функция AllocConsole (без аргументов)

2) функция CreateProcess с параметром CREATE_NEW_CONSOLE

При завершении программы консоль автоматически освобождается.

Установку позиции курсора осуществляет функция SetConsoleCursorPosition:

BOOL SetConsoleCursorPosition(

HANDLE hConsoleOutput,

COORD dwCursorPosition);

Заголовок окна консоли определяет функция SetConsoleTitle:

BOOL SetConsoleTitle (

LPCTSTR lpConsoleTitle);

где lpConsoleTitle – адрес строки, оканчивающейся на ноль (в OEM-кодировке).

Всего консольных функций около 60

При правильном их завершении возвращается ненулевое значение

В случае ошибки в EAX помещается ноль

Отладку консольных приложений можно осуществлять в дизассемблерах (W32Dasm, OllyDbg)

 

Обработка событий в консольных приложениях.

Программирование в Windows основано на событийной модели – приложение получает сообщения о событиях, происходящих
в системе и в самом приложении. Большинство событий связано с клавиатурой и мышью. Основа программирования в Windows – написание процедур, которые реагируют на сообщения операционной системы.

Для получения сообщений от клавиатуры
и мыши в консольном приложений можно использовать функцию ReadConsoleInput.

Структура INPUT_RECORD:

typedef struct _INPUT_RECORD {

WORD EventType;

    union {

              KEY_EVENT_RECORD KeyEvent; MOUSE_EVENT_RECORD MouseEvent; WINDOW_BUFFER_SIZE_RECORD                   WindowBufferSizeEvent; MENU_EVENT_RECORD MenuEvent;     FOCUS_EVENT_RECORD FocusEvent;

} Event;

} INPUT_RECORD;

Виртуальные коды некоторых клавиш:

· VK_BACK (08) – BACKSPACE

· VK_TAB (09) – TAB

· VK_RETURN (0D) – ENTER

· VK_SHIFT (10) – SHIFT

· VK_CONTROL (11) – CTRL

· VK_ESCAPE (1B) – ESC

· VK_LSHIFT (A0) – Left SHIFT

· VK_RSHIFT (A1) – Right SHIFT

wVirtualScanCode - в иртуальный скан-код нажатой клавиши, который представляет значение, сгенерированное клавиатурой.

dwControlKeyState – указывает состояние управляющих клавиш.

dwSize – структура COORD, которая содержит размер экранного буфера консоли в символах столбцов и строк.

Для консольного приложения определено пять критических событий:

· CTRL + C

· CTRL + BREAK

· Закрытие консоли (кнопка «Закрыть»)

· Завершение сеанса (Log Off)

· Завершение работы системы (Shut Down)

По умолчанию эти события обрабатывает система.

 


Поделиться с друзьями:

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.015 с.