Страница 21 из 243

Добавлено: Пт сен 09, 2011 10:03
MVV
ИМХО, проще найти микро утилитку, которая будет запускать программу только если она ещё не запущена, чем встраивать подобный функционал везде, где он нужен:)

Добавлено: Пт сен 09, 2011 11:05
HA3APET
MVV
Есть на примете такая утилита?
А то батником не очень красиво.

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

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

И ещё вопрос.
Мне для работы одной из программ нужно прописать через команду IniWrite путь к установленному Тоталу параметр C:\\Soft\\TC
Переменная %COMMANDER_PATH% выдаёт значение C:\Soft\TC
Как можно получить значение пути к папке с Тоталом именно с двойными слешами?

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

Добавлено: Пт сен 09, 2011 16:30
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

Добавлено: Пт сен 09, 2011 18:57
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
Советую попробовать. Я как-то пытался использовать, но не помню, каким был результат.

Добавлено: Сб сен 10, 2011 02:51
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"'

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

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

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

Как вариант, создай в тотале юзер-команду, вызывающую нужное действие, и запускай её из Autorun командой CommandExec.

Добавлено: Сб сен 10, 2011 14:58
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.
Возможно, один параметр только отрабатывает, а остальные игнорируются?

Добавлено: Сб сен 10, 2011 15:29
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"'

Добавлено: Сб сен 10, 2011 17:22
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
Оба см. выше на нужный ключ.

Добавлено: Вс сен 11, 2011 12:24
ApceH
Обнаружил одну проблемку с Autorun.
Выполняю:

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

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

Добавлено: Вс сен 11, 2011 15:27
MVV
А тут ничего не сделаешь. Плагин работает параллельно с тоталом, и тотал ни коим образом плагину не сообщает, что он переключает фокус на правую панель. Единственное что тут можно сделать - дождаться, пока правая панель станет активной, и тогда проводить махинации. По идее, на TCFS2 можно набросать подобный скриптик. Вопрос лишь в том, насколько это будет заметно со стороны.

Добавлено: Вс сен 11, 2011 15:44
ApceH
Верно, выхода два: ActiveRight=0 или

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

Sleep 50 #или больше
CommandExec /CD "\\\Virtual Panel"
...
Да только зыбко это. Жаль.

Добавлено: Вс сен 11, 2011 22:00
HA3APET
ApceH
Я в своей сборке переделал на

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

CommandExec /CD:T "\\\Virtual Panel"
Sleep 40
SendCommand cm_CloseCurrentTab