Call
... = Plugin.Call (PluginId, ...) Параметры: PluginId: string (GUID плагина в текстовом представлении) ... : ноль или более дополнительных параметров Возвращает: ... : ноль или более возвращаемых значений Описание: 1. Функция осуществляет "асинхронный" вызов плагина. Если вызов в действительности оказался асинхронным (например, если плагин вывел диалог на экран), функция возвращает true, не дожидаясь возврата от плагина, и макрос продолжает исполнение. 2. Если вызов в действительности оказался синхронным, макросу возвращаются величины в соответствии с тем, что вернул плагин: - Если плагин не найден или вернул 0, макросу возвращается false. - Если плагин вернул 1 или INVALID_HANDLE_VALUE, макросу возвращается true. - Если плагин вернул указатель на структуру FarMacroCall, см пункт 4. 3. Параметры передаются плагину в соответствии с их Lua-типами: nil -> FMVT_NIL boolean -> FMVT_BOOLEAN number -> FMVT_DOUBLE int64 -> FMVT_INTEGER (int64 - тип userdata, создаваемый библиотекой bit64) string -> FMVT_STRING (автоматически преобразуется из UTF-8 в UTF-16LE) {string} -> FMVT_BINARY (для того, чтобы передать произвольный стринг без преобразования UTF-8 -> UTF16LE, его нужно передавать, помещённым в таблицу как элемент с ключом 1) 4. Величины, возвращаемые плагином через структуру FarMacroCall, передаются макросу следующим образом: FMVT_NIL -> nil FMVT_BOOLEAN -> boolean FMVT_DOUBLE -> number FMVT_INTEGER -> number, если "укладывается" в 53 бита, иначе int64 FMVT_STRING -> string (автоматически преобразуется из UTF-16LE в UTF-8) FMVT_BINARY -> table (в таблице передаётся строка как элемент с ключом 1; передаётся как есть, без преобразования) FMVT_POINTER -> light userdata FMVT_ARRAY -> table (массив элементов; в таблице установлено два поля: ["type"] = "array", и ["n"] = количество элементов массива) См. также: Ограничения в использовании некоторых функций