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

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

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

ProcessFile (обработать файл)

ProcessFile должна распаковать нужный файл или тестировать целостность архива.

int __stdcall ProcessFile (HANDLE hArcData, int Operation, char *DestPath, char *DestName);

function ProcessFile(hArcData: THandle; Operation: longint; DestPath, DestName: PChar): longint; stdcall;

Описание

ProcessFile должна возвращать ноль при успешном вызове или один из кодов ошибок при неудачном.

hArcData содержит дескриптор, ранее возвращённый вами в OpenArchive. При его использовании вы сможете получить информацию, которая нужна для распаковки файлов из архива, например имя файла архива.

В отличие от PackFiles, ProcessFile просматривает только одно имя файла. DestName содержит либо полный путь и имя файла и DestPath = NULL, либо DestName содержит только имя файла, а DestPath содержит путь. Сделано для совместимости с unrar.dll.

Когда Total Commander открывает архив в первый раз, он сканирует все имена файлов со значением OpenMode==PK_OM_LIST, поэтому ReadHeader() вызывается в цикле с вызовом ProcessFile(..., PK_SKIP, ...).

Когда пользователь выбирает файл(ы) и начинает их распаковку, Total Commander ещё раз вызывает ReadHeader() в цикле. Для каждого файла, который должен быть распакован, Total Commander вызывает ProcessFile() со значением Operation==PK_EXTRACT сразу после вызова ReadHeader() для этого файла. Если файл должен быть пропущен, ProcessFile() вызывается со значением Operation==PK_SKIP.

Каждый раз DestName содержит имя файла для распаковки, тестирования или пропуска. Чтобы узнать, какую операцию из трёх вы должны применить в текущему файлу в архиве, переменной Operation присваивается одно из следующих значений:

Константа

ЗначениеОписание

PK_SKIP

0Пропустить файл (без распаковки)

PK_TEST

1Тестировать целостность файла

PK_EXTRACT

2Распаковать файл на диск


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