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'ом файла }
Смотрите также: