
- •Оглавление
- •Введение
- •Теоретическая часть
- •Описание функций, использующихся в программах Функция GetModuleHandle
- •Функция GetCommandLine
- •ФункцияLoadIcon
- •Функция MessageBox
- •ФункцияInvoke
- •Функция LoadLibrary
- •Функция PostMessage
- •Функция DialogBoxParam
- •ФункцияExitProcess
- •Результат работы
- •Список литературы
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Ижевский Государственный Технический Университет
Имени М.Т. Калашникова
Факультет «Информатика и вычислительная техника»
Кафедра «Вычислительная техника»
Курсовая работа по дисциплине
операционные системы
«Программирование в Windows на основе API-функций»
Разработал: студент гр. 8-78-2,
Малюшко Д. А.
Принял: к.т.н. Вахрушева Е.А.
Ижевск 2014 г.
Оглавление
Введение 3
Теоретическая часть 4
Описание функций, использующихся в программах 7
Функция GetModuleHandle 7
Функция GetCommandLine 7
Функция LoadIcon 8
Функция MessageBox 8
Функция Invoke 9
Функция LoadLibrary 18
Функция PostMessage 19
Функция DialogBoxParam 19
Функция ExitProcess 19
Функция FreeLibrary 20
Функция EndDialog 20
Функция GetProcAddress 20
Результат работы 28
Вывод 29
Список литературы 30
Введение
Свыше 90 процентов настольных и портативных компьютеров работают под управлением Windows. Консультант по Windows Джеффри Рихтер считает, что «Microsoft Windows очень сложная операционная система. Она включает столько всего и делает так много, что одному человеку просто не под силу полностью разобраться в этой системе». Курсовая работа посвящена изучению одного из разделов операционной системы.
Самые важные части операционной системы Windowsнаписаны на языке ассемблера. Поэтому операционную системуWindowsнагляднее изучать, используя именно этот язык. Язык ассемблера — это символическое представление машинного языка. Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами (инструкциями) машинного языка. Ассемблер может понадобиться для оптимизации кода программ, написания драйверов, трансляторов, программирования некоторых внешних устройств и т.п.
Что касается операционной системы Windows, то здесь, как ни странно это прозвучит для некоторых программистов, программировать на ассемблере гораздо легче, чем в операционной системеMS DOS, и ничуть не сложнее чем на Си, и при этом получается компактный, эффективный и быстрый код. При работе с языками высокого уровня теряются определенные алгоритмические навыки. И процесс заходит всё дальше. Только ради повышения своего профессионального уровня стоит заниматься программированием на ассемблере
Теоретическая часть
С 1991 года операционная система Windows, созданная компанией Microsoft сменила несколько версий. За это время она выпускалась и для 16-разрядных процессоров и для 32-разрядных. А сегодня уже появились версии Windows для работы с 64-разрядными процессорами. Менялся не только дизайн системы, но и принципы ее внутренней архитектуры. Неизменным по сей день остается одно - наличие динамических библиотек (DLL), являющихся основными поставщиками функций (Application Programming Interface - API) для работы системы и приложений.
За время существования 32-разрядной Windows функции API не изменились, меняется лишь их количество. Для удобства разработчиков программы для Windows, все функции API разбиты на определенные категории и находятся в соответствующих библиотеках динамической компоновки (DLL). Вот не полный перечень таких библиотек, приведённый в таблице 1:
Таблица 1
Библиотека |
Описание |
kernel32.dll |
Системные функции низкого уровня. В этой библиотеке находятся функции управления памятью, задачами, распределения ресурсов и т.д.
|
user32.dll |
Функции, управляющие работой Windows. В этой библиотеке находятся функции для работы с сообщениями, меню, указателями мыши, курсорами, таймерами и большинство других функций, не связанных с выводом на экран. |
gdi32.dll |
Библиотека интерфейса графических устройств (GDI). Содержит функции, связанные с выводом на устройства. В ней находится большинство функций рисования, работы с контекстами устройств, метафайлами, координатами и шрифтами. |
comdlg32.dll lz32.dll version32.dll |
Эти библиотеки обеспечивают дополнительные возможности, в том числе поддержку стандартных диалоговых окон, сжатия файлов и контроля версий. |
advapi32.dll
|
Библиотека содержит функции для работы с реестром Windows и файлами инициализации (INI). |
wininet.dll
|
В данной библиотеке содержатся функции для использования Internet и FTP. |
netapi32.dll |
Сетевые функции Windows. |
crypt32.dll cryptdll.dll cryptnet.dl |
В библиотеках содержатся криптографические функции и функции для работы с крипто-провайдерами. |
ntdll.dl |
Иногда в других библиотеках API функции всего лишь объявлены, а реализованы в данной библиотеке, но с другим именем. |
*продолжение таблицы 1
comctl32.dll |
В этой библиотеке реализован новый (усовершенствованный) набор управляющих элементов Windows, в числе которых - иерархические списки и улучшенные текстовые поля. |
mapi32.dll |
Содержит функции для работы с электронной почтой. |
odbc32.dll
|
Это одна из dll, реализующих архитектуру ODBC (Open Database Connectivity). Функции предоставляют API для работы с базами данных. |
winmm.dll |
Обеспечивает доступ к мультимедиа. |
Эти DLL находятся в системной папке Windows. Есть API функции, которые были созданы во времена Windows 9x и которые не работают на операционных системах семейства Windows NT.
Windows API развивается очень быстро. Количество функций растет так быстро, что уследить за всеми новшествами практически невозможно. Но, к счастью, это и не нужно. Чтобы профессионально пользоваться Windows API, необязательно становиться знатоком во всех его областях. Важно понять основные концепции использования, предоставляемых Windows функций и научиться читать документацию по API.
Окно в Windows является объектом, занимающим прямоугольный участок экрана. Даже если окно будет круглым, все равно оно вписывается в ассоциированную с его контекстом прямоугольную область. Окно может содержать другие окна, называемые дочерними. С каждым окном связанны функциональные возможности, присущие только ему, либо имеющие общие для всех окон особенности. Окно обладает рядом характеристик:
Атрибуты. Концепция окна отличается чрезвычайной гибкостью, поэтому неудивительно, что окно обладает множеством атрибутов. Одни относятся к внешнему виду окна (размер, позиция, видимость и т.д.); другие - определяют поведение окна, способы обработки нажатий клавиш на клавиатуре и кнопок мыши.
Сообщения. С каждым окном связана специальная функция - функция окна (window function). В этой функции реализуется цикл обработки сообщений, получаемых от различных источников. Самыми важными являются сообщения самой операционной системы.
Функциональность. Каждое окно обладает определенной функциональностью, присущей только этому классу окон, либо имеющей общие черты с функциональностью других окон системы.
Что касается внешнего вида окна, то он зависит от класса окна и примененного при создании окна стиля. Класс окна – это главный идентификатор, используемый при создании окон одного типа. Например, все текстовые поля в Windows относятся к классу Edit, кнопки - к классу Button, а статичные надписи - к классу Static. Каждый оконный класс имеет стандартный набор стилей, которые можно указать при создании окна, например, у оконного класса Static имеется стиль SS_CENTER, позволяющий отцентрировать выводимый на надписи текст. Стиль есть по сути цифра, а набор стилей - набор цифр, объединенных операцией ИЛИ (OR).
Реакция на сообщения также напрямую зависит от класса окна. Например, только у класса Static имеется возможность обработки сообщения STM_SETIMAGE, позволяющего ассоциировать с надписью какую-нибудь картинку или иконку.
При использовании Windows API возможно увеличить количество стилей и сообщений как класса в целом, так и отдельно взятого окна. Для этих целей Windows API содержит ряд функций, предназначенных для сабклассирования (для изменения одного отдельно взятого окна) и суперклассирования (для изменения целого оконного класса).