Программы, плагины, статьи от Моторокера

Новости
Статьи
Программы
Ссылки
Автор

Рекомендации по написанию архиваторных плагинов для Total Commander

Заголовочный файл для C

/* Содержимое файла wcxhead.h */
/* Содержит описания кодов ошибок, флагов и экспортируемых функций */

/* Коды ошибок, возвращаемых вызывающему приложению */
#define E_SUCCESS=         0    /* Выполнено успешно */
#define E_END_ARCHIVE     10    /* Нет больше файлов в архиве (конец архива) */
#define E_NO_MEMORY       11    /* Не хватает памяти */
#define E_BAD_DATA        12    /* Ошибка в данных */
#define E_BAD_ARCHIVE     13    /* Ошибка CRC в данных архива */
#define E_UNKNOWN_FORMAT  14    /* Ошибочный формат архива */
#define E_EOPEN           15    /* Невозможно открыть существующий файл */
#define E_ECREATE         16    /* Невозможно создать файл */
#define E_ECLOSE          17    /* Ошибка закрытия файла */
#define E_EREAD           18    /* Ошибка чтения из файла */
#define E_EWRITE          19    /* Ошибка записи в файл */
#define E_SMALL_BUF       20    /* Буфер слишком мал */
#define E_EABORTED        21    /* Функция прервана пользователем */
#define E_NO_FILES        22    /* Файлы не найдены */
#define E_TOO_MANY_FILES  23    /* Слишком много файлов для упаковки */
#define E_NOT_SUPPORTED   24    /* Функция не поддерживается */

/* Флаги распаковки */
#define PK_OM_LIST          0
#define PK_OM_EXTRACT       1

/* Флаги для ProcessFile */
#define PK_SKIP             0    /* Пропустить файл (без распаковки) */
#define PK_TEST             1    /* Тестировать целостность файла */
#define PK_EXTRACT          2    /* Распаковать файл на диск */

/* Flags passed through ChangeVolProc */
#define PK_VOL_ASK          0    /* Запросить расположение следующего тома */
#define PK_VOL_NOTIFY       1    /* Уведомить приложение, что следующий том */
                                 /* может быть распакован */

/* Флаги упаковки */

/* Флаги для PackFiles */
#define PK_PACK_MOVE_FILES  1    /* Удалить исходный файл после упаковки */
#define PK_PACK_SAVE_PATHS  2    /* Сохранять пути файлов */
#define PK_PACK_ENCRYPT     4 /* Запрашивает пароль у пользователя при шифровании */

/* Возвращает GetPackCaps */
#define PK_CAPS_NEW          1    /* Может создавать новые архивы */
#define PK_CAPS_MODIFY       2    /* Может изменять существующие архивы */
#define PK_CAPS_MULTIPLE     4    /* Архив может содержать несколько файлов */
#define PK_CAPS_DELETE       8    /* Может удалять файлы */
#define PK_CAPS_OPTIONS     16    /* Есть диалог настроек */
#define PK_CAPS_MEMPACK     32    /* Поддерживает упаковку в памяти */
#define PK_CAPS_BY_CONTENT  64    /* Определяет тип архива по содержимому */
#define PK_CAPS_SEARCHTEXT 128   /* Может искать текст в архиве */
#define PK_CAPS_HIDE       256   /* Показать как обычный файл (скрыть иконку */
                           /* архива), не открывать по Enter, только по Ctrl+PgDn */
#define PK_CAPS_ENCRYPT    512   /* Плагин поддерживает параметр PK_PACK_ENCRYPT */

/* Флаги для упаковки в памяти */
#define MEM_OPTIONS_WANTHEADERS 1  /* Return archive headers with packed data */

/* Errors returned by PackToMem */
#define MEMPACK_OK          0 /* Function call finished OK, but there is more data */
#define MEMPACK_DONE        1 /* Function call finished OK, there is no more data */


typedef struct {
    char ArcName[260];
    char FileName[260];
    int Flags;
    int PackSize;
    int UnpSize;
    int HostOS;
    int FileCRC;
    int FileTime;
    int UnpVer;
    int Method;
    int FileAttr;
    char* CmtBuf;
    int CmtBufSize;
    int CmtSize;
    int CmtState;
 } tHeaderData;

typedef struct {
    char ArcName[1024];
    char FileName[1024];
    int Flags;
    unsigned int PackSize;
    unsigned int PackSizeHigh;
    unsigned int UnpSize;
    unsigned int UnpSizeHigh;
    int HostOS;
    int FileCRC;
    int FileTime;
    int UnpVer;
    int Method;
    int FileAttr;
    char* CmtBuf;
    int CmtBufSize;
    int CmtSize;
    int CmtState;
    char Reserved[1024];
  } tHeaderDataEx;

typedef struct {
    char* ArcName;
    int OpenMode;
    int OpenResult;
    char* CmtBuf;
    int CmtBufSize;
    int CmtSize;
    int CmtState;
 } tOpenArchiveData;

typedef struct {
    int Size;
    DWORD PluginInterfaceVersionLow;
    DWORD PluginInterfaceVersionHi;
    char DefaultIniName[MAX_PATH];
} PackDefaultParamStruct;

/* Описание экспортируемых функций, вызываемых из DLL */
/* Запрашивает смену диска для многотомного архива */
typedef int (__stdcall *tChangeVolProc)(char *ArcName,int Mode);
/* Сведения об обработке данных – используется для диалога прогресса */
typedef int (__stdcall *tProcessDataProc)(char *FileName,int Size);

© 2006–2011 Моторокер Плагины для Total Commander