Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Дисциплины:
2023-01-01 | 38 |
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)
По умолчанию эти события обрабатывает система.
|
|
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!