Можно ли передать в параметры команду из usercmd.ini?

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
Strek
Сообщения: 205
Зарегистрирован: Вс окт 17, 2010 23:10
Контактная информация:

Можно ли передать в параметры команду из usercmd.ini?

Сообщение Strek »

Например у меня есть такая команда em_cdroot, можно ли её передать в парметры, по типу Эtotalcmd.exe em_cdroot"
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Strek
Нет, такого синтаксиса не существует. Если "по типу", то выполнить какие-то команды при запуске TC можно, но это материал не для "Общих вопросов". См., например, русские справки плагинов Autorun (с помощью CommandExec) или TWinKey (через страницу настроек "Разное").
И очень советую то, о чём уже много раз говорилось: надо давать в сообщении ВСЁ описание проблемы, не разбивая его между постом и заголовком.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Strek
Сообщения: 205
Зарегистрирован: Вс окт 17, 2010 23:10
Контактная информация:

Сообщение Strek »

Avada писал(а): Autorun
Немного не то.
Задача какая - запуск TC извне, например ярлык на панели задач, при запуске которого будет выполняться пользовательская команда, но не всегда. То бишь чтобы было два ярлыка, один обычно, а один с пользовательской командой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Strek
Например, запускать TC двумя ярлыками с разным значением параметров /i= для wincmd.ini. В одном конфиге нужный плагин из числа упомянутых загружается, а в другом нет.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Strek
Сообщения: 205
Зарегистрирован: Вс окт 17, 2010 23:10
Контактная информация:

Сообщение Strek »

Avada писал(а):запускать TC двумя ярлыками с разным значением параметров /i= для wincmd.ini
Наверное эта секция?
ContentPlugins
ContentPlugins64
То бишь в первом разделе я удалил строку с полным путём к плагину и эти строки с нумерацией этого плагина (AutoRun).
8_detect=
8_date=1354673203
8_flags=0

В другой номер со значением этого плагина.
Во втором конфиге оставил.

Спасибо.

Но есть странность. Если запускаю копию с autorun, то в противоположной панели пропадает навигация
Изображение
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Strek
Не надо использовать такие варварские способы. Обычное отключение Autorun выполняется через диалог настройки этого типа плагинов (кнопка "Удалить" при курсоре на строке плагина) и не требует никакой ручной правки INI-файла. (А если при удалении строк вручную ещё и забыть перенумеровать вручную начальные номера у строк для следующих плагинов, будет особенно весело.) А в секцию [ContentPlugins64] вообще не следует никогда лезть руками, там полная автоматика.
А почему у вас при наличии Autorun где-то что-то пропадает, я, не видя ваших настроек, сказать не могу. Скрин ничего не поясняет.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Strek
Сообщения: 205
Зарегистрирован: Вс окт 17, 2010 23:10
Контактная информация:

Сообщение Strek »

Avada писал(а):Обычное отключение Autorun выполняется через диалог настройки этого типа плагинов (кнопка "Удалить" при курсоре на строке плагина)
Думал, что он из ТС удаляется, что означало бы, что уже и конфиг с autorun не работал бы. Но если так, то в переводе можно было бы исправить с "Удалить" на "Отключить".

Конфиги
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Strek
Avada предлрожил рабочий вариант, но вы намучитесь с конфигами, особенно если будите их в последствии менять, что неизбежно.

Думаю, без скрипта вам все-равно не обойтись, тем более что он не такой сложный в конкретном случае. Вот пример на Autohotkey v2
[cut]

Код: Выделить всё

Run "c:\Portable\T 11 03\TOTALCMD.EXE",,, &pid
WinWait "ahk_pid " pid
SendUserCommand("em_cdroot")

SendUserCommand(userCommand) {
    static EM := 19781, WM_COPYDATA := 0x4A
    ansiBuf := Buffer(StrPut(userCommand, 'CP0'))
    StrPut(userCommand, ansiBuf, 'CP0')
    COPYDATASTRUCT := Buffer(A_PtrSize * 3)
    NumPut('Ptr', EM, 'Ptr', ansiBuf.size, 'Ptr', ansiBuf.ptr, COPYDATASTRUCT)
    SendMessage WM_COPYDATA,, COPYDATASTRUCT,, 'ahk_class TTOTAL_CMD'
}
[/cut]
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Strek
Там и без перевода никакого "отключить" нет (указано "Remove"). По факту это не отключение (отключают, перенося информацию в другое место, например, в TC Plugins Manager, но там это названо запретом), а удаление всей информации о плагине из INI-файла (при сохранении, однако, в целости самой папки плагина). А на анализ ваших файлов у меня, к сожалению, нет сейчас времени. Может быть, ещё кто-то поможет.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Еще вариант сделать батник:

Код: Выделить всё

set emcdroot=1
start "" "c:\Portable\T 11 03\TOTALCMD.EXE"
Autorun.cfg

Код: Выделить всё

If %emcdroot% = 1 Then
   CommandExec em_cdroot
EndIf
Но тогда в окружении всегда должна быть emcdroot=0
Аватара пользователя
Strek
Сообщения: 205
Зарегистрирован: Вс окт 17, 2010 23:10
Контактная информация:

Сообщение Strek »

Orion9 писал(а):Avada предлрожил рабочий вариант, но вы намучитесь с конфигами, особенно если будите их в последствии менять, что неизбежно.
Как теперь поступить, чтобы не было неизбежностей?
Всё вернуть назад?
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Strek
Неизбежность в том, что какие-то настройки когда-то придётся менять, и это придётся, видимо, учитывать в обоих версиях wincmd.ini. Замечу, что я дал вам рабочее решение, но сам так делать не стал бы, поскольку во внешнем вызове TC разными ярлыками с автозапуском команды и без просто не нуждаюсь. (И зачем вам это вообще нужно, даже не пытаюсь понять.)
Бэкапы при таких процедурах следовало бы сохранять, естественно. Впрочем, там не настолько большая разница с прошлым состоянием. Если хотите "всё вернуть назад", то у вас, насколько понимаю, изначально были wincmd.ini с подключением Autorun и конфиг плагина без спецкоманды. Следовательно, к этому и надо вернуться. Старый инишник должен остаться для одного из ярлыков (но даже если нет, достаточно просто обратно включить плагин по обычной схеме установки: цветовую схему для его автозапуска вы, кажется, не удаляли). И, конечно, надо убрать из Autorun.cfg строку с вызовом этот пользовательской команды.
Альтернативные методики, предложенные не мной, не обсуждаю: как уже сказано, практического интереса к решению данной задачи у меня нет никакого.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Strek
По конфигам и тонким настройкам ТС лучше, чем Avada вряд ли кто ответит. Я же, в свою очередь, просто интересовался автоматизацией (в ТС и не только) последние месяцы, поэтому и ответил из того, что знаю.

Есть еще утилита AltRun, позволяющая переназначать переменные окружения при запуске. Автора этого довольно интересного лаунчера просили добавить возможноть передачи (запуска) команд ТС в параметрах, но он давно не отмечался в теме.
Аватара пользователя
Strek
Сообщения: 205
Зарегистрирован: Вс окт 17, 2010 23:10
Контактная информация:

Сообщение Strek »

Orion9 писал(а):AltRun
Вот эта?
Изображение
Avada писал(а):(И зачем вам это вообще нужно, даже не пытаюсь понять.)
Ну та самая мелочь, которая приятна.
Запуск уже с нужным открытием SFTP в нужном каталоге при необходимости.
Avada писал(а):Бэкапы при таких процедурах следовало бы сохранять,
Та регулярно делаю, просто на будущее знать, если что.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Вот эта?
Да, это она. Может быть полезна вместо батника, чтобы передать переменную окружения в запускаемую программу. Батник ведь еще и скрыть придется как-то, иначе окно консоли будет мелькать, портить весь кайф.))
Ответить