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 ... 185, 186, 187
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
AkulaBig



Joined: 03 Dec 2008
Posts: 274

Post (Separately) Posted: Sat May 10, 2025 15:14    Post subject: Reply with quote

Orion9 wrote:
будь я на вашем месте, я сделал бы верхнее меню

Я уже забыл, верхнее меню это что у нас?
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 728

Post (Separately) Posted: Tue May 13, 2025 18:30    Post subject: Reply with quote

AkulaBig wrote:
Я уже забыл, верхнее меню это что у нас?

Это то, к чему Гислер за 30 лет не сделал никакого GUI, хотя именно это нужно было делать в первую очередь, а не отмазываться от пользователя неудобным меню "Запуск", которое, как выяснилось, имеет еще и кривую многоязычную поддержку, исправлять которую он теперь не желает. Как-то так.

Думал, что еще не скоро возьмусь за Autorun, но понадобилась одна фича, над которой сейчас работаю. Простенький монитор каталога, чтобы отслеживал изменения и сообщал об удаленных файлах в реальном времени. Попутно сделал кнопку для подсчета времени воспроизведения в каталоге. Что-то подобное делает плагин MediaTime. При желании можно полностью заменить его функционал, если не устраивает одиночное нажатие кнопки:
 Hidden text

 Hidden text

Функция полностью завязана на плагин TCMediaInfo и его поля, хотя, конечно, можно было и через DllCall сделать, но использование объекта Plugin сводит весь код на Autorun до смешных нескольких строк.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 274

Post (Separately) Posted: Tue May 13, 2025 21:40    Post subject: Reply with quote

Orion9 wrote:
Функция полностью завязана на плагин TCMediaInfo и его поля, хотя, конечно, можно было и через DllCall сделать

У меня наоборот, что-то возникло желание переделать пользовательские колонки на Dll, отказавшись от TCMediaInfo. Его использовать только как листер-плагин. Как-бы в моем понимании это даст какую-то упорядоченность.
Только вот навряд-ли Autorun выдержит еще полей 30. Думаю в данном случае как-раз попробовать использовать файл типа hint.txt или массив значений.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 728

Post (Separately) Posted: Thu May 15, 2025 00:32    Post subject: Reply with quote

AkulaBig wrote:
отказавшись от TCMediaInfo

Имхо, TCMediaInfo один из лучших плагинов, не понятно, зачем от него отказываться. Я наоборот хотел с ним лучше разобраться, т.к. он у меня в подвисшем состоянии остался.
AkulaBig wrote:
Только вот навряд-ли Autorun выдержит еще полей 30.

Да поля-то он, наверное, выдержит, только все-равно не понятно, зачем заменять один плагин другим. В скорости, например, от этого вряд ли получится выиграть, я как раз в этом убедился сейчас.

Пришлось переделать функцию подсчета, убрав из неё получение списка через ProcessExecGetOutput, т.к. этот вариант не работает с UNC-путями. Попутно сделал вызов через DllCall и расширил функционал. Сейчас вызов с ALT делает подсчет через плагин TCMediaInfo.wdx, а простой вызов через MediaInfo.dll. Поскольку MediaInfo.dll обрабатывает все файлы (даже те, которые не-медиа, что замедляет работу), пришлось добавить фильтр. При включеном CapsLock фильтр отключается. Вызов с CTRL ограничивает глубину каталога до первого уповня. SHIFT - выводит в окно отладчика информацию о пропущенных элементах.

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



Joined: 03 Dec 2008
Posts: 274

Post (Separately) Posted: Thu May 15, 2025 07:09    Post subject: Reply with quote

Orion9 wrote:
он у меня в подвисшем состоянии остался

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



Joined: 01 Jan 2024
Posts: 728

Post (Separately) Posted: Thu May 15, 2025 14:06    Post subject: Reply with quote

AkulaBig wrote:
либо там разбираться с настройками, либо здесь пойти по уже проторенной дорожке

Так ведь плагин TCMediaInfo и есть проторенная дорожка. Вопрос здесь больше в изучении самой MediaInfo.dll и её возможностей, чтобы лучше понимать что и в каких случаях выводить. А для этого придётся глубже копнуть в форматы файлов и их устройство, а не только в изучение настроек XML.

Откинул меня подсчёт времени воспроизведения, но вроде доделал как надо, хотя нужно больше тестов. Сейчас повторное нажатие на кнопку прерывает операцию, как и комбинация Win + ESC. Зажатие CTRL + ALT во время подсчёта показывает прогресс операции в подсказке. Обнаружил одну неприятную проблему. MediaInfo.dll может зависнуть на некоторых файлах и повесить ТС. Пока мне попался один такой файл, который нормально проигрывается, но видимо с тегами что-то не так. Foobar при проверке целостности пишет: Warning: Multiple ID3v2 tags encountered, item decoded with minor problems. Программа Mp3Tag пишет: ID3v2.3 ERROR: MP3 header parse error. В остальном проблем больше не заметил. Последняя версия кнопки:


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



Joined: 03 Dec 2008
Posts: 274

Post (Separately) Posted: Thu May 15, 2025 15:05    Post subject: Reply with quote

Orion9 wrote:
придётся глубже копнуть в форматы файлов и их устройство

Копай, не копай. Раз тэги заполняют люди, все равно не угадаешь с заполненными полями. Собственно ведь поля тэгов для всех этих расширений одинаковы.
Orion9 wrote:
а не только в изучение настроек XML

Дак это еще один язык программирования нестандартный. Получается язык Autorun надо изучить и язык TCMediaInfo. Для молодых и умных может и нет проблем. А у нас время ограничено. Не очень интересно этим заниматься.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 728

Post (Separately) Posted: Fri May 16, 2025 00:32    Post subject: Reply with quote

AkulaBig wrote:
Собственно ведь поля тэгов для всех этих расширений одинаковы

MediaInfo.dll больше, чем просто тэги. Гораздо важнее техническая информация, которую дает эта библиотека. И если задача просто вывести некоторые поля из MediaInfo.dll, то, думаю, TCMediaInfo.wdx вполне для этого достаточно. А то, что там используется свой язык, так это только гибкости добавляет, на мой взгляд.

Все, готов монитор. Очень простенький, конечно, но зато рабочий.

Отдельный модуль:
 Monitor.aucfg

Дополнительные функции:
 ListDirectory

 NotifyInfoMessage

Последняя функция используется для показа системных сообщений без отображения значка в трее, но за ней были замечены проблемы на Win8.1 и Win10. Лучше взять доработанный пример из справки от Loopback, у меня времени не хватило, чтобы вставить его в модуль.

Функция следит за удаленными и добавленными файлами и создает лог во временном каталоге. Также в %TEMP% создаются еще два файла, в которых хранится предыдущий снимок и журнал операций. Последний открывается в кнопке-меню по коду 81001. Чтобы украсить меню значками, используются em_ команды:
Code:
[em_dir_monitor_new]
button=%COMMANDER_PATH%\Ini\NewsBar\notify-yes.ico

[em_dir_monitor_old]
button=%COMMANDER_PATH%\Ini\NewsBar\notify-no.ico

[em_dir_monitor_log]
button=%COMMANDER_PATH%\Utilites\AkelPad\AkelPad.exe
cmd=%COMMANDER_PATH%\Utilites\AkelPad\AkelPad.exe
param=tc_dir_monitor.log
path=%TEMP%

[em_dir_monitor_ops]
button=%COMMANDER_PATH%\Utilites\AkelPad\AkelPad.exe
cmd=%COMMANDER_PATH%\Utilites\AkelPad\AkelPad.exe
param=tc_dir_changes.log
path=%TEMP%

[em_dir_monitor_2log]
button=%COMMANDER_EXE%,0
cmd=CD %TEMP%\tc_dir_monitor.log

[em_dir_monitor_2ops]
button=%COMMANDER_EXE%,0
cmd=CD %TEMP%\tc_dir_changes.log

Простой способ запустить монитор в отдельном потоке:
Code:
RunThread ThreadDirMonitor

Func ThreadDirMonitor()
    While 1
        Sleep(180*60*1000)
        DirMonitor(DIR_MONITOR1, 0)
    Wend
EndFunc

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



Joined: 03 Dec 2008
Posts: 274

Post (Separately) Posted: Fri May 16, 2025 06:12    Post subject: Reply with quote

Orion9 wrote:
И если задача просто вывести некоторые поля из MediaInfo.dll, то, думаю, TCMediaInfo.wdx вполне для этого достаточно.

Я выше написал. Там некоторые поля неправильно выводятся. Надо править его файл настройки xml.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 728

Post (Separately) Posted: Fri May 16, 2025 11:49    Post subject: Reply with quote

AkulaBig wrote:
Я выше написал. Там некоторые поля неправильно выводятся.

У меня не было времени посмотреть, и сейчас тоже не могу, так как много разных дел появилось, но еще вернусь к этому позже.

Обнаружил первый небольшой косячок, забыл добавить FileAppend(sLogFile, sLog) перед Return:
Code:
# каталог не доступен   
    If Not FileExist(sDir) Then
       sLog &= LogFormat(1, "Каталог не доступен.")
       FileAppend(sLogFile, sLog)         
       Return
    Endif

Это не важно, т.к. функцией вряд ли кто-то будет пользоваться в таком виде, я скинул данный код на случай новых идей и решений.
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 ... 185, 186, 187
Page 187 of 187

 
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