AnalyseW
Far Manager вызывает функцию AnalyseW
для открытия панели плагина, эмулирующего файловую систему на базе переданного этой функции файла (например, архива).
HANDLE WINAPI AnalyseW(
const struct AnalyseInfo *Info
);
Параметры
Info
Указатель на структуру
AnalyseInfo - информация, переданная Far Manager'ом, для анализа плагином содержимого файла.
В начале функции проверьте, что поле
AnalyseInfo.StructSize >= sizeof(AnalyseInfo)
.
Возвращаемое значение
Если плагин обрабатывает переданный файл и на базе него эмулирует файловую систему, то плагин должен возвращать описатель, отличный от NULL
(INVALID_HANDLE_VALUE
считается валидным описателем).
Замечания
- Возвращенный плагином описатель будет равен значению поля OpenAnalyseInfo.Handle в функции OpenW(OPEN_ANALYSE,...).
- Плагин должен освободить память выделенную под описатель в функции CloseAnalyseW (значение поля CloseAnalyseInfo.Handle).
- Если плагин будет эмулировать файловую систему, то необходимо сохранить значение поля
AnalyseInfo.FileName
во внутренних переменных, т.к. позже оно может понадобиться плагину.
- Far Manager при нажатии Enter на выбранном файле опрашивает все плагины, экспортирующих эту функцию. Плагины просматриваются в алфавитном порядке (по имени DLL-модуля) и
кто первый вернул значение, отличное от
NULL
- тому и отдаётся управление. Данное поведение по умолчанию дополнительно регулируется опцией Far Manager "Параметры менеджера плагинов" - "Обработка файла",
если опция включена, то будет показано меню со всеми плагинами, экспортирующими эту функцию (подробности смотрите в файле помощи Far Manager).
Пример
Пример из плагина "TmpPanel".
HANDLE WINAPI AnalyseW(const struct AnalyseInfo *Info)
{
if (Info->FileName == nullptr || !Info->BufferSize)
return nullptr;
if (!FSF.ProcessName(Opt.Mask, (wchar_t*)Info->FileName, lstrlen(Info->FileName),PN_CMPNAMELIST))
return nullptr;
return HANDLE(1); // будем эмулировать панель на базе переданного Far Manager'ом файла
}
Смотрите также: