Страница 228 из 243
Добавлено: Сб апр 04, 2026 21:52
AkulaBig
Orion9 писал(а):Надо проверить. Теоретически большой разницы не должно быть
И это удивительно, что в действительности в Autorun не работает. Если хотите, можно прямо в моей сборке и проверить. Я сейчас закончил скрипт на au3. Все получилось. Осталось причесать все. Если будете на моей сборке тестить, напишите. Я подготовлю сборку, подключу все нужное.
Orion9 писал(а):вопросы только к Loopback.
Дак нет его. Конечно очень хотелось-бы подключить его к решению проблемы.
Добавлено: Вс апр 05, 2026 11:25
Orion9
AkulaBig писал(а):Если будете на моей сборке тестить, напишите.
Нет у меня, к сожалению, сейчас такой возможности. Скорее всего придется совсем забыть о ТС на какое-то время, пока не решу все проблемы. Надеюсь, Loopback все же вернется и сделает финальную версию плагина или хотя бы очередную бету с последним функционалом WM_USER+50, который появился в новом ТС.
P.S. Вы, наверное, пропусти мои вчерашние ПМ. Если их сразу пропустить, напоминаний больше не будет (недостаток здешнего форума). Mrak_Tlen вам сообщение тоже висит в исходящих (не старое, а новое)
Добавлено: Вс апр 05, 2026 12:00
AkulaBig
Orion9 писал(а): Вы, наверное, пропусти мои вчерашние ПМ.
Ответил.
Orion9 писал(а):Нет у меня, к сожалению, сейчас такой возможности.
Ну и ладно. Будет время и интерес, сообщите. Мне-то сейчас все ясно. Причесываю новые пользовательские колонки с доками. Все работает. Да и тестировать с Autorun можно. Весь код в сборке есть. Просто самому подключать модули, создавать колонки.
Жалко, что ни автора, ни вас не будет какое-то время. Ну удачи вам в ваших делах.
Добавлено: Вс апр 12, 2026 17:18
yahuu
Функция FileDelete в 64-битной версии TC приводит к краху и завершению работы TC.
Добавлено: Вс апр 12, 2026 19:11
AkulaBig
yahuu
Подтверждаю.
Добавлено: Вт апр 14, 2026 12:34
ZiabrevLV
Прошу помочь с командой:
Код: Выделить всё
#Переключение значков файловых панелей
RegisterCommand 67001 "SwitchIcons"
Func SwitchIcons(lParam)
Local sIconLib
#Проверка наличия ключа IconLib в секции [Configuration] файла wincmd.ini
IniRead sIconLib %COMMANDER_INI% "Configuration "IconLib" ""
If StrPossIconLib, "") Then
#Поквзывает собственные значки ТС
IniWrite %COMMANDER_INI% "Configuration" "IconLib" "%COMMANDER_EXE%"
Else
#Поквзывает аматерные значки - Fileicons.dll
iniWrite %COMMANDER_INI% "Configuration" "IconLib" "%COMMANDER_PATH%\Fileicons.dll"
EndIf
#Обновляетм значки файловых панелей
CommandExec cm_ReloadFileIcons
EndFunc
Не работает - ошибка If StrPossIconLib, "" - параметр не определён.
Требуется поправить.
Добавлено: Вт апр 14, 2026 18:24
AkulaBig
If StrPossIconLib = "" Then или If StrPossIconLib <> ""
А вообще у меня такой модуль давно есть.
Добавлено: Вт апр 14, 2026 23:12
Orion9
yahuu писал(а):Функция FileDelete в 64-битной версии TC приводит к краху и завершению работы TC.
Да, было замечено.
Можно использовать ShellExec
Код: Выделить всё
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%COMMANDER_PATH%\temp.txt"""
Или функцию сделать
Код: Выделить всё
Func FileDeleteShellExec(Target)
If Not FileExist(Target) Then Return 0
ShellExec("~/SW_HIDE /WAIT:2000", COMSPEC, '/c del /q "' & Target & '"')
If FileExist(Target) Then Return -1
Return 1
EndFunc
Код: Выделить всё
Local sTarget = COMMANDER_PATH & '\temp.txt'
If FileDeleteShellExec(sTarget) = -1 Then MsgBox("Error deleting " & sTarget)
ZiabrevLV писал(а):Не работает - ошибка If StrPossIconLib, "" - параметр не определён.
Похоже, что скобка потерялась
Хотя пустую строку можно сравнивнить If sIconLib = "", но если следовать логике функции , должно быть, наверное, так
Значение ключа в ini будет каждый раз меняться.
Добавлено: Ср апр 15, 2026 00:15
ZiabrevLV
AkulaBig
Я смотрел, там нумерация пришита.
Orion9
Да,так работает. Спасибо.
Только пишет в инишнике вместо переменной %COMMANDER_PATH%,
IconLib=абсолютный путь\Fileicons.dll, как-то можно и это поправить?
Добавлено: Ср апр 15, 2026 06:26
AkulaBig
Orion9 писал(а):Похоже, что скобка потерялась
Ну вы волшебник. Догадаться, что это функция StrPos, это высший пилотаж

Я тут за время вашего отсутствия такого накодил с ExifTool. И решил еще раз попробовать через Autorun. Но без использования ProcessExecGetOutput. Через ShellExec, выводящий результат в буфер. Вдруг такой вариант будет работать приемлемо по скорости. И как всегда встрял с кавычками. На au3 кавычки смог правильно поставить, на vbs. А на Autorun сколько бьюсь, не получается. Прошу помощи:
Код: Выделить всё
ShellExec("~/SW_HIDE", COMSPEC, '/c ' & util_ET & param & FileName & ' | clip')
Вот такая запись работает с путями без пробелов. Понятно, что надо FileName взять в кавычки. Но не получается. В vbs прекрасно работает:
Код: Выделить всё
objShell.Run "%COMSPEC% /c " & chr(34) & chr(34) & program & chr(34) & param & chr(34) & filename & chr(34) & " | clip" & chr(34), 0, True
Добавлено: Ср апр 15, 2026 08:15
ZiabrevLV
Увидел:
/EV- В командной записи отключает использование переменных и переменных окружения в параметре value.
/R Функция будет учитывать наличие ключа RedirectSection в заданной секции и ключа AlternateUserIni в секции Configuration.
Всё работает.
Всем спасибо.
Добавлено: Ср апр 15, 2026 10:09
AkulaBig
Orion9
Ах тыж, блин. Сегодня совершенно случайно добавил /WAIT и все заработало. И все перестало шевелиться. А с путями без пробела в буфер заносилось без /WAIT. Похоже как-раз ProcessExecGetOutput и добавляет сам /WAIT.
Добавлено: Ср апр 15, 2026 12:33
Orion9
ZiabrevLV писал(а):Увидел:
/EV- В командной записи отключает использование переменных и переменных окружения в параметре value.
Так и есть. В командной записи переменные окружения раскрываются по умолчанию. Чтобы этого не происходило, необходимо использовать ключ /EV-, если он поддерживается. В функциональной записи все наоборот. Переменные окружения никогда не раскрываются, строка передается в функцию как есть. Если взять ваш пример, то две одинаковые записи будут вести себя по-разному
Код: Выделить всё
IniWrite %COMMANDER_INI% "Configuration" "IconLib" "%COMMANDER_EXE%"
Код: Выделить всё
IniWrite(COMMANDER_INI, "Configuration", "IconLib", "%COMMANDER_EXE%")
В первом случае переменная раскроется, во втором случае нет.
[Важно] Если необходимо раскрыть переменную окружения в функциональной записи, нужно использовать Set(), это единственный предусмотренный для этого способ
Код: Выделить всё
IniWrite(COMMANDER_INI, "Configuration", "IconLib", Set("%COMMANDER_EXE%"))
AkulaBig писал(а):Но без использования ProcessExecGetOutput. Через ShellExec, выводящий результат в буфер. Вдруг такой вариант будет работать приемлемо по скорости.
Если такой вариант быстрее ProcessExecGetOutput, то, вероятно, есть проблемы в механизмах внутренней реализации. Сам по себе WinScriptAdv + AutoIt не должен выигрывать у Autorun, поскольку AutoIt.exe запускается каждый раз с новым скриптом, что очень медленно и накладно. Если Autorun действительно проигрывает в скорости, хотелось бы услышать от автора причины этого.
AkulaBig писал(а):А на Autorun сколько бьюсь, не получается. Прошу помощи:
Вы уже вставляли кавычки
здесь правильно. Какая может быть разница
Код: Выделить всё
ShellExec("~/SW_HIDE", COMSPEC, '/c ' & util_ET & param & '"' & FileName & '"' & ' | clip')
Просто имя файла должно быть в кавычках, да и все.
Добавлено: Ср апр 15, 2026 13:12
ZiabrevLV
Orion9
У меня сейчас так:
Код: Выделить всё
IniWrite /R /EV- %COMMANDER_INI% "Configuration" "IconLib" "%COMMANDER_EXE%"
Else
iniWrite /R /EV- %COMMANDER_INI% "Configuration" "IconLib" "%COMMANDER_PATH%\Fileicons.dll"
Так же записывается в wincmd.ini.
И всё работает.
Добавлено: Ср апр 15, 2026 15:05
AkulaBig
Orion9 писал(а):Вы уже вставляли кавычки здесь правильно. Какая может быть разница
Оказалось, что проблема намного сложнее. Я выше описал. Вся проблема была в /WAIT. С ней и с буфером обмена проблем нет. Это был мой следующий вопрос. Не хотел сразу все в кучу валить. Вместо /WAIT работает Sleep(), но не менее Sleep(500). Что совершенно не решает проблему. Панели ТС при этом практически перестают двигаться, а перед выводом инфы несколько секунд пауза. Зависит от количества файлов.
Orion9 писал(а):Если такой вариант быстрее ProcessExecGetOutput, то, вероятно, есть проблемы в механизмах внутренней реализации.
Да не. ProcessExecGetOutput не причем. Я проверил все варианты с Autorun. ProcessExecGetOutput, Plugin, uwdx. Везде одинаково. Думал через ShellExec заработает. Видимо все-же и в скриптах какая-то задержка есть, они не стремительно быстро работают, как плагин ExifToolWDX. Опять-же нельзя быть уверенным, что плагин не снизит скорость, если ему придется русскую перекодировку делать.