|
Плагин создает текстовый файл («архив») со списком файлов. Вся обработка происходит в функции DoPack.
Паковать прямо в функции PackFiles не получилось – из Delphi всё работает нормально, но при упаковке из Total Commander программа просто тихо закрывается, не выводя никаких сообщений.
function PackFiles(PackedFile, SubPath, SrcPath, AddList: PChar;
Flags: integer): integer; stdcall;
begin
Result:= DoPack(PackedFile, SrcPath, AddList);
end;
Функция обрабатывает минимум возможных ошибок. Путь к файлу в архиве SubPath не нужен, поэтому строка игнорируется. Обратите внимание: в AddList передаются не только имена файлов с папками, но и имена этих папок отдельно – вы можете написать плагин только для копирования структуры папок.
Для использования функции FileExists добавьте в uses SysUtils. Если в плагине нет диалога настройки, лучше скопируйте саму функцию из SysUtils, чтобы не тянуть за собой весь код SysUtils.
// функция "упаковки"
function DoPack(PackedFile, SrcPath: string; S: PChar): integer;
var
p: PChar;
f: TextFile;
FileName: string;
begin
// файл "архива" существует, изменять его не можем,
// можем только создавать новые
if FileExists(PackedFile) then begin
Result:= E_NOT_SUPPORTED; // Функция не поддерживается
Exit;
end;
AssignFile(f, PackedFile);
try
Rewrite(f); // попробуем открыть файл для записи
except
Result:= E_ECREATE; // Невозможно создать файл
Exit;
end;
// просматриваем все имена файлов
p:= S;
while Length(p) > 0 do begin
FileName:= SrcPath + string(p);
WriteLn(f, FileName); // В этой строке можно написать
// любой обработчик для файла
p:= PChar(DWORD(p) + Length(p) + 1);
end;
Flush(f);
CloseFile(f);
Result:= E_SUCCESS; // Выполнено успешно
end;
Плагин готов, можно исправить файл Read_me.txt и распространять за деньги . Плагин ещё не умеет показывать индикатор выполнения, да и показывать пока нечего – Total Commander дольше папки сканирует, чем работает плагин. Также нельзя прервать работу плагина.
Скачать пример простого плагина на Delphi (rar, 26 Kb). Для установки зарегистрируйте плагин на любое придуманное расширение, например LST2.
<< Назад |
Оглавление |
Дальше >>
Установка плагинов в Total Commander
|