Autorun

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

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

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

Сообщение Orion9 »

AkulaBig писал(а):Удивительно, но все работает хорошо
А если поставить MsgBox за подключенным модулем, сколько секунд потребуется, чтобы он появился на экране?
AkulaBig писал(а):Я такое не писал :)
Бывает.
AkulaBig писал(а):Почитал хэлп. Получается это ошибка в Autorun
Нет никакой ошибки, плагин Environment Variables хорошо показывает все доступные типы переменных:

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

Current process (Total Commander)
Current user
System
У каждого типа своя область видимости. Все-равно что Local и Global в Autorun. Процесс создает свою копию %Path% и добавляет к ней пути через ключ /A. Если не использовать ключ /A, переменная, естественно, затрется. Однако пострадает от этого только сам процесс и, возможно, другие процессы, запускаемые из него.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):Нет никакой ошибк
Вы внимательно прочитайте мои посты, а лучше сами проверьте.
Смысл в том, что имеет значение, в каком месте объявлять переменную, присоединяющую значение к существующей переменной. То-есть с параметром /A. Если ее объявлять до Pragma Include, она НЕ СОЗДАЕТСЯ. Вот в чем соль.
Про остальное после проверки отпишусь.
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

AkulaBig
Влезу в разговор, если правильно понял.
У меня мои переменные в начале конфига перед Pragma объявлены и работают.
TC 11.58 combo, Windows 11 x64
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

jentoso
Переменные с параметром /A? Без параметра /A и у меня переменные создаются в любом месте. А вот с параметром /A только после Pragma Include. Выше скрины с этим. Проверил на сборке Orion9, тоже самое. То-есть это не у меня косяк.
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

AkulaBig

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

SetEnv /A TCIMG "%COMMANDER_PATH%\plugins\Tools\TCIMG\TCIMG.exe"
SetEnv /A TCFS2 "%COMMANDER_PATH%\plugins\WDX\Autorun\Plugins\TCFS2\TCFS2.exe"
SetEnv /A IRFAN "%COMMANDER_PATH%\Utils\IrfanView\i_view32.exe"
SetEnv /A PATH ;%COMMANDER_PATH%
SetEnv /A OIT_DATA_PATH "%COMMANDER_PATH%\TempTC"
В итоге путь к TC отображается в PATH.
Изображение
А в конфиге переменные перед Pragma Include
Изображение
TC 11.58 combo, Windows 11 x64
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Вы внимательно прочитайте мои посты, а лучше сами проверьте.
Какие посты? Все, на что я ответил, было в одном вашем сообщении.

jentoso
Спасибо за тест. У себя этой проблемы тоже не вижу. Поставил в самое начало

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

SetEnv /A PATH ";%COMMANDER_PATH%\Utilites\Sysinternals;%COMMANDER_PATH%\Scripts\Ahk"
Все работает исправно.

Более того. Похоже, Loopback исправил проблему с приростанием одинаковых путей в переменной %Path%, которая раньше была у ключа /A. А ведь раньше приходилось прыгать с бубном, чтобы ее решить, типа:

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

Global Envrs = GetState("envvars")

If Not StrPos(Envrs, "COMMANDER_HANDLE") > 0 Then
   SetEnv /A PATH ";%COMMANDER_PATH%\Utilites\Sysinternals;%COMMANDER_PATH%\Scripts\Ahk"
Endif

SetEnv COMMANDER_HANDLE %AUTORUN_TCHANDLE%

Но сейчас и без этого все работает нормально.
AkulaBig писал(а):Проверил на сборке Orion9, тоже самое. То-есть это не у меня косяк.
Если вы запускали сборку из своего ТС, это не пойдет. Нужно запускать из проводника. Environment Variables не обязательно ставить, можно просто в командной строке набрать set и скопировать текст в окно редактора. Ну и дополнительно, в меню кнопки Autorun есть пункт "Переменные окружения".
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

jentoso
Orion9
Интересно. Я какую-то сборку Autorun что ли пропустил?
Изображение
У вас такой номер сборки?
Orion9 писал(а):Если вы запускали сборку из своего ТС, это не пойдет.
Да, из-под своей.
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

AkulaBig
Версия такая же 2.2.21.3
Autorun_ModifyDialogs.dll 1.0.5.0
Autorun_Process.dll 1.0.6.0
Autorun_RegExp.dll 0.9.1.0
Autorun_Runtime.dll 0.9.0.0
Autorun_Sysinfo.dll 1.0.8.0
Autorun_Tweaks.dll 1.2.6.0
TC 11.58 combo, Windows 11 x64
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

jentoso
Понял, что у нас с вами не совпадает. У вас приклеивается к переменной в среде Текущего пользователя. А у меня в Текущем пользователе не приклеивается:
Изображение
У меня приклеивается в текущем процессе:
Изображение
И не работает. Обратите внимание на заголовки окон.
Orion9
Запустил вашу сборку Autorun TC 11.56 из-под проводника. Нет, не работает. И по Set не показывает.
Сейчас проблема стала понятной. У вас с jentoso переменная приклеивается в Текущем пользователе, а у меня в текущем процессе. Тоже самое и в вашей сборке. Может есть идеи, почему так?
Подозрение на саму Винду. У вас у обоих Вин11?
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

AkulaBig
TC 11.56 combo, Windows 11 x64
TC 11.58 combo, Windows 11 x64
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9
Orion9 писал(а):А если поставить MsgBox за подключенным модулем, сколько секунд потребуется, чтобы он появился на экране?
Нормально работает. Не засекал, но очень похоже на 3 сек. До модуля быстро, но не мгновенно.
jentoso писал(а):TC 11.56 combo, Windows 11 x64
Тогда вообще не понятно. Хм, была-бы проблема в моей сборке, нет вопросов. Но и в сборке Orion9 у меня то-же самое :twisted:
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

AkulaBig
Сейчас запустил свой TC в песочнице. Все работает
Изображение
TC 11.58 combo, Windows 11 x64
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

jentoso
Я думаю концов не найдем.
Закомментил autorun.cfg полностью. Оставил только объявление переменных:

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

SetEnv /A PATH ;ValeryK
SetEnv /A PATH ;ValeryK1
Изображение
Заработало, но как-то странно. Как видите сначала присоединилась ValeryK1. А затем ValeryK,ValeryK1. Очень странно. Ну и все это в текущем процессе.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Кажется разобрался с проблемой. Виной оказалась запись

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

ShellExec /SW_HIDE /WAIT %COMSPEC% '/c setx OIT_DATA_PATH %COMMANDER_PATH%'
Работает в зависимости от того, выше или ниже ее находится переменная с параметром /A.
В сборке Orion9 не стал искать источник проблемы. Но до сих пор не работает.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Сейчас проблема стала понятной. У вас с jentoso переменная приклеивается в Текущем пользователе, а у меня в текущем процессе.
Чтобы приклеить переменную в Текущем пользователе, это еще надо постараться. Например, зайти сюда:

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

rundll32.exe sysdm.cpl,EditEnvironmentVariables
Или поискать другие способы, типа SetX или прямой записи в реестр.

Autorun приклеивает в текущем процессе. Поэтому когда вы пишете:
[У меня приклеивается в текущем процессе:
Изображение
И не работает.
Не понятно, что вы ожидаете: что бы что заработало? Судя по картинке, все работает как и должно.
AkulaBig писал(а):Нормально работает. Не засекал, но очень похоже на 3 сек. До модуля быстро, но не мгновенно.
О том и была речь. Если вместо MsgBox использовать полезный код (например, запуск заголовка), то этот код выполнится только через 3 секунды после старта. Дугими словами, если положить лицензию в корень ТС, то заголовок запустится через 3 секунды, что явно не комильфо.
AkulaBig писал(а):Как видите сначала присоединилась ValeryK1. А затем ValeryK,ValeryK1. Очень странно.
А вот это уже тянет на баг. По крайней мере, требует детальной проверки. Напомнило чем-то проблему дублирования путей, о которой я писал выше. Тогда я не стал сообщать Loopback, просто использовал код как временное решение, но это код так и завис с тех пор, хотя тоже имеет свои недостатки.
Ответить