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 

WCX не работает со всеми расширениями.

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



Joined: 27 Mar 2006
Posts: 12

Post (Separately) Posted: Tue Mar 28, 2006 06:34    Post subject: WCX не работает со всеми расширениями. Reply with quote

WCX не работает со всеми расширениями. Работает только с расширением зарегестрированным на него. А мне надо иметь возможность обрабатывать все расширения и выбирать нужное.
Так работает, например:
far2wc=448,%commander_path%\Plugins\WCX\FAR2WC\FAR2WC.WCX

в коде:
Code:

int __stdcall GetPackerCaps()
{
   return PK_CAPS_HIDE|PK_CAPS_BY_CONTENT;
}
Back to top
View user's profile Send private message
vserd



Joined: 26 Apr 2005
Posts: 118

Post (Separately) Posted: Tue Mar 28, 2006 13:43    Post subject: Reply with quote

Dmitryk1
Зарегистрируй плугин на отфонарное расширение, тогда, TC будет выполнять поиск через вызов CanHandleThisArchive.

Поиск архиваторного плугина осуществляется следующим образом.
1. Total Commander проверяет может ли он обработать файл с данным расширением.
2. Если может, осуществляется обработка. Дальнейший поиск не производится.
3. Если не может, тогда ищется расширение в wincmd.ini секция [PackerPlugins]
4. Если нашли, тогда передаем файл на обработку ему, поиск прекращаем. Даже если плугин предназначен для совершенно другого типа файлов, и возвращает ошибку, Total Commander не производит дальнейший поиск.
P Как пример можно привести расширение EXE. Под этим расширением может быть как "обычная" программа, так и самораспаковывающийся архив. Самораспаковывающийся архив может быть различного типа (RAR, ZIP, MS CAB, InstallShield инсталяция, InnoSetup и так далее).
5. Если расширения не найдено, Total Commander производит перебор всех плугинов из wincmd.ini секция [PackerPlugins] начиная с первого. Если плугин может обработать файл, он говорит об этом Total Commander-у и Total Commander прекращает поиск и вызывает плугин. Когда перебраны все записи о плугинах, Total Commander ничего не делает.

Отсюда следует вывод. Для успешной работы нескольких плугинов, которые могут обрабатывать одинаковые расширения, нужна только запись о плугине в wincmd.ini [PackerPlugins].
Под каким расширением будет зарегистрирован плугин, совершенно не важно.
Если несколько плугинов могут обработать один и тот-же тип архивов (например ms cab), будет вызван первый плугин в порядке очереди в [PackerPlugins].

Total Commander использует записи в wincmd.ini [PackerPlugins] для упаковки файлов. Вы можете выбрать тип архива из комбобокса и создать файл данного типа.
Применительно к MultiArc это означает что вы должны регистрировать только те типы Addon-ов которые будете использовать для создания архивов. Для распаковки архивов вам достаточно одной любой записи в wincmd.ini [PackerPlugins] в которой упоминается MultiArc.
Back to top
View user's profile Send private message
Dmitryk1



Joined: 27 Mar 2006
Posts: 12

Post (Separately) Posted: Tue Mar 28, 2006 14:19    Post subject: Reply with quote

Вот! Как тотал осуществляет проверку на :
1. Total Commander проверяет может ли он обработать файл с данным расширением

Собираю плагин. ставлю процесс на отладку и точку останова. захожу в архив с ассоциированным расширением.
Есть остановка в процедуре Load.

Захожу в любой другой файл. остановки нету Sad Файл ничем не открывается. т.е командер не отдаёт плагину этот файл и я не могу узнать нужен мне этот файл или нет...

Точка останова в начале процедуры.

Я могу попросить юзера регистрировать плагин со всеми нужными расширениями, но мне надо получить именно возможность просмотре всех файлов.

Да. если мой плагин отправляет в ответ что плохой архив, будут дальше проверки, других плагинов, или коммандер сругается и всё?
Back to top
View user's profile Send private message
Dmitryk1



Joined: 27 Mar 2006
Posts: 12

Post (Separately) Posted: Fri Mar 31, 2006 11:05    Post subject: Reply with quote

Чего-то никто не отвечает...
в коде указал
Code:
int __stdcall GetPackerCaps()
{
   return PK_CAPS_HIDE|PK_CAPS_BY_CONTENT;
}

в коммандере в инишнике
ctconv=448,C:\Totalcmd\Plugins\WCX\CTConv\Debug\CTConv.wcx

в правильное расширение входит по ентеру (в ctconv). В остальные даже не пытается по контрол пейдждауну.

Где ещё эта возможность может скрываться?
Я начал просто добавлять нужные расширения в инишник. но он в них начинает тоже по ентеру входить а так не надо...
Back to top
View user's profile Send private message
vserd



Joined: 26 Apr 2005
Posts: 118

Post (Separately) Posted: Fri Mar 31, 2006 17:35    Post subject: Reply with quote

CanYouHandleThisFile обрабатываешь?
Back to top
View user's profile Send private message
Lamer



Joined: 20 Mar 2006
Posts: 522

Post (Separately) Posted: Fri Mar 31, 2006 21:02    Post subject: Reply with quote

Если я правильно понял вопрос,необходимо обеспечить,чтобы plugin проверял специфическую сигнатуру архива.Иначе его работа так и останется ограниченной зарегистрированными расширениями.В случае Multiarca сигнатура прописывается в строке ID=...
Back to top
View user's profile Send private message
vserd



Joined: 26 Apr 2005
Posts: 118

Post (Separately) Posted: Mon Apr 03, 2006 12:41    Post subject: Reply with quote

Lamer
Quote:
необходимо обеспечить,чтобы plugin проверял специфическую сигнатуру архива.Иначе его работа так и останется ограниченной зарегистрированными расширениями.

Не совсем. Проерка сигнатуры это внутренняя проверка самого плугина. Но плугин должен сказать ТС может он обработать этот файл или нет. Это делает CanYouHandleThisFile.
Но проблема с CanYouHandleThisFile в том, что если расширение зарегистрировано на конкретный плугин, тогда ТС напрямую передает ему управление, без вызова CanYouHandleThisFile.
А вот если нет регистрации на это расширение, тогда тотал перебирает плугины с помощью CanYouHandleThisFile.

Dmitryk1
Попробуй поставить точки оснатова не только на Load, но и на CanYouHandleThisFile, OpenArchive.
Back to top
View user's profile Send private message
Dmitryk1



Joined: 27 Mar 2006
Posts: 12

Post (Separately) Posted: Tue Apr 04, 2006 09:43    Post subject: Reply with quote

vserd wrote:
CanYouHandleThisFile обрабатываешь?

Нет Smile
Ща поищу, что и где такое Smile
Back to top
View user's profile Send private message
Dmitryk1



Joined: 27 Mar 2006
Posts: 12

Post (Separately) Posted: Tue Apr 04, 2006 14:16    Post subject: Reply with quote

Dmitryk1 wrote:
vserd wrote:
CanYouHandleThisFile обрабатываешь?

Нет Smile
Ща поищу, что и где такое Smile


не работаетSad может примерчик есть у кого-то?
и цифру в ини какую ставить? на плагин...
Back to top
View user's profile Send private message
vserd



Joined: 26 Apr 2005
Posts: 118

Post (Separately) Posted: Tue Apr 04, 2006 19:23    Post subject: Reply with quote

Dmitryk1
Значит чего-то не так делаешь. MultiArc то именно так говорит TC может он обработать файл или нет.
Смотри исходники MA.
Back to top
View user's profile Send private message
Dmitryk1



Joined: 27 Mar 2006
Posts: 12

Post (Separately) Posted: Wed Apr 05, 2006 13:52    Post subject: Reply with quote

vserd wrote:
Dmitryk1
Значит чего-то не так делаешь. MultiArc то именно так говорит TC может он обработать файл или нет.
Смотри исходники MA.


Спасибо за советы. Скачал исходники мультиарка. действительно там заработало. Причём у меня так и не работает Smile Ищу грабли. надеюсь не детские Wink Ещё раз спасибо за советы!
Back to top
View user's profile Send private message
Dmitryk1



Joined: 27 Mar 2006
Posts: 12

Post (Separately) Posted: Thu May 18, 2006 08:19    Post subject: Reply with quote

Действительно, детские грабли были Smile ... слабо разбираюсь в С++.
И несколько ещё вопросов возникло, исключительно по с++ Применительно к коммандеру.
Отсюда просьба, если у кого-то есть время и желание отвечать иногда на мои, зачастую не сложные вопросы на эту тему, напишите в аську 122370935. Буду очень признателен.
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