Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

как получить пути в FS плагине

 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
zvyagaaa



Joined: 31 Aug 2009
Posts: 46

Post (Separately) Posted: Mon Oct 24, 2011 17:05    Post subject: как получить пути в FS плагине Reply with quote

Добрый день, хочу сделать 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
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Mon Oct 24, 2011 19:03    Post subject: Reply with quote

zvyagaaa
"Копирование" является внутренней функцией плагина и должно реализовываться целиком и полностью разработчиком. Поскольку плагин предоставляет Тоталу содержимое виртуальной файловой системы, то эта файловая система должна где-то у плагина храниться. Когда Тотал запрашивает список через FsFindFirst/FsFindNext, плагин обращается к этой базе и отдаёт Тоталу актуальный список файлов. Когда пользователь хочет добавить новый файл, вызывается FsPutFile, и плагин должен обеспечить обновление содержимого базы, чтобы этот новый файл туда попал, а Тотал после этого снова обратится к плагину, перечитает список файлов и увидит, что новый файл там появился.

Как у тебя вообще сейчас реализованы FsFindFirst и FsFindNext?
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
zvyagaaa



Joined: 31 Aug 2009
Posts: 46

Post (Separately) Posted: Mon Oct 24, 2011 20:17    Post subject: Reply with quote

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
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Mon Oct 24, 2011 22:55    Post subject: Reply with quote

zvyagaaa
Ну и откуда тут может появиться скопированный файл? Ты всегда возвращаешь Тоталу информацию, что у тебя ровно один объект с именем [Запустить файл]. Как же Тотал может в этой ситуации показать что-либо иное?
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
zvyagaaa



Joined: 31 Aug 2009
Posts: 46

Post (Separately) Posted: Tue Oct 25, 2011 04:56    Post subject: Reply with quote

а как тогда? есть пример кода?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Oct 25, 2011 10:05    Post subject: Reply with quote

Для начала, что должен делать плагин? Какие объекты он должен отображать? Для чего он?

Когда разберёшься, что будет храниться в файловой системе плагина, сразу станет понятно, список чего возвращать тоталу при запросе содержимого.

На FsFindFirst возвращаешь информацию о первом объекте, соответствующем запрашиваемому пути, на каждый вызов FsFindNext - очередной объект, пока не перечислишь все. Потом говоришь, что больше объектов нет. Например, если объекты у тебя хранятся тупо в массиве, то при возвращении очередного элемента увеличиваешь на 1 индекс в массиве, пока не дойдёшь до конца.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
zvyagaaa



Joined: 31 Aug 2009
Posts: 46

Post (Separately) Posted: Tue Oct 25, 2011 10:54    Post subject: Reply with quote

Quote:
Для начала, что должен делать плагин? Какие объекты он должен отображать? Для чего он?

Для пакетной обработки файлов. Объекты должен отображать - файлы (точнее ссылки на реальные файлы). Я вижу это так. Я копирую файлы на панель, потом жму на выполнить, список с панели обрабатывается. Как в Complex CD.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Oct 25, 2011 14:02    Post subject: Reply with quote

В таком случае заведи себе массив (или динамический список, или очередь), куда добавляй файлы по FsPutFile, а по FsFindFirst/FsFindNext перечисляй содержимое массива. Инфу, которую тотал хочет получить по каждому файлу (структура WIN32FINDDATA), можно получить, вызывая виндовую функцию FindFirstFile, если передать ей путь к файлу.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
zvyagaaa



Joined: 31 Aug 2009
Posts: 46

Post (Separately) Posted: Wed Oct 26, 2011 16:04    Post subject: Reply with quote

с этим вопросом я разобрался, а подскажите как теперь мне сделать папку и все скопированные файлы, чтобы попадали в папку? с папкой не получается Sad
может кто-нибудь на пальцах объяснить как тут папки делать?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Oct 26, 2011 18:30    Post subject: Reply with quote

Возвращаешь тоталу атрибут FILE_ATTRIBUTE_DIRECTORY у элементов, которые у тебя представляют папки. И когда тотал будет запрашивать их содержимое (это будет видно по пути при вызове FsFindFirst), перечисляешь уже не содержимое основной папки плагина, а этой подпапки.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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