Autorun

Обсуждение только плагинов и утилит для Total Commander.

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

Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

ИМХО, проще найти микро утилитку, которая будет запускать программу только если она ещё не запущена, чем встраивать подобный функционал везде, где он нужен:)
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

MVV
Есть на примете такая утилита?
А то батником не очень красиво.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Просьба включить в следующую версию переменную, определяющую язык запущенной ОС.
Примеры использования - запуск самого Тотала и приложений с необходимым языком в зависимости от языка ОС.

В плагине имеется команда
IniWrite [/EV] <имя ini> <секция> <ключ> [<текст>]
А как её использовать если в ini-файле нет секций? (или скажем, нужно прописать определенные параметры в другой тип файлов (cfg, txt ...)

И ещё вопрос.
Мне для работы одной из программ нужно прописать через команду IniWrite путь к установленному Тоталу параметр C:\\Soft\\TC
Переменная %COMMANDER_PATH% выдаёт значение C:\Soft\TC
Как можно получить значение пути к папке с Тоталом именно с двойными слешами?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

HA3APET писал(а):Очень бы хотелось ключик для ShellExec, что бы если программа уже запущена (висит в процессах), она не запускалась.
Поддерживаю. Было бы здорово, если бы не запускалась не только программа, но и скрипты этой программы. В качестве идентификации можно использовать полные пути, а не PID.
LonerD писал(а):А как её использовать если в ini-файле нет секций?
Значит, секция создаётся, если её нет.
LonerD писал(а):или скажем, нужно прописать определенные параметры в другой тип файлов
Это не предусмотрено, в мануале речь идёт только об ini.
LonerD писал(а):Мне для работы одной из программ
Программа, пишущая в реестр? Может, альтернативу найти с одинарными слешами?
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Flasher писал(а):
LonerD писал(а):А как её использовать если в ini-файле нет секций?
Значит, секция создаётся, если её нет.
LonerD писал(а):или скажем, нужно прописать определенные параметры в другой тип файлов
Это не предусмотрено, в мануале речь идёт только об ini.
В том то и дело, что не нужно, чтобы секция создавалась. У некоторых программ (редко, но встречается) ini-файл настроек - это обычный текстовый файл с расширением ini (пример - Кнопка для Тотала для работы с 7-Zip SFX версии 0.12).
Раз сейчас нет такой возможности - то просьба на будущее ввести возможность обработки текстовых файлов (ini,cfg), в которых нет разделения на секции.
Flasher писал(а):Программа, пишущая в реестр? Может, альтернативу найти с одинарными слешами?
Альтернативу то найти можно (равно как и альтернативные методы решения, но менее красивые).
В данном случае - программа Locate32, в которой портабельность реализована через внесение значений в реестр при запуске программы и последующем их удалении.
Плюс иногда нужно внести в реестр конкретные значения пути (относительно папки с установленным Тоталом) для запуска непортабельных программ в режиме портабельности с помощью kIT Portable Launcher.

Поддерживается ли в операторах сравнения конъюнкция и дизъюнкция?
If <выражение 1> <оператор> <выражение 2> or <выражение 3> <оператор> <выражение 4> Then
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD писал(а):пример - Кнопка для Тотала для работы с 7-Zip SFX версии 0.12
И что, требуется для этой кнопки при каждом запуске менять настройки? :?
LonerD писал(а):Раз сейчас нет такой возможности - то просьба на будущее ввести возможность обработки текстовых файлов (ini,cfg), в которых нет разделения на секции.
Ты бы хотя бы к автору обращался с хотелками, пропустит ведь. :wink:
LonerD писал(а):В данном случае - программа Locate32, в которой портабельность реализована через внесение значений в реестр при запуске программы и последующем их удалении.
Вроде портабл-версий они не распространяют. Пробежался по параметрам комстроки и не понял, что там работает с реестром.
LonerD писал(а):Плюс иногда нужно внести в реестр конкретные значения пути (относительно папки с установленным Тоталом) для запуска непортабельных программ в режиме портабельности с помощью kIT Portable Launcher.
kIT PL не поддерживает однослэшевые пути? Для автора реализовать - расплюнуть. Стоит к нему обратиться.
LonerD писал(а):Поддерживается ли в операторах сравнения конъюнкция и дизъюнкция?

If <выражение 1> <оператор> <выражение 2> or <выражение 3> <оператор> <выражение 4> Then
Советую попробовать. Я как-то пытался использовать, но не помню, каким был результат.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Оператор or не работает.
Некритично, конечно, просто с его помощью некоторые пункты в Autorun.cfg можно было сократить.
Пожелание к функционалу - добавить or и and.

Прошу помощи.
Как правильно прописать в Autorun.cfg выполнение команды экспорта ветки реестра в файл.
Под командной строкой команда выглядит и работает так:
cmd /c reg export "HKEY_CURRENT_USER\Total Commander" "%commander_path%\Total.reg"

В Autorun должно быть примерно так, но как-то не так, где-то ошибка:
ShellExec "cmd.exe" '"/c reg export "HKEY_CURRENT_USER\Total Commander" "%commander_path%\Total.reg"'
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Если добавлять and и or, то обязательно заключать выражения в скобки: If (условие1) and (условие2) or (условие3) Then bla-bla-bla.

LonerD, для добавления в реестр можно просто использовать команду regedit.exe /s "путь к рег-файлу". Плюс в том, что это не консольная программа, т.е. черное окно мелькать не будет. Кстати, чтобы черные окна не так надоедали, можно ставить параметр /SW_MINIMIZE при вызове ShellExec - тогда будет мелькать лишь кнопка на панели задач.

В твоей команде я вижу лишнюю (непарную) кавычку. Возможно, дело в ней. Перед /c попробуй убрать кавычку.

Как вариант, создай в тотале юзер-команду, вызывающую нужное действие, и запускай её из Autorun командой CommandExec.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

MVV
Спасибо.
В данном случае надо не в реестр внести данные, а из реестра в файл.
С кавычками сколько не игрался (ставил, убирал) - ничего не получается, пробовал упростить задачу до такого вида:

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

ShellExec "cmd.exe" "/c reg export HKEY_CURRENT_USER\Total C:\Total.reg"
Не работает.
Консоли передаётся параметр /с, а остальные параметры не отрабатывают.
Пробовал ещё такой вариант (без закрытия окна консоли) - то же самое, параметры не отрабатывают, открывается окошко консоли в папке с Тоталом, и всё.

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

ShellExec "cmd.exe" "reg export HKEY_CURRENT_USER\Total C:\Total.reg"
Создать юзер-команду - и правда хорошее решение.
Хотя я уже сделал немного по другому - прописал проблемную команду в cmd-файл и вызывал этот файл через Autorun.cfg (чтобы не мелькали окошки использовать hidcon).

Но всё таки не понятно почему не отрабатывает ShellExec.
Возможно, один параметр только отрабатывает, а остальные игнорируются?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Можт, тут тоже дело в идиотской обработке параметров в cmd.exe? Попробуй написать так:

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

ShellExec /SW_MINIMIZE "cmd.exe" '/c "reg export HKEY_CURRENT_USER\Total C:\Total.reg"'
И так, если предыдущее будет работать:

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

ShellExec /SW_MINIMIZE "cmd.exe" '/c "reg export "HKEY_CURRENT_USER\Total" "%commander_path%\Total.reg""'
И вообще, зачем тебе вызывать cmd.exe, если можно сразу вызвать reg.exe?

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

ShellExec /SW_MINIMIZE /EV "reg.exe" 'export "HKEY_CURRENT_USER\Total" "%commander_path%\Total.reg"'
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD
Я не понял, разве мой вчерашний вариант из лички не сработал?:

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

ShellExec /EV /SW_HIDE '%ComSpec%' '/c REG EXPORT HKCU\Total "%COMMANDER_PATH%\Total.reg" /y'
без посредника:

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

ShellExec /EV /SW_HIDE REG 'EXPORT HKCU\Total "%COMMANDER_PATH%\Total.reg" /y'
MVV писал(а):чтобы черные окна не так надоедали, можно ставить параметр /SW_MINIMIZE при вызове ShellExec - тогда будет мелькать лишь кнопка на панели задач
LonerD писал(а):чтобы не мелькали окошки использовать hidcon
Оба см. выше на нужный ключ.
Аватара пользователя
ApceH
Сообщения: 316
Зарегистрирован: Пт апр 08, 2011 17:58
Откуда: Димитровград

Сообщение ApceH »

Обнаружил одну проблемку с Autorun.
Выполняю:

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

CommandExec /CD "\\\Virtual Panel"
Sleep 50
SendCommand cm_GotoPreviousDir
Всё бы хорошо, но если в wincmd.ini стоит ActiveRight=1, то получится так: в левой панели произойдёт переход на \\\Virtual Panel, но назад перехода не случится, как я понимаю, потому что тем временем активной стала правая панель.
На Sleep не обращайте внимания. Без него то же самое. А при запуске в нагруженной системе бывает не успевает перейти в \\\Virtual Panel.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А тут ничего не сделаешь. Плагин работает параллельно с тоталом, и тотал ни коим образом плагину не сообщает, что он переключает фокус на правую панель. Единственное что тут можно сделать - дождаться, пока правая панель станет активной, и тогда проводить махинации. По идее, на TCFS2 можно набросать подобный скриптик. Вопрос лишь в том, насколько это будет заметно со стороны.
Аватара пользователя
ApceH
Сообщения: 316
Зарегистрирован: Пт апр 08, 2011 17:58
Откуда: Димитровград

Сообщение ApceH »

Верно, выхода два: ActiveRight=0 или

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

Sleep 50 #или больше
CommandExec /CD "\\\Virtual Panel"
...
Да только зыбко это. Жаль.
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

ApceH
Я в своей сборке переделал на

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

CommandExec /CD:T "\\\Virtual Panel"
Sleep 40
SendCommand cm_CloseCurrentTab
Ответить