Интерфейс программирования приложений (API)

Интерфейс программирования приложений (API) - набор подпрограмм, доступный для разработчиков программного обеспечения при создании стандартных интерфейсов. API (Application Рrogramming Interface), с точки зрения программиста, представляет собой набор функций и структур данных системы Windows, которыми он может воспользоваться в своих целях.

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

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

1. DLL-файлы системы Windows есть в каждом экземпляре системы.

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

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

Итак, надо понять, что при создании приложений под Windows всегда можно воспользоваться интерфейсом программирования приложений (Windows API).

Библиотеки Windows API обеспечивают ряд полезных DLL, которые можно вызвать при создании приложений. Эти DLL создают интерфейс программирования приложения Windows (Windows API).

Например, 32-разрядные версии операционной системы Windows состоят из трех основных DLL: User32, GDI32, Kenel32.

Модули библиотеки User32.dll решают задачи, связанные с управлением окнами, элементами управления и окнами диалога.

Библиотека GDI32.dll отвечает за вывод графики.

Библиотека Kenel32.dll управляет задачами операционной системы.

Рассмотрим создание простейшей программы на Visual Basic: “Объявление API-функции”.

Для этого необходимо, чтобы Visual Basic “знал” имя функции, имя файла DLL-библиотеки, в которой содержится требуемая функция, тип возвращаемого функцией значения, а также количество и типы ее параметров. Все это надо задать при объявлении функции. Для этого и потребовался программный модуль – именно там мы и объявим API-функцию.

Для создания такой программы надо создать следующий код:

‘Все переменные необходимо объявлять заранее

Option Explicit

‘Объявить API-функцию MessageBeep

Declare Function MessageBeep Lib “user32” _

(ByVal wType As Long) As Long

Итак, мы объявили API-функцию, начав с зарезервированного слова Declare. Затем, ввели слово Function. Все это и на английском языке, и на языке Visual Basic означает: “объявить функцию”.

Далее следует имя функции: MessageBeep.Слова Lib “user32”указывают на то, что функция находится в DLL-библиотеке User32, соответственно DLL-файл с этой библиотекой называется USER32.LIB. Просмотрите подкаталог SYSTEM каталога Windows (или подкаталог SYSTEM32, при работе в Windows NT), и там обнаружится файл USER32.LIB.

Строка (ByVal wType As Long) означает, что при вызове функции ей следует передать в качестве параметра одно значение типа Long. И наконец, завершающее As Long означает тип возвращаемого функцией значения.

Мы создали программу объявления API-функции. Теперь создадим программу вызова API-функции “Ищем каталог Windows”.

API-функция GetWindowsDirectory возвращает имя каталога, где установлена система Windows.

Для создания такой программы изменяем предыдущий код следующим образом:

‘Все переменные необходимо объявлять заранее

Option Explicit

‘Объявить API-функцию MessageBeep

Declare Function MessageBeep Lib “user32” _

(ByVal wType As Long) As Long

‘Объявить API-функцию GetWindowsDirectory

Declare Function GetWindowsDirectory Lib “kernel32” _

Alias “GetWindowsDirectoryA”

(ByVal lpBuffer As String, ByVal nSize As Long) _

Long) As Long

Это объявление немного сложнее предыдущего. Как видно из кода, имя функции – GetWindowsDirectory и она находится в библиотеке kernel32. Далее следует обязательная строка со слова Alias.

Данная функция требует наличия двух параметров, строки и числа типа Long:

(ByVal lpBuffer As String, ByVal nSize As Long).

Возвращаемое значение здесь относится к типу Long.

Данные примеры знакомят с простейшими примерами использования API-функций Windows в Visual Basic. Более детальную информацию можно получить обратившись к документации по системе программирования.