Autorun

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

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

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

Сообщение Flasher »

MVV
Flasher писал(а):переменная предназначена не только для сравнения в конфиге
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

KopBuH писал(а):вопрос: определение каких языков поддерживает SYSINFO_USERLANG?
Flasher писал(а):Полагаю, из этого списка.
Нет, трехбуквенные, что выдаются GetLocaleInfo с флагом LOCALE_SABBREVLANGNAME. Двухбуквенные значения по ISO, насколько я помню, можно получить только в Vista и выше.
Flasher писал(а):а как же моя просьба о нижнем регистре?
Забыта. Сделаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

Сообщение MVV »

Может, добавить для команды SetEnv флаг указания регистра символов в создаваемой переменной? Типа, /CU - все большие, /CL - все маленькие. Будет универсальное средство.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Тогда уж лучше функции LCase()/UCase, переменную необязательно передавать в окружение.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

MVV писал(а):Loopback,
AUTORUN_OSARCH теперь SYSINFO_OSARCH? В Readme ни слова.
у меня пока работает через AUTORUN_OSARCH. видимо, префикс пока не изменили.

Добавлено спустя 4 минуты:

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

Сообщение MVV »

KopBuH,
А у меня ругался при каждом запуске, пока не исправил. И ещё ругался на сравнение ==, хотя 1.6b1 прекрасно работала с таким:

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

If %AUTORUN_OSARCH% == 64 Then
Теперь работает только с таким (при подключенном плагине):

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

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

Сообщение KopBuH »

MVV писал(а):KopBuH,
А у меня ругался при каждом запуске, пока не исправил. И ещё ругался на сравнение ==, хотя 1.6b1 прекрасно работала с таким:

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

If %AUTORUN_OSARCH% == 64 Then
так сравнение по == отменили еще в b8 или 9.
я выше писал про это в топике.
MVV писал(а): Теперь работает только с таким (при подключенном плагине):

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

If %SYSINFO_OSARCH% = 64 Then
и правда :roll:
но в ридми написано так:

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

%AUTORUN_OSARCH% - архитектура ОС, где работает Total Commander. Может быть 32 или 64.
%AUTORUN_OSVERSION% - версия ОС где работает Total Commander. Может принимать значения:
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Я уже писал, что в Readme не исправлено.
MVV писал(а):AUTORUN_OSARCH теперь SYSINFO_OSARCH? В Readme ни слова.
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

у меня не ругался потому что:

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

If %AUTORUN_OSARCH% = 64 Then
  SetEnv COMMANDER_OSARCH x64
ElseIf %AUTORUN_OSARCH% = 32 Then
  SetEnv COMMANDER_OSARCH x86
EndIf
я и незаметил, что у меня под XP архитектура "64" :)
хотя если переменная отсутствовала, то как значение принимало x64 :roll: ?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Такую добавь, пож-та.
С этой не так просто. У нее для разных параметров совершенно разный тип возвращаемых данных, напрямую не сделаешь.
MVV писал(а):Я уже писал, что в Readme не исправлено.
Там теперь указаны только те переменные, которые остались в основном плагине. И указание, что дополнительные системные константы реализованы в плагине.

А сами переменные перечислены в разделе плагинов для Sysinfo.

Когда справку в html переделаю, можно будет внутреннюю ссылку сделать.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Как бы зарегистрировать библиотеку?
Прилагаемый к программе батник по регистрации выглядит следующим образом:

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

%systemroot%\system32\regsvr32 /s redist\x64\TextCaptureLib.dll
%SystemRoot%\Syswow64\regsvr32 /s redist\x86\TextCaptureLib.dll
Чтобы разрегистрировать:

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

%systemroot%\system32\regsvr32 /u redist\x64\TextCaptureLib.dll
%SystemRoot%\Syswow64\regsvr32 /u redist\x86\TextCaptureLib.dll
У меня 64-битная ОСь, здесь мне непонятно, почему regsvr32 из system32, а не из Syswow64 регистрирует 64-битную библиотеку...
Необходимо выполнить команду по регистрации нужной мне библиотеки.
Что-то такое:

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

ShellExec '%systemroot%\system32\regsvr32' '%COMMANDER_PATH%\SOFT\TextCatch\redist\x64\TextCaptureLib.dll'
не работает.
Я так понимаю, не знает %COMMANDER_PATH%, но как быть тогда :?:, цель - портабельность.
При выгрузке TC желательно библиотеку разрегистрировать.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

ask-rus,
Оригинальные умы Microsoft вместо добавления папки System64 для 64-битной подсистемы придумали редирекцию: папка 64-битной подсистемы называется System32, а 32-битной - SysWow64, которая в 32-битном окружении подставляется вместо System32. Батник в таком виде будет работать только при запуске из 64-битной среды. В 32-битной обе папки (System32 и SysWow64) указывают на 32-битную подсистему.

Исходя из комстроки regsvr32, параметр /s отключает сообщения об ошибках, параметр /c позволяет зарегистрировать/разрегистрировать библиотеку только для данного пользователя (плюс к портабельности, т.к. не нужны права админа), параметр /u указывает, что нужно разрегистрировать библиотеку.

Т.о., в Autorun.cfg должно быть примерно следующее:

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

LoadLibrary Plugins\Autorun_SysInfo.dll

If %SYSINFO_OSARCH% = 64 Then
SetEnv X__ 64
Else
SetEnv X__ 32
EndIf

ShellExec '%SystemRoot%\System32\regsvr32.exe' '/c /s "%COMMANDER_PATH%\SOFT\TextCatch\redist\x%X__%\TextCaptureLib.dll"'

Pragma AutorunFinalizeSection

ShellExec '%SystemRoot%\System32\regsvr32.exe' '/u /c /s "%COMMANDER_PATH%\SOFT\TextCatch\redist\x%X__%\TextCaptureLib.dll"'
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

В ShellExec еще надо добавить /EV, чтобы развернуть переменные.

Вообще, сейчас уже очевидно, что идея разворачивать переменные только при явно заданном ключе не самая удачная, поскольку переменные приходится разворачивать в подавляющем большинстве случаев. Нужно было делать обратный ключ.
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

Ask-rus
сделай так:
ShellExec /EV 'программа.exe' '%COMMANDER_PATH%\dll.dll'
а за пример возьми пост MVV

P.S.: опоздал чуток от Loopback :)
Последний раз редактировалось KopBuH Пн янв 21, 2013 15:53, всего редактировалось 2 раза.
Ответить