Autorun

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

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

Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

спасибо, теперь всё работает)
вот бы еще проверку ServicePack'а прикрутили :roll:
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

есть еще одна вещь, которую хотелось бы видеть в плагине:
это переменная с PID текущего процесса TotalCmd.exe.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

KopBuH писал(а):вот бы еще проверку ServicePack'а прикрутили
Специализированной функции точно не будет. Скорее что-нибудь универсальное для чтения реестра.
KopBuH писал(а):есть еще одна вещь, которую хотелось бы видеть в плагине:
это переменная с PID текущего процесса TotalCmd.exe.
Можно, по аналогии с AUTORUN_TCHANDLE.
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

Loopback писал(а): Можно, по аналогии с AUTORUN_TCHANDLE.
ура :) Ждем следующей бетки.
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

заметил еще такой глюк:

autorun.cfg
# Проверка архитектуры ОС
If %AUTORUN_OSARCH% == 64 Then
SetEnv COMMANDER_OSARCH x64
ElseIf %AUTORUN_OSARCH% == 32 Then
SetEnv COMMANDER_OSARCH x86
EndIf

на Win8 x64 Pro все равно определяет битность ОС как x86
ну, и конечно хорошо бы добавить определение Win8
%AUTORUN_OSVERSION% == WIN_8
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

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

И вообще, не надо плодить псевдопеременные. К псевдопеременным нужно прибегать только в случае, когда они возвращают различное значение в зависимости от определенных условий (например, случайное число - каждый раз новое значение). Если же значение переменной неизменно (версия винды, например - она явно не изменится, пока тотал запущен), спокойно можно добавить её как обычную переменную окружения, головной боли в разы меньше.

А насчёт AUTORUN_OSVERSION - надо сделать, чтобы переменная возвращала числовое значение версии, если не может его опознать (например, 6.2W для рабочей станции, или 6.2S для серверной). Тогда этим можно будет пользоваться на неизвестных версиях винды (глядишь, через годик Windows 9 выпустят... сейчас мода пошла на накрутку номеров версий).
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

MVV писал(а):Думаю, пора уже выносить эту кучу псевдопеременных в подплагин, чтобы не надо было каждый раз обновлять сам плагин, чтобы добавить новую или исправить имеющиеся... Там их, кстати, можно даже сделать обычными переменными окружения, с которыми потом можно будет работать далее.
Все эти переменные, за исключением, может, версии винды - одна-две строчки кода, и эти данные так или иначе используются плагином. Нет смысла делать еще дополнительные плагины для этого. Модульность, конечно, хорошо, но до разумных пределов.

Если будет нужно организовать действительно что-то сложное, а главное - малоиспользуемое, то можно и задуматься о плагине.
MVV писал(а):И вообще, не надо плодить псевдопеременные. К псевдопеременным нужно прибегать только в случае, когда они возвращают различное значение в зависимости от определенных условий (например, случайное число - каждый раз новое значение). Если же значение переменной неизменно (версия винды, например - она явно не изменится, пока тотал запущен), спокойно можно добавить её как обычную переменную окружения, головной боли в разы меньше.
Если бы плагин работал напрямую с переменными окружения (как батник), это имело бы смысл. Но он оперирует переменными.

И это даже не псевдопеременные, а константы. И обрабатываются они совершенно одинаково. Впрочем, если нужно будет реализовать именно псевдопеременную, обработка вполне может быть реализована тем же механизмом.
MVV писал(а):А насчёт AUTORUN_OSVERSION - надо сделать, чтобы переменная возвращала числовое значение версии, если не может его опознать (например, 6.2W для рабочей станции, или 6.2S для серверной). Тогда этим можно будет пользоваться на неизвестных версиях винды (глядишь, через годик Windows 9 выпустят... сейчас мода пошла на накрутку номеров версий).
Вот с этим согласен. Вместо UNKNOWN вполне можно выводить числовое значение.
sEXEcutor
Сообщения: 24
Зарегистрирован: Вс июл 09, 2006 04:21

Сообщение sEXEcutor »

В некоторых внутренних ассоциациях я пользуюсь командой "%COMMANDER_EXE%" /S=L "%1" для открытия файла в Листере. Как оказалось, ShellExec срабатывает каждый раз, когда Листер вызывается таким образом. Можно ли добавить проверку, чтобы не вызывать ShellExec повторно во время одной сессии TC?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Откуда же плагин может знать, с какой целью запущен тотал?

Создай второй wincmd.ini без плагинов (разве что листерные оставь) и запускай второй экземпляр тотала с этим INI с помощью ключа /i=путь_к_ini. Чем меньше лишнего будет в этом конфиге, тем быстрее будет открываться этот отдельный листер.

Можешь даже для секции ListerPlugins в альтернативном конфиге редирект сделать на основной wincmd.ini, тогда плагины всегда будут одни и те же. Думаю, такого конфига вполне хватит (поправь путь к основному конфигу, если у тебя другой):

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

[Configuration]
AlternateUserIni=%COMMANDER_PATH%\wincmd.ini
[ListerPlugins]
RedirectSection=%COMMANDER_PATH%\wincmd.ini
sEXEcutor
Сообщения: 24
Зарегистрирован: Вс июл 09, 2006 04:21

Сообщение sEXEcutor »

MVV писал(а):Откуда же плагин может знать, с какой целью запущен тотал?
Разве из плагина нельзя видеть параметры, с которыми запущен TC?

Так или иначе, RedirectSection хороший вариант, спасибо.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sEXEcutor
Можно также открывать через программу Lister.exe, а если не отдельным процессом, то так.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Пятая бета.

Скачать

В этой версии поменялся API плагинов. Теперь можно добавлять переменные и функции, возвращающие результат. Наверняка, он еще будет меняться. Также добавил исходник тестового плагина.

Сделана эта версия была довольно давно, и долгое время проработала у меня без проблем, но все же вполне могут быть новые косяки.

KopBuH
Определение восьмерки добавил. Но проверить архитектуру пока не могу за отсутствием установленной восьмерки.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

KopBuH писал(а):заметил еще такой глюк:
Поставил восьмерку (x64 Pro) в виртуалку. Опуская лирику (по большей части матерную) касаемо нового интерфейса, могу сказать, что косяк не наблюдаю, все определяется верно.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Шестая бета.

Скачать

Что нового:

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

+ возможность использования полноценных условий сравнения
+ возможность использования специальных функций в сравнении
+ плагин Process (работа с процессами)
* изменения в языковом файле
Второй и третий пункты подразумевают добавление востребованного функционала по определению запущенности процесса.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Седьмая бета.

Скачать

Изменения:

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

+ возможность выполнения действий при закрытии TC
+ добавлена функция ProcessTerminate в плагин Process
+ файл конфигурации может быть ANSI или UTF-16(LE).
- исправлена проблема с ShellExec в определенных условиях
Ответить