Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Autorun
Goto page Previous  1, 2, 3 ... 233, 234, 235
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Orion9



Joined: 01 Jan 2024
Posts: 1144

Post (Separately) Posted: Tue May 26, 2026 14:04    Post subject: Reply with quote

AkulaBig
Не ради спора или попыток что-то доказать, а исключительно из любви к Autorun )

 Hidden text

Пришлось целый вечер на это убить, но чего только не сделаешь ради любви Smile
AkulaBig wrote:
Вот возьмите конкретный файл и протестируйте, за сколько по нему выведется инфа:

Этот файл шифрованный и обрабатывается медленно. Для таких файлов должен быть предусмотрен таймаут. В выхлопе об этом так и сказано
Code:
[ExifTool] ExifToolVersion: 13.52
[ExifTool] Warning: [minor] Decryption is very slow for encryption V5.6 or higher
[File] FileName: mwt-2021-proceedings.pdf
[File] Directory: D:/Temp
[File] FileSize: 70 MB

AkulaBig wrote:
А в действительности работает медленнее, чем с временными файлами.

Работать может медленнее, если буфер для чтения маленький. Я специально сделал на однобайтовом буфере сначала, чтобы посмотреть скорость. Работает в 3-4 раза медленнее, чем с файлами, но раз в 10 быстрее, чем если просто exiftool.exe вызывать. Увеличив буфер до 2Кб удалось по скорости обойти режим работы с файлами на 150-200% в зависимости числа и типов файлов.
AkulaBig wrote:
Почему не получится, если у меня получилось и результаты теста я привел?

Я не знаю, что у вас именно получилось. WinScriptAdv это костыль, который создает временный скрипт для каждого файла и с нуля его запускает. Это очень ограничивает действия. В частности не получится повторить код на Autohotkey, который сразу предлагал болван, и который я повторил на Autorun.
AkulaBig wrote:
Ни одного скрипта мне запустить не удалось.

Первый скрипт с ComObject рабочий, я только заменил теги на "-G" и указал свои пути
Code:
; Формируем пакет аргументов для текущего файла.
; Каждая опция и значение должны быть на новой строке.
;cmd := "-Artist=Автор " index "`n"
;cmd .= "-Copyright=2026 Студия`n"
cmd := "-G`n"       
cmd .= targetFile "`n" ; Путь к файлу передается в конце пакета команд
cmd .= "-execute"      ; ОБЯЗАТЕЛЬНО: сообщает ExifTool, что этот пакет команд пора выполнить

Второй скрипт тоже рабочий, но только для X64. Чтобы он заработал в Autohotkey32 пришлось подкорректировать буфер
Code:
; Настройка атрибутов безопасности для наследования дескрипторов
SA := Buffer(12, 0)
NumPut("UInt", 12, SA, 0) ; nLength
NumPut("Ptr", 0, SA, 4)   ; lpSecurityDescriptor
NumPut("Int", 1, SA, 8)  ; bInheritHandle

И еще я забыл приложить второе сообщение из чата с примером вызова. Не думал все же, что займусь переводом на Autorun

 Hidden text

Файлы .ahk обязательно должны сохраняться как UTF-8, иначе они могут не работать.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 579

Post (Separately) Posted: Tue May 26, 2026 14:47    Post subject: Reply with quote

Orion9 wrote:
WinScriptAdv это костыль, который создает временный скрипт для каждого файла и с нуля его запускает.

Так любой wdx-плагин работает.
Orion9 wrote:
Этот файл шифрованный и обрабатывается медленно. Для таких файлов должен быть предусмотрен таймаут.

Ну это понятно. Я вам и привожу время реальной обработки. Что не так?
Orion9 wrote:
Пришлось целый вечер на это убить, но чего только не сделаешь ради любви

Только ради любви, это точно. Так как Ауторан х64 на нынешний момент не работает с ET толком и не понятно, будет ли работать. А если и будет работать, ничего не изменится. Алгоритм работы пользовательских колонок не Ауторан задает.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1144

Post (Separately) Posted: Tue May 26, 2026 18:30    Post subject: Reply with quote

AkulaBig wrote:
Так любой wdx-плагин работает

Скорее наоборот. У других wdx руки ничем не связаны, а WinScriptAdv делает это из-за необходимости.
AkulaBig wrote:
Только ради любви, это точно.

В данном случае только ради этого. Но как показывает практика, созданный когда-то код рано или поздно находит себе применение. Если понадобится работать с приложением через stdin и stdout, шаблон уже готов. Времени он, конечно, отнял прилично. Жаль, что болван сразу не выкидывает готовый код на Autorun.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 579

Post (Separately) Posted: Tue May 26, 2026 20:47    Post subject: Reply with quote

Orion9 wrote:
Но как показывает практика, созданный когда-то код рано или поздно находит себе применение.

Конечно если когда-то придет время для использования этого кода, будет нужно тщательное тестирование. Так как сейчас на au3 у меня код в три раза короче и без всяких временных файлов. Так что только при условии, если вдруг этот код будет работать быстрее, будет смысл им воспользоваться.
К сожалению мне уже ясно, что в пользовательских колонках код с -stay_open False быстро работать не будет. Это тоже самое, что я запускаю новую копию exiftool для каждого файла. По крайней мере с WinScriptsAdv так получается. Думаю и сама логика говорит о том-же. Вот с временными файлами да, скорость возрастает, так как не надо делать -stay_open False и работа реально идет с одной копией ET.
Orion9 wrote:
У других wdx руки ничем не связаны, а WinScriptAdv делает это из-за необходимости.

Не понял, что означает эта фраза. Можете чуть подробнее?
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1144

Post (Separately) Posted: Wed May 27, 2026 00:41    Post subject: Reply with quote

AkulaBig
Я сразу был против чтения через stdout. Столько усилий и ради чего — выиграть полсекунды? Laughing Имхо, работа через временные файлы оптимальный вариант для связки WinScriptAdv + ExifTool или Autorun + ExifTool. И скорость возрастает прилично, и с бубном прыгать не нужно.
AkulaBig wrote:
Можете чуть подробнее?

Имелось в виду, что WinScriptAdv работает в контексте создаваемых собой временных файлов, другим плагинам это не требуется.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 579

Post (Separately) Posted: Wed May 27, 2026 05:23    Post subject: Reply with quote

Orion9 wrote:
WinScriptAdv работает в контексте создаваемых собой временных файлов, другим плагинам это не требуется.

Еще есть несколько плагинов, предназначенных для создания плагинов на скриптовых языках. В том числе и плагинов просмотра. Да и у WinScriptAdv есть прародитель. Но они все перестали развиваться и остались на х32. Проверять, используют ли они временный файл никакого желания нет, поэтому я соглашусь с вами. Но добавлю, что из ныне существующих плагинов WinScriptAdv использует временный файл.
Orion9 wrote:
Я сразу был против чтения через stdout.

Но варианты от ИИ выкладывали Smile Лично мне это не было понятно с самого начала, а заинтересовался я после того, как вычислил, что плагин ExifToolWDX от китайца использует опцию -@ -.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1144

Post (Separately) Posted: Wed May 27, 2026 12:04    Post subject: Reply with quote

AkulaBig wrote:
Проверять, используют ли они временный файл никакого желания нет

Плагины похожие на WinScriptAdv (хотя я знаю только один такой) наверняка работают по тем же принципам — создают временный файл и выполняют его во внешней среде. Это накладывает ограничения. Вот если делать свой wdx, то руки подобными ограничениями связаны не будут, это прежде всего я имел в виду.
AkulaBig wrote:
Но варианты от ИИ выкладывали

Я думал, что если варианты окажутся несложными, то можно будет попробовать. И вариант с ComObject действительно несложный, но в Autorun этого объекта нет. Если открыть справку Autohotkey в разделе внешних библиотек (External Libraries), можно увидеть, что ComObject — пожалуй, единственный объект, который не сделал Loopback из всего раздела, остальное он закрыл Shocked Думаю, в последнее время он плотно сидел на ИИ — новые версии плагина слетали как с конвеера Laughing

 Hidden text
Back to top
View user's profile Send private message
FallenAngel



Joined: 30 Dec 2025
Posts: 38

Post (Separately) Posted: Wed May 27, 2026 14:25    Post subject: Reply with quote

Quote:
SetEnv /A PATH ;%COMMANDER_PATH%\Utils


У меня эта конструкция "отпадает" все время. Приходится часто перезапускать ТС. Может можно добавить какой-то цикл чтобы он передобавлял раз в 5 минут этот путь?
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1144

Post (Separately) Posted: Wed May 27, 2026 20:12    Post subject: Reply with quote

FallenAngel
Можно, но хотелось бы понять, что это за глюк.

В Autorun есть функция GetState, через которую можно получить состояние переменных окружения. Я сделал небольшой скрипт, который запускает описываемый вами цикл в фоне, но вместо добавления пропавшего пути назад к переменной PATH, он просто информирует о том, что путь пропал и копирует в буфер состояние всех переменных.

 Hidden text

Если при старте ТС нужный путь в переменных отсутствует, поток с циклом не будет запущен.

Важно отловить момент, когда путь отваливается, чтобы понять, что вызывает проблему. Проверка происходит каждые 10 сек. Окно сообщения должно появиться поверх всех окон.

Можно изменить значение переменной Path в wfx плагине, чтобы долго не ждать и проверить работу функции.
Back to top
View user's profile Send private message
FallenAngel



Joined: 30 Dec 2025
Posts: 38

Post (Separately) Posted: Thu May 28, 2026 10:35    Post subject: Reply with quote

Спасибо, буду наблюдать что да как.

Еще бы словить ВНЕЗАПНОЕ закрытие ТС. Происходит это нечасто, но дико раздражает.

При клике по 1) заголовку панелей или 2) меню (как правило Start) - ТС просто закрывается. В журналах пусто. В %PROGRAMDATA%\Microsoft\Windows\WER\ReportArchive - тоже.

Проявляется на разных ПК с разными ОС.
Back to top
View user's profile Send private message
SergM2026



Joined: 27 May 2026
Posts: 3

Post (Separately) Posted: Thu May 28, 2026 12:35    Post subject: Reply with quote

FallenAngel wrote:

При клике по 1) заголовку панелей или 2) меню (как правило Start) - ТС просто закрывается. В журналах пусто.

А при этом в фоне какой-то процесс был запущен? У меня такое бывало, но только когда в фоне шло копирование больших файлов (фильмов на флешку).
_________________
Самые "жирные" розыгрыши и конкурсы в MAX и Telegram
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1144

Post (Separately) Posted: Thu May 28, 2026 13:41    Post subject: Reply with quote

FallenAngel wrote:
Спасибо, буду наблюдать что да как.

Надеюсь, получится отловить. Если все переменные не нужны, а нужна только переменная %Path%, то вместо GetState("envvars") можно использовать GetEnv("path"). Возможно, так будет проще сравнить. Теперь в буфер попадает два снимка: %Path% при старте ТС + %Path% после появления проблемы.

 Hidden text

SergM2026 wrote:
У меня такое бывало

Это немного другая проблема, ранее она обсуждалась. Соответственно, самое простое решение избавится от этой проблемы — положить лицензию в корень ТС Smile
Back to top
View user's profile Send private message
FallenAngel



Joined: 30 Dec 2025
Posts: 38

Post (Separately) Posted: Thu May 28, 2026 18:08    Post subject: Reply with quote

Orion9 wrote:
Соответственно, самое простое решение избавится от этой проблемы — положить лицензию в корень ТС

Как это связано? После старта ТС может пройти пол дня.
Или есть зависимость не только сразу после старта?
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1144

Post (Separately) Posted: Fri May 29, 2026 00:38    Post subject: Reply with quote

FallenAngel wrote:
Как это связано? После старта ТС может пройти пол дня.

Может и никак не связано. Но если в зарегистрированной версии такой проблемы нет, может как-то и связано.

Проверить закрывается ли ТС вероятно получится через простенький лог. Только нужно держать одну копию ТС открытой, чтобы в логе ничего не перемешалось
Code:
FileAppend(COMMANDER_PATH & "\tc.log", StrFormat("%s %s %s запущен.\r\n", Date(), Time(), COMMANDER_EXE))

Pragma AutorunFinalizeSection

FileAppend(COMMANDER_PATH & "\tc.log", StrFormat("%s %s %s закрыт.\r\n\r\n", Date(), Time(), COMMANDER_EXE))

Если тотал действительно закрывается, а не вылетает, о чем это может говорить?

Кстати. Есть вариант при котором функция CheckEnvState может не сработать. Если к переменной %COMMANDER_PATH%\Utils приклеется другой путь без ";", то такой путь перестанет работать, но функция CheckEnvState проверяет только наличие подстроки, а подстрока %COMMANDER_PATH%\Utils останется без изменений. В результате функция не увидит проблем.

Лучше просто проверять любое изменение %Path%, которых после старта ТС не должно быть, если только по минимому.

 Hidden text
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 233, 234, 235
Page 235 of 235

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group