Пишу FS-плагин.
Есть ли возможность:
1. обрабатывать в плагине нажатие F3, F4, F9 ?
2. использовать для внутреннего копирования функции самого TC ? (пример: файл плагина - это реальный файл на винте, и при желании его можно куда-нибудь скопировать или перенести).
P.S. Поиск тут ничего не нашёл, FsLinksToLocalFiles/FsGetLocalName попробовал - не работает.
WFX Вызов функций TC изнутри
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
WFX Вызов функций TC изнутри
Praemonitus praemunitus
Обрабатывать нажатия клавиш в плагине нельзя (разве что хуками и прочей низкоуровневой ерундой).
По нажатию F3/F4 тотал обычно извлекает файл во временную папку и открывает в листере/редакторе. По F8 (думаю, это подразумевалось, а не F9) тотал вызывает функцию плагина по удалению файла/папки. Если плагин скажет тоталу, что он - плагин временной панели, тотал будет спрашивать у плагина путь к физическому файлу вместо извлечения файла во временную папку.
Использовать функции тотала нельзя, никакой интерфейс для этого тотал не предоставляет (единственное, что предоставляет - это показ окон с полем ввода).
По нажатию F3/F4 тотал обычно извлекает файл во временную папку и открывает в листере/редакторе. По F8 (думаю, это подразумевалось, а не F9) тотал вызывает функцию плагина по удалению файла/папки. Если плагин скажет тоталу, что он - плагин временной панели, тотал будет спрашивать у плагина путь к физическому файлу вместо извлечения файла во временную папку.
Использовать функции тотала нельзя, никакой интерфейс для этого тотал не предоставляет (единственное, что предоставляет - это показ окон с полем ввода).
Я имел в виду именно F9, поскольку F8 у меня отлично заработала - после вопроса об удалении срабатывают все "вложенные" действия.MVV писал(а):По F8 (думаю, это подразумевалось, а не F9) тотал вызывает функцию плагина по удалению файла/папки.
Пробовал. В списке есть файлы типа .txt, которые, разумеется, должны были открыться. Однако на выходе получился пшик. ЧЯДНТ?MVV писал(а):Если плагин скажет тоталу, что он - плагин временной панели, тотал будет спрашивать у плагина путь к физическому файлу вместо извлечения файла во временную папку.
Т.е. чтобы скопировать файл "из плагина, придётся реализовывать FsGetFile и остальной геморрой самостоятельно?MVV писал(а):Использовать функции тотала нельзя, никакой интерфейс для этого тотал не предоставляет
И ещё вопрос. Нашёл тут на форуме способ обновить панель через cm_RereadSource, однако и он не работает. В тоже время при "открытии" файла текст подтверждения указывает на то, что информация о файлах успешно обновилась. Почему же не обновилась панель?
Praemonitus praemunitus
А что есть F9?Я имел в виду именно F9
Плагин точно экспортирует функции FsLinksToLocalFiles и FsGetLocalName?Пробовал. В списке есть файлы типа .txt, которые, разумеется, должны были открыться.
Придется. Тотал ведь не знает, какая файловая система у плагина.Т.е. чтобы скопировать файл "из плагина, придётся реализовывать FsGetFile и остальной геморрой самостоятельно?
И ещё вопрос. Нашёл тут на форуме способ обновить панель через cm_RereadSource, однако и он не работает. В тоже время при "открытии" файла текст подтверждения указывает на то, что информация о файлах успешно обновилась. Почему же не обновилась панель?
При вызове cm_RereadSource какая панель активна? Обновляется только активная панель. И вообще, вызов этой команды приводит к куче неприятных моментов типа выхода из архивов.
ХЕЗ. Я думал, что есть реакция на Fx, так что вопрос закрыт.MVV писал(а):А что есть F9?
MVV писал(а):Плагин точно экспортирует функции FsLinksToLocalFiles и FsGetLocalName?
Код: Выделить всё
function FsLinksToLocalFiles:bool; stdcall;
begin
Result:=True;
end;
function FsGetLocalName(RemoteName:pchar;maxlen:integer):bool; stdcall;
var
fn, rn: String;
i: Integer;
begin
CS_GLN.Enter;
fn:=StrPas(RemoteName);
Delete(fn, 1, 1);
i:=DataIndex(fn);
if i<0 then
Result:=False
else
begin
rn:=ExtractToken('saveto', DataGet(i));
if FileExists(rn) then
begin
FillChar(RemoteName, maxlen, 0);
if Length(rn)<maxlen then
begin
StrPCopy(RemoteName, rn);
Result:=true;
end
else
Result:=false;
end
else
Result:=false;
end;
CS_GLN.Leave;
end;
exports
FsInit,
FsFindFirst,
FsFindNext,
FsFindClose,
FsGetDefRootName,
FsSetDefaultParams,
FsExecuteFile,
//FsGetFile,
//FsStatusInfo,
FsExtractCustomIcon,
FsDeleteFile,
FsLinksToLocalFiles,
FsGetLocalName;
Ясно, спасибо.MVV писал(а):Придется. Тотал ведь не знает, какая файловая система у плагина.
Активна панель с моим плагином. Более того - панель не обновляется даже по кнопке "Обновить содержимое панели".MVV писал(а):При вызове cm_RereadSource какая панель активна? Обновляется только активная панель. И вообще, вызов этой команды приводит к куче неприятных моментов типа выхода из архивов.
Просто задача стоит таким образом: происходят внешние изменения данных, которые должны отразиться в обновлении панели (меняются значки и размер файлов).
Praemonitus praemunitus
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Поменяй для обновившегося файла дату модификации, чтобы при перечитывании каталога Тотал её получил. Тогда он обновит и остальное.KorneySan писал(а):Просто задача стоит таким образом: происходят внешние изменения данных, которые должны отразиться в обновлении панели (меняются значки и размер файлов).
Почему же, ё-моё, ты нигде не пишешь "ё"?
Спасибо, помогло.CaptainFlint писал(а):Поменяй для обновившегося файла дату модификации, чтобы при перечитывании каталога Тотал её получил. Тогда он обновит и остальное.
До этого я устанавливал дату модификации, одинаковую с датой создания. Теперь я устанавливаю дату модификации в текущее время, обновление работает.
Praemonitus praemunitus