Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Дисциплины:
2023-01-01 | 40 |
5.00
из
|
Заказать работу |
|
|
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)
По умолчанию эти события обрабатывает система.
|
|
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!