Windows API

Описание программы Windows API и набор функций используемых для разработки приложений: wsprintfA, ADD ESP.N, ReadConsoleInput, GetStdHandle, WriteConsoleA, SetConsoleCursorPosition, SetConsoleTitle, FreeConsole, AllocConsole, SetConsoleTextAttribute.

Рубрика Программирование, компьютеры и кибернетика
Вид практическая работа
Язык русский
Дата добавления 11.02.2015
Размер файла 34,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

Windows API-- набор функций операционной системы

Аббревиатура API многим начинающим программистам кажется весьма таинственной и даже пугающей. На самом же деле Application Programming Interface (API)-- это просто некоторый готовый набор функций, который могут использовать разработчики приложений. В общем случае данное понятие эквивалентно тому, что раньше чаще называли библиотекой подпрограмм. Однако обычно под API подразумевается особая категория таких библиотек. программа приложение windows

В ходе разработки практически любого достаточно сложного приложения (MyAppication) для конечного пользователя формируется набор специфических внутренних функций, используемых для реализации данной конкретной программы, который называется MyApplication API. Однако часто оказывается, что эти функции могут эффективно использоваться и для создания других приложений, в том числе другими программистами. В этом случае авторы, исходя из стратегии продвижения своего продукта, должны решить вопрос: открывают они доступ к этому набору для внешних пользователей или нет? При утвердительном ответе в описании программного пакета в качестве положительной характеристики появляется фраза: «Комплект включает открытый набор API-функций» (но иногда за дополнительные деньги).

Таким образом, чаще всего под API подразумевается набор функций, являющихся частью одного приложения, но при этом доступных для использования в других программах. Например, Excel, кроме интерфейса для конечного пользователя, имеет набор функций Excel API, который может использоваться, в частности, при создании приложений с помощью VB.

Соответственно Windows API-- это набор функций, являющийся частью самой операционной системы и в то же время-- доступный для любого другого приложения, в том числе написанного с помощью VB. В этом плане вполне оправданна аналогия с набором системных прерываний BIOS/DOS, который фактически представляет собой DOS API.

Отличие заключается в том, что состав функций Windows API, с одной стороны, значительно шире по сравнению с DOS, с другой -- не включает многие средства прямого управления ресурсами компьютера, которые были доступны программистам в предыдущей ОС. Кроме того, обращение к Windows API выполняется с помощью обыкновенных процедурных обращений, а вызов функций DOS-- через специальную машинную команду процессора, которая называется Interrupt («прерывание»).

Задание

Написать консольное приложение, обрабатывающее сигналы от клавиатуры и мыши, с использованием API-функций.

1. Описание программы

В соответствии с вариантом было написано консольное приложение «Художественный холст» в текстовом режиме. Программа по нажатию левой кнопки мыши выводит в позицию курсора символ пера, по нажатию правой кнопки мыши стирает символ по позиции курсора. Символ пера можно изменять с клавиатуры, в левом верхнем углу, присутствует индикатор, показывающий текущий символ пера. В нижнем левом углу отображаются текущие координаты курсора в окне.

Рисунок 1 - Пример работы программы

2. Используемые функции

wsprintfA

Эта функция является неким аналогом библиотечной Си-функции - sprintf. Первым параметром функции является указатель на буфер, куда помещается результат форматирования. Второй - указатель на форматную строку, например: "Числа: %lu, %lu". Далее идут указатели на параметры (либо сами параметры, если это числа), число которых определено только содержимым форматной строки. Поскольку количество параметров не определено, то стек освобождает программист. Пример использования этой функции будет дан ниже. Прототипом этой функции для библиотеки import32.lib (TASM32) будет не wsprintfA, a _wsprintfA (!). Если функция выполнена успешно, то в EAX будет возвращена длина скопированной строки.

ADD ESP,N

Данная команда освобождает N байт стека.

ReadConsoleInput

Эта функция предназначена для получения информации о клавиатуре и мыши в консольном режиме.

Параметры этой функции:

1. дескриптор входного буфера консоли.

2. указатель на структуру (или массив структур), в которой содержится информация о событиях, происшедших с консолью.

3. количество получаемых информационных записей (структур).

4. указатель на двойное слово, содержащее количество реально полученных записей.

GetStdHandle

Эта функция используется для получения дескриптора консоли. Её аргументом может одна из следующих констант:

STD_INPUT_HANDLE equ -10 ; для ввода

STD_OUTPUT_HANDLE equ -11 ; для вывода

STD_ERROR_HANDLE equ -12 ; для сообщения об ошибке

WriteConsoleA

Для вывода текстовой информации используется функция API WriteConsoleA, параметры которой (слева направо) имеют следующий смысл.

· 1-й параметр - дескриптор буфера вывода консоли, который может быть получен при помощи функции GetStdHandle.

· 2-й параметр - указатель на буфер, где находится выводимый текст.

· 3-й параметр - количество выводимых символов.

· 4-й параметр - указывает на переменную DWORD, куда будет помещено количество действительно выведенных символов.

· 5-й параметр - резервный параметр, должен быть равен нулю.

Буфер, где находится выводимый текст, не обязательно должен заканчиваться нулем, поскольку для данной функции указывается количество выводимых символов.

SetConsoleCursorPosition

Установить позицию курсора в консоли можно при помощи функции SetConsoleCursorPosition со следующими параметрами:

· 1-й, дескриптор входного буфера консоли.

· 2-й, структура COORD:

COORD STRUC

Х WORD ?

Y WORD ?

COORD ENDS

SetConsoleTitle

Для определения заголовка окна консоли используется функция SetConsoleTitle, единственным параметром которой является адрес строки с нулем на конце.

FreeConsole

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

Следует отметить, что один процесс может иметь только одну консоль, поэтому выполнение в начале программы FreeConsole обязательно. При запуске программы в "чужой" консоли она наследует эту консоль, поэтому, пока мы не выполним функцию FreeConsole, новой консоли не создать - чужой консоли эта функция закрыть не может.

AllocConsole

Для создания консоли приложение вызывает API-функцию WindowsAllocConsole:

Function AllocConsole Lib "kernel32" Alias DWORD "AllocConsole" ().

Из описания этой функции видно, что она содержится в библиотеке Windowskernel32, поэтому в секцию директив нашей ассемблерной программы мы должны включить соответствующие файлы прототипов (kernel32.inc) и библиотек (kernel32.lib). По выполнении функцияAllocConsoleзаписывает (возвращает) в регистрEAXзначение длиной 4 байта (DWORD). Если консоль создать не удалось, в регистрEAXбудет записан ноль.

CharToOemA

Windows (русскоязычная) использует кодировку Win1251, консоль - DOS. Поскольку ассемблерную программу мы набираем все же под Windows, определяемые в ней символьные строки на кириллице в память компьютера попадут в кодировке Win1251 и в консоли будут выглядеть нечитаемо. API-функция WindowsCharToOemпредназначена для перевода кодировки строки Win1251 в DOS, ее удобно использовать при организации вывода в консоль кириллических символов.

В отличие от кириллицы, числовые значения, сопоставляемые цифрам и латинским символам, одинаковы в обеих кодировках, поэтому, если в консоль выводится только латиница и числа, функциюCharToOemиспользовать не нужно.

Функция определяется следующим образом: Function CharToOem Lib "user32" Alias DWORD "CharToOemA" (DWORD lpszSrc, DWORD lpszDst).

Функция содержится в библиотеке Windowsuser32, в секцию директив ассемблерной программы перед ее вызовом помещаем указания на соответствующие файлы прототипов (user32.inc) и библиотек (user32.lib). По выполнении функция возвращает в регистрEAXзначение длиной 4 байта: старшие 3 байта равны нулю, младший байт равен 1, если адреса источника и приемника не совпадают, при их совпадении - 0.

Передаваемые функции параметры:lpszSrc- (long pointer string zero Source) адрес заканчивающейся нулем строки-источника;lpszDst- (long pointer string zero Destination) адрес строки-приемника.

Есть особенность в обработке строк ассемблером, эту особенность надо учитывать при использовании функцииCharToOem. Ассемблер никак не отграничивает в исполняемом коде строки символов друг от друга или от числовых переменных. В конце строки ассемблер не пишет условного байта, указывающего на ее завершение. Возможность обращаться в ассемблерной программе к каждой символьной переменной в отдельности (по ее имени) связана с тем, что MASM32 вычисляет по объявлению размер каждой символьной переменной, при компиляции подставляет, если на то есть необходимость, в исполняемый код соответствующие значения длины строки.

ФункцияCharToOemтребует, чтобы строка-источник оканчивалась нулем (string zero, по-другомуnull-terminated). Если мы этой функции передадим в качестве источника адрес из нашего сегмента данных, она поведет себя соответственно - будет перекодировать, начиная с переданного ей адреса, в сегменте данных все, в том числе и числовые переменные любой размерности, вплоть до первого встретившегося ей нуля. Microsoft MSDN называет функциюCharToOemопасной - небрежно включенная в код, она наверняка вызовет аварийное завершение программы.

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

SetConsoleTextAttribute

Установить цвет выводимых букв можно с помощью функции SetConsoleTextAttribute. Первым параметром этой функции является дескриптор выходного буфера консоли, а вторым - цвет букв и фона. Цвет получается путем комбинации (сумма или операция "ИЛИ") двух или более из представленных ниже констант. Причем возможна "смесь" не только цвета и интенсивности, но и цветов (см. программа ниже).

FOREGROUND_BLUE equ 1h; синий цвет букв

FOREGROUND_GREEN equ 2h; зеленый цвет букв

FOREGROUND_RED equ 4h; красный цвет букв

FOREGROUND_INTENSITY equ 8h; повышенная интенсивность

BACKGROUND_BLUE equ 10h; синий свет фона

BACKGROUND_GREEN equ 20h; зеленый цвет фона

BACKGROUND_RED equ 40h; красный цвет фона

BACKGROUND_INTENSITY equ 80h ; повышенная интенсивность

SetConsoleScreenBufferSize

Функция SetConsoleScreenBufferSize устанавливает размер буфера окна консоли. Этот размер не может уменьшить уже существующий буфер (существующее окно), а может только его увеличить.

· 1-й, дескриптор входного буфера консоли.

· 2-й, структура COORD:

COORD STRUC

Х WORD ?

Y WORD ?

COORD ENDS

Заключение

В ходе выполнения курсовой работы были изучены функции Microsoft API для работы с консольными приложениями. Также я ознакомился со средой разработки masm32 V10. Была написана консольная программа с аппаратным вводом от мыши и клавиатуры, обработка сигналов от которых производилась по средствам API функций.

Список используемой литературы

1. Изучение операционной системы WINDOWS: метод. указания для выполнения курсовой работы по курсу «Операционные системы» / сост. Е. А. Вахрушева. - Ижевск: ИжГТУ, кафедра «Вычислительная техника», 2013. - 55 с.

2. Пирогов В. Ю. Ассемблер для Windows. -- СПб.: - Петербург, 2002 г.

3. Пирогов В. Ю. Ассемблер. Учебный курс. -- СПб.: БХВ-Петербург, 2003 г.

Размещено на Allbest.ru

...

Подобные документы

  • Основы программирования на 32-битном Ассемблере, разработка с его помощью программы, демонстрирующей работу одного из разделов ОС Windоws. Описание используемых АРI-функций как интерфейса программирования приложений. Листинг программы, результаты работы.

    курсовая работа [164,5 K], добавлен 18.05.2014

  • Характеристика операционной системы. История развития Windows. Сравнительная характеристика версий Windows. Элементы и инструменты Windows XP. Прикладные программы в Windows XP. Работа настольных и портативных компьютеров под управлением Windows.

    доклад [19,1 K], добавлен 16.10.2011

  • История создания. Windows 9x/NT. Операционная система Microsoft Windows. Преимущества и недостатки Windows. Некоторые клавиатурные комбинации Windows 9x и NT. Windows XP Professional. Наиболее совершенная защита.

    реферат [19,3 K], добавлен 18.07.2004

  • Программа операционной системы. Перемещение и копирование объектов. Окна Windows, операционное меню, настройка свойств папки, вызов справки Windows. Работа с дисками, папками и файлами, с приложениями и документами. Стандартные программы Windows.

    контрольная работа [21,9 K], добавлен 29.01.2011

  • Общая характеристика операционных систем и приложений Windows. Разделение ресурсов, работа с окнами, назначение диска, видов памяти, системы сохранения и передачи данных. История возникновения приложений, их виды и особенности, порядок написания.

    курс лекций [321,0 K], добавлен 24.06.2009

  • Прикладные программы и утилиты. Простейшие функции операционной системы. История разработки корпорацией Microsoft Corporation графической операционной оболочки Windows. Версия семейства сетевых ОС Windows NT (Millennium Edition, 2000, XP, Vista, Seven)

    презентация [965,2 K], добавлен 12.10.2013

  • Microsoft Windows – одно из величайших изобретений человечества. Ознакомление с базовыми программами и навыками работы с Windows XP Professional: форматирование диска, архивация данных, файловые менеджеры, антивирусные программы, настройка Windows.

    отчет по практике [24,4 K], добавлен 22.12.2009

  • Общее понятие об оперативной системе Windows Vista. Сравнительный анализ систем Windows XP и Windows Vista. Специфика процесса установки, трехмерный интерфейс Aero Glass, действие некоторых мини-приложений. Новости управления папками, работа в интернете.

    реферат [2,4 M], добавлен 01.02.2010

  • Реализация программы, созданной средствами языка C#. Предназначение Windows-приложения для решения комплекса задач. Определение состава форм с графиком функции. Вычисление коэффициентов полинома. Создание текстового поля для введения корней многочлена.

    курсовая работа [234,8 K], добавлен 13.11.2016

  • Разработка Windows-приложений с использованием библиотеки MFC. Базовый набор классов, написанных на языке С++ и предназначенных для упрощения процесса программирования под Windows. Фундаментальные идеи объектно-ориентированного программирования.

    курсовая работа [348,1 K], добавлен 02.07.2011

  • Основы работы с многооконным графическим пользовательским интерфейсом операционной системы Windows95/NT. Основы работы с прикладными программами Windows и DOS. Разработка простого приложения для Windows при помощи средства разработки приложений DELPHI.

    контрольная работа [281,0 K], добавлен 15.01.2009

  • Написание прикладного Windows-приложения на примере программы-органайзера, позволяющей вести электронный ежедневник и телефонную записную книжку. Описание блок-схемы программы и операционной системы. Листинг результатов обработки на контрольном примере.

    дипломная работа [2,5 M], добавлен 29.12.2014

  • Создание системной утилиты, работающей с реестром ОС Windows; структура, функции и роль реестра. Разработка программного обеспечения: интерфейс, структурная схема вызовов окон приложений; реализация и тестирование программы, процедуры; листинг модулей.

    курсовая работа [1,2 M], добавлен 01.06.2013

  • Универсальная многоцелевая сетевая операционная система Windows NT Server. Использование Windows NT Workstation как невыделенного сервера в одноранговых сетях и в качестве клиента сетей. Операционные системы Windows 2003, Windows Vista и Windows 7.

    презентация [6,2 K], добавлен 23.10.2013

  • Краткое описание версий Windows XP: Professional Edition, Home Edition, Tablet PC Edition, Media Center Edition, Embedded, XP 64-bit Edition, XP Edition N, XP Starter Edition. Установка Windows XP. Характеристика интерфейса и нововведений Windows 7.

    контрольная работа [1,8 M], добавлен 14.03.2011

  • Сведения об окружности, ее радиус и площадь. Разработка программы для вычисления площади круга и длины окружности по заданному радиусу с использованием Windows.Forms-приложений. Пошаговая инструкция; описание главного окна, код, примеры работы программы.

    курсовая работа [818,6 K], добавлен 14.09.2014

  • Появление первых версий Windows, их графические интерфейсы и расширения для DOS. Семейства Windows 3.x и Windows 9.x, их особенности и основные функции. Эволюция технологии Plug and Play. Наиболее существенные улучшения в современных версиях Windows.

    реферат [162,3 K], добавлен 13.06.2014

  • Теоретические основы написания Windows-приложений с использованием библиотеки MFC. Основы программирования под Windows. Проектирование приложений в среде Microsoft Visual C++. Описание логической структуры приложения, его функциональное назначение.

    курсовая работа [1,3 M], добавлен 12.12.2011

  • Основные выпуски (редакции) операционных систем Windows Vista и Windows Seven, их недостатки и преимущества. История создания, совместимость приложений с операционными системами. Новшества, которые принесла в мир компьютерных технологий каждая из систем.

    реферат [66,3 K], добавлен 17.02.2011

  • Операционная система от компании Microsoft. Понятие Windows 8, ее особенности. Использование мыши и приложений в интерфейсе Метро. Самый проблемный жест при работе с Windows 8. Направленность операционной системы на устройства с сенсорным экраном.

    реферат [30,1 K], добавлен 16.05.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.