Autorun

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

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

Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Рано радовался. :cry: При установленном и штатно работающем Autorun (конфигурация по умолчанию) применение команды cm_UnloadPlugins молча закрывает Тотал. Для меня это делает использование плагина при всех его достоинствах невозможным. Вынужден вернуться на MoveButton, отказавшись (надеюсь, временно) от прочего функционала.
(Собственно, это происходило и в самой первой версии Autorun, но тогда я по запарке не уделил этому на форуме должного внимания, а просто тихо откатился на прежний плагин.)
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Avada писал(а):Рано радовался. :cry: При установленном и штатно работающем Autorun (конфигурация по умолчанию) применение команды cm_UnloadPlugins молча закрывает Тотал.
Подтверждаю. Но только при загруженном Autorun_MoveButton.dll, причем, не просто загруженном, а активном. Если закомментировать строчку MoveOptionsButton MOVE_LEGACY в конфиге, вылет уже не происходит.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

MVV
Благодарю за уточнение, это позволяет в качестве временного решения хотя бы распределить нужный функционал между двумя плагинами.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Исправил.

Использовал альтернативный RTL, и похоже в нем баг. В итоге Autorun_MoveButton просто не получал сообщение DLL_PROCESS_DETACH и не уничтожал поток.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Подтверждаю, что работает без вылетов. Win7x64. 8)

Я в своей HideMenu вообще CRT не использовал, чистый API, потому ни глюков, ни избыточного кода. :)
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Тоже подтверждаю, что вылета больше нет. WinXP SP3.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

MVV писал(а):Я в своей HideMenu вообще CRT не использовал, чистый API, потому ни глюков, ни избыточного кода.
К сожалению, в Delphi совсем отключить использование RTL дело не очень тривиальное, поскольку в этом случае теряется возможность работать с некоторыми стандартными заголовочными файлами, в том числе Windows, где прописаны прототипы функций WinAPI. А так MoveButton тоже на чистом WinAPI.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

По поводу добавления переменных.
Запускаю Тотал с подключённым Autorun. Смотрю переменные (cmd /k set или FS-плагин Environment Variables). В хвост значений переменной Path действительно добавилось C:\Totalcmd.
Перезапускаю TC (выполняется кнопкой, я использую ReloadTC). Снова смотрю список переменных. Теперь там в конце уже две штуки — C:\Totalcmd;C:\Totalcmd. Если повторять перезапуск, то до настоящего закрытия TC этот хвост будет наращиваться. То же самое происходит и после применения команды cm_UnloadPlugins.
В принципе, работать это не мешает, но я не уверен, что такое поведение правильно.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Кстати, да, мысль верная. Но тут надо подумать, что можно сделать. Ведь плагин должен как-то определить, что его черное дело уже выполнено:) откуда он знает, что его запускают из окружения, где переменные уже обновлены. И откуда он знает, не изменились ли значения переменных после того как он их изменял... Тут палка о двух концах... :!:
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Avada
Да, переменные же наследуются... Из тотала вызвали ReloadTC, из него опять тотал - а переменная осталась та же, и авторан опять добавляет строку. С выгрузкой плагинов тем более понятно.

Это, конечно, не очень хорошо. Но в принципе эта проблема касается только переменных окружения. Пожалуй, стоит изменить поведение по-умолчанию при параметре /A, чтобы текст не добавлялся, если такой уже есть в конце переменной. А если кому вдруг нужна возможность дублирования - ввести новый параметр, разрешающий дублирование. Хотя тоже не айс, конечно, если переменная будет дополнительно изменена позже.

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

Сообщение MVV »

Про маркер и я думал, но опять же, как узнать, надо ли дописывать переменную - а вдруг надо еще раз.

Наверное, самая удачная мысль - ввести параметр, разрешающий добавление к переменной, если этот текст в ней уже есть. Так, если надо дописывать - юзер укажет параметр.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

MVV писал(а):Наверное, самая удачная мысль - ввести параметр, разрешающий добавление к переменной, если этот текст в ней уже есть. Так, если надо дописывать - юзер укажет параметр.
Вот так и сделаю, раз проблема не решается однозначно - пусть будет выбор. В конце-концов, главное чтобы это было документировано.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Обновил, и добавил параметр /AD, разрешающий дублирование.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

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

Сообщение MVV »

Ага, работает. :)
Ответить