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

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

Архиваторный плагин для Total Commander на Delphi

Функции, минимально необходимые в плагине «только для чтения»

OpenArchive – сообщает плагину, какой архив должен быть открыт для просмотра или чтения.

ReadHeader – эта функция вызывает до тех пор, пока плагин не возвратит код ошибки – плагин должен возвратить одно имя файла из архива за вызов.

ProcessFile – вызывается сразу после ReadHeader. Сообщает плагину распаковать, тестировать или пропустить этот файл.

CloseArchive – вызывается после того, как ReadHeader возвратит код ошибки.

SetChangeVolProc – устанавливает функцию для обратной связи, которая запрашивает смену диска пользователем.

SetProcessDataProc – устанавливает функцию для обратной связи, которая позволяет прервать операции упаковки или распаковки.

Если этих функций нет в библиотеке, при попытке установки плагина Total Commander выдаёт сообщение “This is not a valid packer plugin! You can find valid plugins on www.ghisler.com under section 'addons'.”

This is not a valid packer plugin!
You can find valid plugins on www.ghisler.com under section "addons"
Увеличить

Мне нужна только упаковка, поэтому во всех функциях по открытию/распаковке архива (OpenArchive, ReadHeader, ProcessFile, CloseArchive) я возвращаю код ошибки E_NOT_SUPPORTED (функция не поддерживается).

function OpenArchive(var ArchiveData: TOpenArchiveData): THandle; stdcall;
begin
  Result:= E_NOT_SUPPORTED; // функция не поддерживается
end;

Функция GetPackerCaps сообщает Total Commander'у, какие возможности поддерживает плагин. Пока мне нужны только PK_CAPS_NEW (может создавать новые архивы) и PK_CAPS_HIDE (скрыть иконку архива, показать как обычный файл). Также выявлено, что при отсутствии флага PK_CAPS_MULTIPLE Total Commander всегда ставит галочку «Отдельные архивы для каждого выбранного файла/каталога». Даже если плагин не создаёт мультифайловые архивы (например, только конвертирует файлы), флаг лучше добавить. Добавьте также флаг PK_CAPS_MODIFY, без него Тотал будет ругаться, если имя архива будет таким же, как имя существующего файла.

// определение возможностей плагина
function GetPackerCaps: integer; stdcall;
begin
  Result:= PK_CAPS_NEW      or // Может создавать новые архивы
           PK_CAPS_HIDE     or // Скрыть иконку архива
           PK_CAPS_MULTIPLE or // Архив может содержать несколько файлов
           PK_CAPS_MODIFY;     // Может изменять существующие архивы
end;

<< Назад | Оглавление | Дальше >>
Упаковка файлов


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