DLL.CallFunction

string DLL.CallFunction ( string Filename,
string FunctionName,
string Parameters = "",
number ReturnType = 0,
number CallConvention = 0 )
Примеры

Описание

Вызывает функцию в динамически подключаемой библиотеке (dynamically linked library - DLL). Её можно использовать для расширения функциональности собственных функций AutoPlay.

Внимание: Вызов DLL-ок довольно сложная вещь и писать DLL-ки лучше всего на C или C++. Мы стараемся предоставить широкий спектр функциональных возможностей в AutoPlay, поэтому не так уж много причин для вызова внешних DLL. Убедитесь, что точно знаете, какие параметры берет вызываемая функция DLL. Предоставление слишком больших параметров или их нехватка может повредить память приложения, так что используйте их под свою ответственность.

Параметры

Filename

(строка) Путь к DLL файлу.

FunctionName

(строка) Имя функции внутри DLL.

Parameters

(строка) Разделенный запятыми, список параметров, которые нужно передать функции.

Примечание: Помещаем в двойные кавычки любые параметры, которые проходят как указатели строк, оканчивающиеся на NULL. Поддерживаются только ANSI строки, не Unicode. Параметры без кавычек считаются как целые числа в формате LONG.

Все параметры только однонаправленные — они могут быть переданы в DLL функцию, но не могут быть вычислены после вызова функции. (Другими словами, эти параметры проходят по значению, но не проходят по ссылке.)

ReturnType

(число) Тип значения, возвращаемого функцией:

КОНСТАНТА
CONSTANT
ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
DLL_RETURN_TYPE_INTEGER0AutoPlay будет интерпретировать возвращаемое значение функции как 16-битное целое число (int).
DLL_RETURN_TYPE_LONG1AutoPlay будет интерпретировать возвращаемое значение функции как 32-битное целое число (long).
DLL_RETURN_TYPE_STRING2AutoPlay будет интерпретировать возвращаемое значение функции как строку оканчивающуюся на NULL.

Примечание: Если функция не возвращает значение (функция возвращает значение void), используйте DLL_RETURN_TYPE_LONG.

CallConvention

(число) Соглашение вызова, что будет использовать AutoPlay при вызове DLL функции:

КОНСТАНТА
CONSTANT
ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
DLL_CALL_CDECL0Вызов DLL функции используя __cdecl соглашение вызова.
DLL_CALL_STDCALL1Вызов DLL функции используя __stdcall соглашение вызова.

Возврат

ResultVariable

(строка) Значение, что было возвращено из DLL функции как результат вызова функции. Если происходит ошибка, будет возвращена пустая строка "". Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.

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

Примеры

Пример 1

DLLResult = DLL.CallFunction("winmm.dll", "mciSendStringA", "\"Set CDAudio Door Open\",0,0,0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
Вызываем функцию mciSendStringA в файле winmm.dll Windows чтобы отправить команду "Set CD Audio Door Open" в драйвер MCI (вместе с двумя параметрами равными 0). Она вызовет открывание лотка привода CD-ROM (т.е. она выбросит CD).

Пример 2

DLL.CallFunction(_SystemFolder .. "\\User32.dll", "SetCursorPos", "0,0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
Вызываем функцию SetCursorPos в файле "Windows\System32\User32.dll" для перемещения курсора в верхний левый угол экрана (то есть, координаты "0,0"). Так как переменная для хранения возвращаемого значения не предоставлена, если функция DLL что-либо возвратит, оно будет просто проигнорировано.
Смотрите также: Связанные действия