View previous topic :: View next topic |
Author |
Message |
zvyagaaa
Joined: 31 Aug 2009 Posts: 46
|
(Separately) Posted: Mon Oct 24, 2011 17:05 Post subject: как получить пути в FS плагине |
|
|
Добрый день, хочу сделать FS плагин, сейчас разбираюсь, на дельфи. Вроде бы разобрался с обработкой нажатия на "файл" в окне WFS
Code: | function FsExecuteFile(MainWin:thandle;RemoteName,Verb:pchar):integer; stdcall;
var tempname:string;
Begin
//Запуск файла
result:=FS_EXEC_OK;
tempname:= RemoteName;
if tempname='\[Запустить файл]' then
MessageBox (FindTCWindow,PAnsiChar(tempname),verb,MB_OK+MB_IconInformation);
End; |
не могу разобраться как можно получать пути файлов, при их копировании в панель плагина.
Сейчас делаю так
Code: | function FsPutFile(LocalName,RemoteName:pchar;CopyFlags:integer):integer; stdcall;
begin
//Копирование файла в файловую систему плагина
RemoteName:=LocalName;
result:=FS_FILE_OK;
end; |
Файл копируется, никаких ошибок не вываливается, но в панели файл не появляется.
Подскажите, в какую сторону копать? |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6152 Location: Москва
|
(Separately) Posted: Mon Oct 24, 2011 19:03 Post subject: |
|
|
zvyagaaa
"Копирование" является внутренней функцией плагина и должно реализовываться целиком и полностью разработчиком. Поскольку плагин предоставляет Тоталу содержимое виртуальной файловой системы, то эта файловая система должна где-то у плагина храниться. Когда Тотал запрашивает список через FsFindFirst/FsFindNext, плагин обращается к этой базе и отдаёт Тоталу актуальный список файлов. Когда пользователь хочет добавить новый файл, вызывается FsPutFile, и плагин должен обеспечить обновление содержимого базы, чтобы этот новый файл туда попал, а Тотал после этого снова обратится к плагину, перечитает список файлов и увидит, что новый файл там появился.
Как у тебя вообще сейчас реализованы FsFindFirst и FsFindNext? _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
zvyagaaa
Joined: 31 Aug 2009 Posts: 46
|
(Separately) Posted: Mon Oct 24, 2011 20:17 Post subject: |
|
|
Code: | function FsFindFirst(
path :pchar;
var FindData: tWIN32FINDDATA )
: thandle; stdcall;
begin
FillChar( FindData, SizeOf( FindData ), 0 );
StrPCopy( FindData.cFileName, '[Запустить файл]' );
Result := 13;
end;
function FsFindNext(
Hdl: thandle;
var FindData:tWIN32FINDDATA )
: bool; stdcall;
begin
Result := False;
end;
|
|
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6152 Location: Москва
|
(Separately) Posted: Mon Oct 24, 2011 22:55 Post subject: |
|
|
zvyagaaa
Ну и откуда тут может появиться скопированный файл? Ты всегда возвращаешь Тоталу информацию, что у тебя ровно один объект с именем [Запустить файл]. Как же Тотал может в этой ситуации показать что-либо иное? _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
zvyagaaa
Joined: 31 Aug 2009 Posts: 46
|
(Separately) Posted: Tue Oct 25, 2011 04:56 Post subject: |
|
|
а как тогда? есть пример кода? |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Tue Oct 25, 2011 10:05 Post subject: |
|
|
Для начала, что должен делать плагин? Какие объекты он должен отображать? Для чего он?
Когда разберёшься, что будет храниться в файловой системе плагина, сразу станет понятно, список чего возвращать тоталу при запросе содержимого.
На FsFindFirst возвращаешь информацию о первом объекте, соответствующем запрашиваемому пути, на каждый вызов FsFindNext - очередной объект, пока не перечислишь все. Потом говоришь, что больше объектов нет. Например, если объекты у тебя хранятся тупо в массиве, то при возвращении очередного элемента увеличиваешь на 1 индекс в массиве, пока не дойдёшь до конца. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
zvyagaaa
Joined: 31 Aug 2009 Posts: 46
|
(Separately) Posted: Tue Oct 25, 2011 10:54 Post subject: |
|
|
Quote: | Для начала, что должен делать плагин? Какие объекты он должен отображать? Для чего он? |
Для пакетной обработки файлов. Объекты должен отображать - файлы (точнее ссылки на реальные файлы). Я вижу это так. Я копирую файлы на панель, потом жму на выполнить, список с панели обрабатывается. Как в Complex CD.
|
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Tue Oct 25, 2011 14:02 Post subject: |
|
|
В таком случае заведи себе массив (или динамический список, или очередь), куда добавляй файлы по FsPutFile, а по FsFindFirst/FsFindNext перечисляй содержимое массива. Инфу, которую тотал хочет получить по каждому файлу (структура WIN32FINDDATA), можно получить, вызывая виндовую функцию FindFirstFile, если передать ей путь к файлу. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
zvyagaaa
Joined: 31 Aug 2009 Posts: 46
|
(Separately) Posted: Wed Oct 26, 2011 16:04 Post subject: |
|
|
с этим вопросом я разобрался, а подскажите как теперь мне сделать папку и все скопированные файлы, чтобы попадали в папку? с папкой не получается
может кто-нибудь на пальцах объяснить как тут папки делать? |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|