Страница 1 из 1

Как сделать вызов своей программы из TC

Добавлено: Ср авг 27, 2008 22:45
Shasoft
Сначало предистория :)
Я автор читалки для сотового Shasoft eBook.
Прикрутил к программе плагины wcx от TC, чтобы можно было из архивов вытаскивать файлы и делать и з них книги.
Потоп прикрутил к программе поиск запущенного TC, чтобы пользователю не приходилось указывать путь к плагинам.
И только потом в голову пришла простая мысль: если на компьютере установлен TC, то пусть он и работает с файлами, а вызов моей программы можно просто прикрутить как плагин к TC.

А теперь собственно вопрос: как бы это поудобнее сделать? Написать плагин (какого типа? а то их тут много разных) или может можно как-то самому добавить вызов в панель инструментов TC?
Хотелось бы при установке своей программы делать поиск TC и если он запущен, то автоматически встаивать в него вызов своей проги.

Подскажите, как это лучше всего сделать? А то сам я TC до этих пор не пользовался.

Заранее спасибо.

Добавлено: Ср авг 27, 2008 23:30
D1P
Не очень понятна идея. Что делает твоя программа? Конвертирует текст в формат для мобилы? Тогда это WCX, можно извратиться и с WLX/WFX, но не с WDX. А если программа работает с параметрами командной строки, то переделывать её в плагин вообще не надо, можно просто сделать кнопку для панели инструментов.

Объясни цель и исходные данные подробнее.

Добавлено: Чт авг 28, 2008 09:26
Shasoft
Исходные данные - файл.
Цель - передать имя файла моей программе. Это можно сделать через командную строку, просто указав имя файла с путем в качестве параметра.
А можно через вызов метода ActiveX моего компонента, передав методу указанный файл.

Добавлено: Чт авг 28, 2008 12:25
Maximus
Удобно было бы рботать в случае, если твоя программа была бы выполнена в виде WCX-плагина.
Конвертирование лучше реализовать как упаковку.
Посмотри эту статью.

А заливает файлы на телефон пользователь самостоятельно другими средствами?

Добавлено: Чт авг 28, 2008 13:13
D1P
Shasoft писал(а):Цель - передать имя файла моей программе. Это можно сделать через командную строку, просто указав имя файла с путем в качестве параметра.
Никакие плагины тебе не нужны. Вернее, можно реализовать и через плагины, но есть способ проще: сделать кнопку. Скопируй следующий код в буфер обмена, потом нажми ПКМ на свободном месте панели инструментов, в появившемся меню выбери "Вставить".
TOTALCMD#BAR#DATA
c:\some_path\you_program.exe
%p%n
c:\some_path\you_program.exe
Book converter
c:\some_path\

-1
Естественно, пути до твоей проги должны быть правильные.
По нажатию этой кнопки, TC будет вызывать прогу, передавая ей в качестве параметра путь и имя файла под курсором. Если потребуется обработать сразу несколько файлов, то их имена можно передать параметрами %L и %S (подробнее о параметрах можно прочесть в справке TC).

Добавлено: Чт авг 28, 2008 13:40
Shasoft
А можно ли это сделать програмно? Хотелось бы встроиться в TC при инсталляции своей программы, чтобы пользователя не напрягать.

Добавлено: Чт авг 28, 2008 14:21
Maximus
Можно отредактировать файл DEFAULT.BAR.
Так, например, делает TC Plugins Manager. Правда после этого нужна будет перезагрузка Total Commander.
Или еще можно создать отдельную панель (*.BAR) для твоей программы, а ссылку на нее поместить в основную панель (DEFAULT.BAR).

Добавлено: Чт авг 28, 2008 16:10
Shasoft
Но, как я понимаю при помещении ссылки в основную панель всё равно надо перегружать?

Вобще это не проблема. Я всегда могу инфорировать об этом пользователя, что надо TC перегрузить. Пусть он сам решает.

Главная проблема, как я понимаю, найти, где лежит DEFAULT.BAR

Добавлено: Чт авг 28, 2008 16:24
Maximus
Shasoft писал(а):Главная проблема, как я понимаю, найти, где лежит DEFAULT.BAR
Это да. DEFAULT.BAR находится в папке Total Commander.
Ищешь окно с именем класса TTOTAL_CMD. А там уже как-то с контекстом процесса надо работать.

Или поросить пользователя самостоятельно указать путь к Total Commander.

Добавлено: Чт авг 28, 2008 16:34
Shasoft
Это если запущен TC. А вот если не запущен, то ничего и не найдется.

Хотя, инсталлятор моей программы наверняка запустят из TC, если им пользуются, так что тогда всё нормально.

Добавлено: Чт авг 28, 2008 17:37
Shasoft
В конце пришел к таким выводам: сделать интеграцию в Windows в пп. контекстного меню "Отправить".
Так как TC его тоже использует, то всё будет просто и доступно.

Добавлено: Чт авг 28, 2008 17:39
Worros
Shasoft писал(а):В конце пришел к таким выводам: сделать интеграцию в Windows в пп. контекстного меню "Отправить".
Так как TC его тоже использует, то всё будет просто и доступно.
Соломоново решение. Саппорт \о/

Добавлено: Ср июн 03, 2009 13:50
PalychXX
Мне тоже хотелось бы реализовать запуск чужой программы через архиваторный (или еще какой) плагин для TC. Прога производит изменение переданного в параметрах командной строки файла. Почему не устраивают описанные выше решения - проге можно передать только 1 имя файла, а мне нужно, чтобы плагин поочередно вызывал эту программу для всех выделенных в Коммандере файлов. Если кто-нить сможет подсказать, как это сделать (желательно, на Delphi), буду очень благодарен.

Добавлено: Ср июн 03, 2009 14:21
Tol!k
PalychXX
I. .cmd на кнопке с параметром %L
II. Batya's скрипт
III. multiarc.wcx
Пользуйся поиском, на форуме десятки примеров.

Добавлено: Ср июн 03, 2009 14:59
Lev
IV. executor.wcx
V. MultiLister (former PDF Filter)
VI. TCConv (Total Converter)
+ всякие makebat, wdxinfopacker и т.д. и т.п.

кроме параметра %L в вызовах кнопок обратите внимание ещё и на %S, поддерживающийся начиная с ТС7