Access 2002

Вызов DLL-процедур из VBA


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

воспользоваться оператором Declare;

включить в приложение ссылку на библиотеку типов.

Операторы Declare — это традиционный способ вызова API-функций, сохранившийся еще с Visual Basic 1. Библиотеки типов, хотя они и удобнее, появились позже и обладают одним существенным недостатком: чтобы приложение могло использовать библиотеку типов, нужно установить на компьютере пользователя ее файл.

Несколько следующих разделов этой главы посвящены оператору Declare. Мы уем прочитать их даже в том случае, если вы собираетесь использовать для обращения к функциям Windows API только библиотеки типов. Из этих разделов вы узнаете о базовых принципах работы DLL-процедур и о тех приемах, которыми вам необходимо владеть для их использования (например, манипулирование строковыми буферами). О библиотеках типов мы поговорим несколько позже, в разделе «Использование библиотек типов с функциями DLL».

Оператор Declare размещается в разделе объявлений модуля. Он сообщает VBA, где искать используемую вами функцию и как ее вызывать. Чуть позже, в разделе «Структура оператора Declare», мы подробнее расскажем о том, из каких элементов он состоит. Сейчас же для нас главное то, что этот оператор необходим для вызова DLL-функций, не описанных в библиотеке типов. Если, к примеру, вы собираетесь вызывать функции Windows API, но не хотите использовать отдельный файл библиотеки типов, следует включить в программу оператор Declare для каждой из используемых вами функций.

Вот пример оператора Declare:

Public Declare Function GetWindowsDirectory Lib “kernel32"_

Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String.

ByVal nSize As Long) As Long

Как уже говорилось, операторы Declare располагаются в разделе объявлений модуля.

Комментарии закрыты