View previous topic :: View next topic |
Author |
Message |
Dmitryk1
Joined: 27 Mar 2006 Posts: 12
|
(Separately) Posted: Tue Mar 28, 2006 06:34 Post subject: WCX не работает со всеми расширениями. |
|
|
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 |
|
|
vserd
Joined: 26 Apr 2005 Posts: 118
|
(Separately) Posted: Tue Mar 28, 2006 13:43 Post subject: |
|
|
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 |
|
|
Dmitryk1
Joined: 27 Mar 2006 Posts: 12
|
(Separately) Posted: Tue Mar 28, 2006 14:19 Post subject: |
|
|
Вот! Как тотал осуществляет проверку на :
1. Total Commander проверяет может ли он обработать файл с данным расширением
Собираю плагин. ставлю процесс на отладку и точку останова. захожу в архив с ассоциированным расширением.
Есть остановка в процедуре Load.
Захожу в любой другой файл. остановки нету Файл ничем не открывается. т.е командер не отдаёт плагину этот файл и я не могу узнать нужен мне этот файл или нет...
Точка останова в начале процедуры.
Я могу попросить юзера регистрировать плагин со всеми нужными расширениями, но мне надо получить именно возможность просмотре всех файлов.
Да. если мой плагин отправляет в ответ что плохой архив, будут дальше проверки, других плагинов, или коммандер сругается и всё? |
|
Back to top |
|
|
Dmitryk1
Joined: 27 Mar 2006 Posts: 12
|
(Separately) Posted: Fri Mar 31, 2006 11:05 Post subject: |
|
|
Чего-то никто не отвечает...
в коде указал
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 |
|
|
vserd
Joined: 26 Apr 2005 Posts: 118
|
(Separately) Posted: Fri Mar 31, 2006 17:35 Post subject: |
|
|
CanYouHandleThisFile обрабатываешь? |
|
Back to top |
|
|
Lamer
Joined: 20 Mar 2006 Posts: 522
|
(Separately) Posted: Fri Mar 31, 2006 21:02 Post subject: |
|
|
Если я правильно понял вопрос,необходимо обеспечить,чтобы plugin проверял специфическую сигнатуру архива.Иначе его работа так и останется ограниченной зарегистрированными расширениями.В случае Multiarca сигнатура прописывается в строке ID=... |
|
Back to top |
|
|
vserd
Joined: 26 Apr 2005 Posts: 118
|
(Separately) Posted: Mon Apr 03, 2006 12:41 Post subject: |
|
|
Lamer
Quote: | необходимо обеспечить,чтобы plugin проверял специфическую сигнатуру архива.Иначе его работа так и останется ограниченной зарегистрированными расширениями. |
Не совсем. Проерка сигнатуры это внутренняя проверка самого плугина. Но плугин должен сказать ТС может он обработать этот файл или нет. Это делает CanYouHandleThisFile.
Но проблема с CanYouHandleThisFile в том, что если расширение зарегистрировано на конкретный плугин, тогда ТС напрямую передает ему управление, без вызова CanYouHandleThisFile.
А вот если нет регистрации на это расширение, тогда тотал перебирает плугины с помощью CanYouHandleThisFile.
Dmitryk1
Попробуй поставить точки оснатова не только на Load, но и на CanYouHandleThisFile, OpenArchive. |
|
Back to top |
|
|
Dmitryk1
Joined: 27 Mar 2006 Posts: 12
|
(Separately) Posted: Tue Apr 04, 2006 09:43 Post subject: |
|
|
vserd wrote: | CanYouHandleThisFile обрабатываешь? |
Нет
Ща поищу, что и где такое |
|
Back to top |
|
|
Dmitryk1
Joined: 27 Mar 2006 Posts: 12
|
(Separately) Posted: Tue Apr 04, 2006 14:16 Post subject: |
|
|
Dmitryk1 wrote: | vserd wrote: | CanYouHandleThisFile обрабатываешь? |
Нет
Ща поищу, что и где такое |
не работает может примерчик есть у кого-то?
и цифру в ини какую ставить? на плагин... |
|
Back to top |
|
|
vserd
Joined: 26 Apr 2005 Posts: 118
|
(Separately) Posted: Tue Apr 04, 2006 19:23 Post subject: |
|
|
Dmitryk1
Значит чего-то не так делаешь. MultiArc то именно так говорит TC может он обработать файл или нет.
Смотри исходники MA. |
|
Back to top |
|
|
Dmitryk1
Joined: 27 Mar 2006 Posts: 12
|
(Separately) Posted: Wed Apr 05, 2006 13:52 Post subject: |
|
|
vserd wrote: | Dmitryk1
Значит чего-то не так делаешь. MultiArc то именно так говорит TC может он обработать файл или нет.
Смотри исходники MA. |
Спасибо за советы. Скачал исходники мультиарка. действительно там заработало. Причём у меня так и не работает Ищу грабли. надеюсь не детские Ещё раз спасибо за советы! |
|
Back to top |
|
|
Dmitryk1
Joined: 27 Mar 2006 Posts: 12
|
(Separately) Posted: Thu May 18, 2006 08:19 Post subject: |
|
|
Действительно, детские грабли были ... слабо разбираюсь в С++.
И несколько ещё вопросов возникло, исключительно по с++ Применительно к коммандеру.
Отсюда просьба, если у кого-то есть время и желание отвечать иногда на мои, зачастую не сложные вопросы на эту тему, напишите в аську 122370935. Буду очень признателен. |
|
Back to top |
|
|
|