Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Топ:
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Дисциплины:
|
из
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)
По умолчанию эти события обрабатывает система.
|
|
|
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!