Страница 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 StrPos(sIconLib, "") Then 
Хотя пустую строку можно сравнивнить If sIconLib = "", но если следовать логике функции , должно быть, наверное, так

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

If StrPos(sIconLib, "Fileicons.dll") Then
Значение ключа в 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. Опять-же нельзя быть уверенным, что плагин не снизит скорость, если ему придется русскую перекодировку делать.