Федеральное государственное образовательное учреждение Высшего профессионального образования «Южный федеральный университет» Авакян Леон Александрович «использование win api функций в среде делфи» (учебно-методическое пособие)

федеральное государственное образовательное

учреждение Высшего профессионального образования

«Южный федеральный университет»

Авакян Леон Александрович

«ИСПОЛЬЗОВАНИЕ WINAPI ФУНКЦИЙ В СРЕДЕ ДЕЛФИ»

(учебно-методическое пособие)

Ростов-на-Дону

2008

Авакян Л.А.

Использование Win API функций в среде Делфи: Учебно-методическое пособие.  Ростов-на-Дону, 2008.  45 с.

Учебно-методическое пособие «Использование Win API функций в среде Делфи» к курсам лекций по программированию и вычислительным методам для студентов физического факультета ЮФУ ставит своей задачей оказать помощь студентам в понимании и освоении приемов программирования в Windows. В пособии даны общие понятия о строении операционной системы Windows, описаны способы создания окон и элементов управления, а также способы управления сторонними приложениями.

Содержание

Содержание 3

Введение 4

Модуль 1. Архитектура Windows 5

1.1. Что такое Win API? 5

1.2. Оконный дескриптор, сообщение и событие 8

1.3. Функция MessageBox 10

Проектное задание 12

Тест рубежного контроля №1 12

Модуль 2. Создание элементов управления 14

2.1. Создание окна средствами WinAPI 14

2.2. Создание кнопок (button) средствами WinAPI 19

2.3. Создание однострокового редактора (Edit) средствами WinAPI 21

2.3. Создание многострокового редактора (Memo) средствами WinAPI 23

2.4. Меню на WinAPI 24

2.5. Стандартные диалоговые окна 27

Проектное задание 28

Тест рубежного контроля №2 29

Модуль 3. Управление сторонними приложениями 31

3.1. Утилита слежения за окнами и сообщениями WinSight32 31

3.2. Приемы управления сторонними приложениями 35

Проектное задание 43

Тест рубежного контроля №3 43

Список литературы 45

Настоящее учебно-методическое пособие разработано на основе нормативных документов Министерства образования и науки Российской Федерации, относящихся к вхождению России в Болонский процесс, теории образовательной квалиметрии и современных технологий дидактического обеспечения учебного процесса.

Пособие адресовано студентам для самостоятельного и более углубленного изучения приемов программирования под операционной системой Windows во время и после прослушивания курсов лекций по программированию. Его основная цель состоит в оказании помощи в понимании и освоении Win API функций операционной системы.

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

Введение

Настоящее учебно-методическое пособие посвящено API (application programming interfaces) функциям операционной системы Microsoft Windows, вызов которых мало отличается в различных языках программирования. Все примеры, приведенные в пособии, написаны на языке Object Pascal (среда программирования Delphi), как на наиболее распространенном языке обучения на департаменте физики ЮФУ.

Методическое пособие состоит из трех частей. В первой части даны основные понятия (дескриптор, сообщение), которые используются в дальнейшем. Также, в этой части описаны некоторые полезные функции, которые могут быть применены в любом приложении. Во второй части поэтапно описывается, как создать окно и управляющие элементы на нем без использования библиотек (VCL, MFC и пр.), лишь на основе API функций. Одним из преимуществ таких программ является их малый размер (десятки килобайт), что может быть очень важно в ряде случаев (например, при передаче приложений по сети). В третьей части описаны приемы управления сторонними приложениями на основе Windows API.

Предполагается, что читатель знаком со средой Delphi, знает синтаксис и умеет работать с указателями. Хотя примеры и написаны исключительно на Object Pascal, материал может представлять интерес и для программистов других языков.

Модуль 1. Архитектура Windows

Комплексная цель: получение общих знаний о работе операционной системы Windows, понятие о дескрипторах и сообщениях.

Краткое изложение программного материала: в модуле даны понятия об

  • API функциях операционной системы

  • Дескрипторах и сообщениях Windows

Рассмотрена функция API MessageBox, как наиболее полезная и простая в применении функция.

1.1. Что такое Win API?

В настоящее время очень широкую распространенность получили операционные системы семейства Windows NT/20000/XP. Они широко используются не только как домашние системы, но и в качестве серверов.

Как известно, OC Windows NT целиком построена на системе DLL (динамически загружаемых библиотек). Система предоставляет приложениям сервисные API функции, с помощью которых оно может взаимодействовать с системой.

API функции представляют из себя ничто иное как функции в системных DLL.

Основной язык для приводимых фрагментов кода - Delphi, но материал актуален и для любого другого языка (С, С++, Ассемблер и.т.д.).

Функции и процедуры Windows API, или, сокращенно, WinAPI-функции, являются набором программных интерфейсов приложений (application programming interfaces - APIs), доступных в операционных системах Microsoft Windows. Все Windows-приложения взаимодействуют с WinAPI вне зависимости от того, на каком языке они написаны.

Доступ более низкого уровня к системе Windows, часто применяющийся в драйверах устройств, предоставляется Windows Driver Foundation или Native API, которые отличаются в разных версиях операционной системы.

Имеется детальное описание WinAPI функций, выпускаемое Microsoft под названием software development kit (SDK), которое также включает в себя некоторые инструменты разработки приложений и примеры программного кода.

Все Windows API функции располагаются в файлах динамических библиотек (*.dll), которые находятся в системных папках ОС (как правило, папка System32).

Функциональность, предоставляемая WinAPI, может быть разбита на 8 категорий:

1. Основные сервисы (Base Services) предоставляют доступ к основным ресурсам системы Windows, таким, как файловые системы, устройства, процессы и потоки, обработка ошибок. Эти функции располагаются в файлах kernel32.dll, advapi32.dll.

2. Дополнительные сервисы (Advanced Services) предоставляют доступ к надстройкам над kernel-библиотеками, включая такие элементы, как реестр Windows, перезагрузка и завершение работы системы, запуск/создание/остановка сервисов Windows, управление учетными записями пользователей. Эти функции располагаются в advapi32.dll.

3. Интерфейс взаимодействия с графическими устройствами (Graphics Device Interface, или, сокращенно, GDI) предоставляет набор функциональных возможностей вывода графического содержимого на мониторы, принтеры и другие устройства вывода. Функции располагаются в файле gdi32.exe.

4. Пользовательский интерфейс (User Interface, UI) предоставляет набор функций создания и управления окнами и наиболее простых элементов управления, таких, как кнопки и полосы прокрутки; получение данных с мыши и клавиатуры и прочие функции, связанные с графическим интерфейсом пользователя (GUI). Этот модуль расположен в файле user32.dll, однако, начиная с Windows XP, эти функции объединены с библиотекой стандартных элементов управления (Common Control Library) и располагаются в файле comctl32.dll.

5. Стандартная библиотека диалогов (Common Dialog Box Library) предоставляет стандартные диалоговые окна для открытия и сохранения файлов, выбора цвета, шрифта и т.д. Библиотека располагается в файле comdlg32.dll. Эту категорию часто объединяют с пользовательским интерфейсом.

6. Стандартная библиотека элементов управления (Common Control Library) позволяет приложениям использовать дополнительные элементы управления операционной системы Windows, включая такие элементы, как панели статуса, панели состояния, панели инструментов и вкладки. Библиотека располагается в файле comctl32.dll. Эту категорию также часто объединяют с пользовательским интерфейсом.

7. Оболочка Windows (Windows Shell) является компонентом WinAPI, который предоставляет доступ к функциям системной оболочки, также позволяя изменять и улучшать их. Компонент располагается в файлах shell32.api, shlwapi.dll.

8. Сетевые сервисы (Network Services) предоставляют доступ к различным сетевым возможностям операционной системы. Их подкомпоненты включают NetBIOS, Winsock, NetDDE, RPC и многие другие.

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

1.2. Оконный дескриптор, сообщение и событие

Объект в Windows является некоторой сложной структурой, которая представляет системный ресурс, такой как файл, поток, графическое изображение. Приложение не может обращаться напрямую к внутренней структуре объекта или системным ресурсам, которые он представляет. Вместо этого, приложение должно получить специальный дескриптор (handle) объекта и использовать этот дескриптор для работы с системным ресурсом. В Microsoft® Win32® программном интерфейсе приложений (WinAPI) дескрипторы применяются как непрямые указатели.

Оконный дескриптор (hWnd) является уникальным идентификатором (который является целым четырехбайтовым беззнаковым числом), который присваивает Windows каждому созданному окну. В этом случае, под окном подразумевается любые элементы: от кнопок управления и надписей до диалоговых окон и окон в целом.

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

Практически каждому сообщению в Windows сопоставлено событие в Делфи, при поступлении которого можно выполнить специальные действия. Мы не будем использовать библиотеку VCL, а вместе с ней и события в Делфи (см. модуль 2).

Каждое системное сообщение имеет уникальный идентификатор сообщения (номер) и соответствующее ему название (определенное в заголовочном файле), которое показывает назначение сообщения. Например, сообщение с названием WM_PAINT просит окно перерисовать свое содержимое.

Название сообщения описывает также и категорию, к которой это сообщение принадлежит. Приставка в названии определяет тип окна, которое может прочитать и обработать это сообщение. Например, приставка WM_ обозначает, что сообщение предназначается обычному окну.

Сообщения для обычных окон включают в себя множество информационных сообщений и запросов, таких, как сообщения от мышки и клавиатуры, выбор элементов меню и диалоговых окон, создание и управление окнами, динамический обмен данными (dynamic data exchange - DDE).

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

В операционной системе Windows зарезервированы значения идентификаторов сообщений в интервалах от 0x0000 до 0x03FF (WM_USER – 1) и от 0x8000 до 0xBFFF для системных сообщений. Приложения не могут использовать эти значения для своих собственных сообщений.

1.3. Функция MessageBox

Начнем знакомиться с API функциями с наиболее простой и часто употребляемой функции MessageBox. Эта функция позволяет выводить стандартное окно сообщения Windows с заданны текстом и кнопками.

Функция объявлена в файле windows.pas следующим образом:

function MessageBox; external user32 name 'MessageBoxA';

Откуда видно, что функция реализована в библиотеке user32.dll. Синтаксис функции описан в справке (на языке C++):

int MessageBox(

HWND hWnd, // ссылка на окно владельца

LPCTSTR lpText, // текст сообщения

LPCTSTR lpCaption, // заголовок окна

UINT uType // стиль окна

);

hWnd – ссылка на окно-владельца, может быть равно 0, тогда владельцем будет рабочий стол windows.

lpText, lpCaption – строки символов текста сообщения и заголовка соответственно. В языке Object Pascal имеют тип PChar. Для преобразования строки типа String к PChar можно использовать функцию PChar(). Если текст сообщения задан в явном виде, то преобразование будет проведено автоматически, например, код

var s: string;

s := 'ZL';

MessageBox(0, 'Текст сообщения', PChar(s), 0);

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

Рис. 1.

uType – указывает особенности окна сообщения, такие, как кнопки и иконка в левой его части. Например, указав MB_OK (который равен нулю, чем мы и воспользовались ранее), мы получим окно с одной кнопкой Ok. Если бы мы указали стиль MB_ICONSTOP OR MB_OKCANCEL, то получили бы окно с двумя кнопками Ok и Cancel и иконкой со знаком остановки. Полный список параметров приведен в справке Delphi и MSDN.

Возвращаемое значение функции равно одной из констант IDABORT, IDCANCEL, IDIGNORE, IDNO, IDOK, IDRETRY, IDYES в зависимости от выбранной пользователем кнопки (если их несколько).

Примером использования этой функции является окно, появляющееся при выходе из программы. Запишем обработчик события формы OnCloseQuery:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

CanClose := MessageBox(

handle, {handle – свойствоформы, содержащее

дескрипторокна}

PChar('Действительно выйти?'+#13+'Все

несохраненные данные будут потеряны.'),

'',

MB_ICONQUESTION or MB_YESNO

) = IDYES;

end;

Окно, выводимое при попытке закрыть программу, приведено на рисунке 2.

Рис. 2.

  1. Каталог конкурентоспособных предприятий краснодарского края (1)

    Документ
    Осуществление первичной проверки в производственных условиях селекционных перспективных сортов риса, а также производства и реализации семян риса высших репродукций,
  2. Каталог конкурентоспособных предприятий краснодарского края (2)

    Документ
    Буровое и нефтепромысловое оборудование, циркуляционные системы, башни сотовой связи, блоки к циркуляционным системам, емкости до 60м3, поддоны стеновых панелей для панельного домостроения,
  3. Каталог конкурентоспособных предприятий краснодарского края (3)

    Документ
    Омская, Курганинская, Челябинская, Сведрловская, Курская, Белгородская, Воронежская, Волгоградская, Ростовская области, Республики Адыгея, Башкортостан,
  4. М. П. Горчакова-Сибирская (отв ред., Спбгиэу), д-р философ наук, проф (2)

    Документ
    д-р пед. наук, проф. М. П. Горчакова-Сибирская (отв. ред., СПбГИЭУ), д-р философ. наук, проф. Е. А. Гусева (зам. отв. ред. СПбГИЭУ), канд. филолог. наук, Е.
  5. М. П. Горчакова-Сибирская (отв ред., Спбгиэу), д-р философ наук, проф (1)

    Документ
    д-р пед. наук, проф. М. П. Горчакова-Сибирская (отв. ред., СПбГИЭУ), д-р философ. наук, проф. Е. А. Гусева (зам. отв. ред. СПбГИЭУ), канд. пед. наук М.
  6. Департамент внешнеэкономических и межрегиональных связей Костромской области

    Документ
    В целях развития двустороннего межрегионального сотрудничества и расширения взаимовыгодных поставок потребительских товаров и продукции производственно технического назначения департамент внешнеэкономических и межрегиональных связей
  7. Каталог конкурентноспособных предприятий кубани (1)

    Документ
    Мясо, включая субпродукты, сыры жирные, масло животное, цельномолочная продукция, рыбная продукция, зерновые, продукция растениеводства и животноводства
  8. Каталог конкурентноспособных предприятий кубани (2)

    Документ
    Производство прочего подъемно - транспортного оборудования (домкратные установки для подъема подвижного состава,гидравлический инструмент для ремонта и текущего содержания пути и др.
  9. Выпускаемые товары и услуги

    Документ
    Производство изделий медицинского, технического и бытового назначения на основе натурального латекса (перчатки анатомические, хирургические, технические,

Другие похожие документы..