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

В Visual FoxPro, вы можете использовать только те DLL, которые написаны для 32-битной среды. Однако, если вам требуется доступ к 16-битной DLL, вы можете вызвать ее, используя функции доступные в Foxtools.fll. Для получения более подробной информации смотри справку, поставляемую для Foxtools (Foxtools.chm).

Для вызова функции DLL

  1. Зарегистрируйте функцию DLL с помощью команды DECLARE - DLL. Имена функций чувствительны к разряду! Помните об этом!

    NoteЗамечание

    Если вы указали WIN32API в качестве имени библиотеки, Visual FoxPro производит поиск функции в 32-bit Windows DLL библиотеках Kernel32.dll, Gdi32.dll, User32.dll, Mpr.dll и Advapi32.dll.

  2. После этого вызовите функцию так, как вы вызываете любую функцию Visual FoxPro.

Например, приведенный ниже пример программы регистрирует функцию GetActiveWindow() из системной библиотеки Windows USER DLL, которая отобразит дескриптор главного окна Visual FoxPro. Функция GetActiveWindow() не требует параметров, но возвращает простое целочисленное значение:

 CopyCode imageСкопировать код
DECLARE INTEGER GetActiveWindow IN win32api
MESSAGEBOX(STR( GetActiveWindow() ) )

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

Если функция, которую вы желаете вызывать имеет одинаковое название с доступной родной функцией Visual FoxPro (либо родной функцией или уже зарегистрированной ранее), вы можете функции с дублирующим именем псевдоимя (alias) и при вызове используйте определенное вами псевдоимя.

 CopyCode imageСкопировать код
DECLARE INTEGER GetActiveWindow IN win32api AS GetWinHndl
MESSAGEBOX(STR( GetWinHndl() ) )

Связанные DLL функции остаются доступными до момента выхода из Visual FoxPro, поэтому вам нужно зарегистрировать их всего лишь однажды. Если у вас отпала необходимость повторных вызовов функций в DLL, вы можете выдать команду CLEAR DLLS для удаления библиотеки из памяти и освобождения ресурсов памяти.

NoteЗамечание

Выдача команды CLEAR DLLS удаляет из памяти все зарегистрированные функции DLL.

Смотрите также