View previous topic :: View next topic |
Author |
Message |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Tue Apr 29, 2025 21:01 Post subject: |
|
|
Orion9 wrote: | Вы не проверяли предложенный код? |
Не проверял, так как понятно, что редрав здесь не при чем.
Orion9 wrote: | Всё работает, не выдумывайте |
Мне кажется мы с вами запутались. Где я утверждаю, что что-то не работает? Работает и мой код из двух команд. Просто окно дергается, что естественно. И это отвратительно. А ваш код вообще дергается еще страшней. Ведь вы наставили задержек зачем-то. Ну и с учетом, что редрав здесь ничего не делает, еще и лишние команды. Или вы опять на ТС х32 проверяли?
Orion9 wrote: | Можно просто повесить озвучку |
Ну вот у меня звук только когда я надеваю наушники слышен. И это очень редко происходит. Что мне даст озвучка? Собственно для меня приемлим единственный вариант, который мы обсудили. Это кнопка в Панели настроек. Не думаю, что эту фичу надо постоянно переключать. Так что нормальный вариант. Ну а так как пока у меня нет файла с несколькими дорожками и необходимость чтения данных из массива вызывает сомнения, пока я эту фичу не тестю дальше. Сейчас главное парсер переделать. Вроде там не трудно, но пока руки до него не дошли.
Orion9 wrote: | UTF16 без BOM он точно определяет |
Если речь идет только об одной кодировке, которую плохо распознает uchardet, то может пригодится скрипт на vbs, подсмотренный мной у пользователей WinScriptsAdv?
 Hidden text Code: |
'*** CheckEncoding, van Dusen, 31.07.2009
'*** Script for WinScriptAdv content plugin
'*** [=script.Result] ===> Character Encoding • Line Endings
'*** [=script.Result1] ===> Character Encoding {ASCII|ANSI|Binary|Unicode: UTF-8|Unicode: UTF-8 BOM|Unicode: UTF-[16|32] [LE|BE] BOM}
'*** [=script.Result2] ===> Line Endings {None|CRLF (Win)|LF (Unix)|CR (Mac)}
Dim oFSO, f
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set f = oFSO.OpenTextFile(filename, 1, False)
vFileContentIn = f.Read(1024)
'vFileContentIn = f.ReadAll
f.Close
Set f = Nothing
Set oFSO = Nothing
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Check Character Encoding
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vEncoding = "?"
'Bytefolgen der BOM in verschiedenen Zeichenkodierungen
'Kodierung Bytefolge
'UTF-8 EF BB BF (239 187 191)
'UTF-16 Big Endian FE FF (254 255)
'UTF-16 Little Endian FF FE (255 254)
'UTF-32 Big Endian 00 00 FE FF (000 000 254 255)
'UTF-32 Little Endian FF FE 00 00 (255 254 000 000)
vBOM = Left(vFileContentIn, 2)
If vBOM = Chr(&HFF) & Chr(&HFE) Then vEncoding = "Unicode: UTF-16 LE BOM"
If vBOM = Chr(&HFE) & Chr(&HFF) Then vEncoding = "Unicode: UTF-16 BE BOM"
vBOM = Left(vFileContentIn, 3)
If vBOM = Chr(&HEF) & Chr(&HBB) & Chr(&HBF) Then vEncoding = "Unicode: UTF-8 BOM"
vBOM = Left(vFileContentIn, 4)
If vBOM = Chr(&H00) & Chr(&H00) & Chr(&HFE) & Chr(&HFF) Then vEncoding = "Unicode: UTF-32 BE BOM"
If vBOM = Chr(&HFF) & Chr(&HFE) & Chr(&H00) & Chr(&H00) Then vEncoding = "Unicode: UTF-32 LE BOM"
If vEncoding = "?" Then
Dim vRegExp
Set vRegExp = New RegExp
vRegExp.IgnoreCase = False
vRegExp.Global = True
vRegExp.Pattern = "[\x09-\x0D\x20-\x7E]"
vFileContentOt = vRegExp.Replace(vFileContentIn, "")
If vFileContentOt = "" Then
vEncoding = "ASCII"
Else
vEncoding = "Unicode: UTF-8"
For vI = 1 To Len(vFileContentIn)
vAsc = Asc(Mid(vFileContentIn, vI, 1))
vSubseqBytes = 0
'[\x00-\x7F] = 0xxxxxxx
If vAsc >= &H00 And vAsc <= &H7F Then
vSubseqBytes = 0
'[\xC0-\xDF][\x80-\xBF] = 110xxxxx 10xxxxxx
ElseIf vAsc >= &HC0 And vAsc <= &HDF Then
vSubseqBytes = 1
'[\xE0-\xEF][\x80-\xBF][\x80-\xBF] = 1110xxxx 10xxxxxx 10xxxxxx
ElseIf vAsc >= &HE0 And vAsc <= &HEF Then
vSubseqBytes = 2
'[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF] = 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
ElseIf vAsc >= &HF0 And vAsc <= &HF7 Then
vSubseqBytes = 3
Else
vSubseqBytes = 0
vEncoding = "?"
End If
If vI + vSubseqBytes > Len(vFileContentIn) Then Exit For
For vJ = 1 To vSubseqBytes
vI = vI + 1
vAsc = Asc(Mid(vFileContentIn, vI, 1))
If vAsc < &H80 Or vAsc > &HBF Then
vEncoding = "?"
Exit For
End If
Next
If vEncoding = "?" Then Exit For
Next
If vEncoding = "?" Then
vRegExp.Pattern = "[\x00-\x08\x0E-\x1F\x7F]" 'Control Chars
vFileContentOt = vRegExp.Replace(vFileContentIn, "")
If vFileContentIn = vFileContentOt Then
vEncoding = "ANSI"
Else
vEncoding = "Binary"
End If
End If
End If
End If
content1 = vEncoding
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Check Line Endings
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vLineEndings = ""
vCR = ""
vLF = ""
Select Case vEncoding
Case "ASCII", "ANSI", "Unicode: UTF-8", "Unicode: UTF-8 BOM" '0D 0A
vCR = Chr(13)
vLF = Chr(10)
Case "Unicode: UTF-16 BE BOM" '00 0D 00 0A
vCR = Chr(00) & Chr(13)
vLF = Chr(00) & Chr(10)
Case "Unicode: UTF-16 LE BOM" '0D 00 0A 00
vCR = Chr(13) & Chr(00)
vLF = Chr(10) & Chr(00)
End Select
vCRLF = vCR & vLF
If vCRLF <> "" Then
vLineEndings = "None"
If InStr(1, vFileContentIn, vCRLF) > 0 Then
vLineEndings = "CRLF (Win)"
Else
If InStr(1, vFileContentIn, vCR) > 0 Then vLineEndings = "CR (Mac)"
If InStr(1, vFileContentIn, vLF) > 0 Then vLineEndings = "LF (Unix)"
End If
End If
content2 = vLineEndings
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Concatenation and Output Encoding & Line Endings
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
content = vEncoding
If vLineEndings <> "" Then
content = content & " " & ChrW(&H2022) & " " & vLineEndings
End If
|
Скрипт рабочий, проверял в свое время. Но не знаю, в тему-ли?
Orion9 wrote: | а там часто за сотню улетает |
У нас-же всего 60 столбцов используется. Вроде хватает. У меня есть файл с очень длинным комментом, создаваемым автоматом какой-то прогой. И он вмещается. Так что на 60 отдельных 30 слитных столбцов хватает, хоть это и не так красиво.
Orion9 wrote: | Правда я не понимаю зачем вам выводить всё |
Интересно-же знать всю инфу, которая хранится в тэгах. Меня больше бесят пустые поля, которые болтаются в пользовательских колонках. Поэтому я хочу сделать так - есть набор с обязательными полями, а есть набор со всеми полями. Как-то так.
Orion9 wrote: | может быть SetFieldsParam в этом поможет? |
Да не. Все имеющиеся команды работают именно с полями, а я хотел работать с заголовками. Так что просто буду выводить колонками описанными выше парами и все. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Wed Apr 30, 2025 13:47 Post subject: |
|
|
AkulaBig wrote: | Не проверял, так как понятно, что редрав здесь не при чем. |
Вон оно чё, Михалыч.
AkulaBig wrote: | Работает и мой код из двух команд. |
Это не код. Это - цепочка команд:
Code: | cm_SrcNextCustomView,cm_SrcPrevCustomView |
Пусть Гислер для начала научится ставить условия между командами, прежде чем можно было называть это кодом.
AkulaBig wrote: | А ваш код вообще дергается еще страшней. |
В этот раз, надеюсь, проверяли?
AkulaBig wrote: | Ведь вы наставили задержек зачем-то. |
Чтобы буфера не перегревались. Но можете убрать задержки. Как говорила одна девушка, та, что из джаза: some like it hot.
AkulaBig wrote: | Что мне даст озвучка? |
На вечный вопрос "что нам даст озвуча" мастер дзен уже ответил: "стена большая - места всем хватит", просветленные ученики смиренно отошли.
AkulaBig wrote: | Или вы опять на ТС х32 проверяли? |
Не опять, а только на нём и делаю: TC x64 всерёз для работы не рассматриваю. Тем не менее, предложенный код работает и на x64.
AkulaBig wrote: | Если речь идет только об одной кодировке, которую плохо распознает uchardet, то может пригодится скрипт на vbs |
Этот скрипт у меня есть. Он и сейчас вызывается в батнике f4.bat, позволяя делать умный выбор редактора. Но тип UTF без маркера BOM он определяет неправильно.
AkulaBig wrote: | Поэтому я хочу сделать так |
Ну, как сделаете, выложите полученный результат, интересно будет посмотреть, думаю, не только мне. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Wed Apr 30, 2025 14:04 Post subject: |
|
|
Orion9 wrote: | В этот раз, надеюсь, проверяли? |
Ну конечно. Вдруг я чего-то упустил.
Orion9 wrote: | Но можете убрать задержки. |
Конечно проверил. Конечно все тоже.
Orion9 wrote: | Тем не менее, предложенный код работает и на x64. |
Конечно работает. Только как работает. В этом вопрос. Но вы меня заинтриговали. Обязательно проверю на х32.
Но тип UTF без маркера BOM он определяет неправильно.
Понятно. Еще есть скрипты для Акельки. Посмотрю, что там интересного.
Добавлено спустя 17 минут:
Проверил на ТС х32. Да, тут редрав похоже работает. Намного лучше, но все равно также мелькает. Но если в х64 прям свободно читаются имена следующих колонок, то на х32 я не успеваю разобрать, что там написано. Это без задержек. С задержками конечно хуже.
А представьте, это будет на каждом файле. Причем при перемещении на каждый следующий файл.
Orion9 wrote: | Ну, как сделаете, выложите полученный результат, интересно будет посмотреть, думаю, не только мне. |
Конечно выложу. Но там не так просто, как я думал. Не вдаваясь глубоко в код (надеюсь у вас уже глазик не дергается от таких моих слов). я почему-то решил, что MI построчно выдает код. А оказалось, что целиком. Соответственно не так просто к полям Общие,... добавить Параметр, чтобы выровнять их по колонкам. Похоже не в одну строчку код получится. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Wed Apr 30, 2025 20:06 Post subject: |
|
|
AkulaBig wrote: | Проверил на ТС х32. Да, тут редрав похоже работает. Намного лучше, но все равно также мелькает. Но если в х64 прям свободно читаются имена следующих колонок, то на х32 я не успеваю разобрать, что там написано. Это без задержек. С задержками конечно хуже. |
С задержками не может быть хуже, с ними иногда может быть только лучше.
Команда SendMessage(AUTORUN_TCHANDLE, 11, 0, 0) отключает перерисовку окна, SendMessage(AUTORUN_TCHANDLE, 11, 0, 0) снова её включает. Всё, что происходит между этими командами не должно отображаться на экране. Наоборот, возможен случай, когда код, расположенный между этими командами, выполняется медленне, чем приходят возвращаемые значения. Тогда происходит выполнение последней команды SendMessage(AUTORUN_TCHANDLE, 11, 0, 0) и перерисовка экрана включается раньше, чем изменения вступили в силу. В такие моменты и нужна задержка, чтобы всё дорисовалось до конца, прежде чем окно сможет обновится командой WinRedraw.
Если у вас в х64 хуже, чем в х86, попробуйте увеличить задержку до 500мс и посмотреть, что получится, когда уже точно всё дорисовалось.
Code: | Func SrcTest(lParam)
SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
CommandExec cm_SrcNextCustomView
CommandExec cm_SrcPrevCustomView
Sleep(500)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
Sleep(10)
WinRedraw(2)
EndFunc |
Есть еще вариант с TCFS2. Попробуйте его, может он вам больше подойдет:
Code: | TCFS2 = COMMANDER_PATH & "\Tools\TCFS2\TCFS2.exe
ShellExec %TCFS2% '/ef "msg($0B, 0, 0) tcm(5501) tcm(5502) msg($0B, 1, 0) run_item(update)"' |
AkulaBig wrote: | А представьте, это будет на каждом файле. Причем при перемещении на каждый следующий файл. |
Я поэтому и попросил конретный код. Что можно с этими двумя командами сделать?
Code: | cm_SrcNextCustomView,cm_SrcPrevCustomView |
Ну разве что посмотреть перерисовывается или не перерисовывается окно. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Wed Apr 30, 2025 20:47 Post subject: |
|
|
Orion9 wrote: | Я поэтому и попросил конретный код. |
Дак его написать надо сначала. А зачем его писать, если сразу понятно, что он не устроит.
Orion9 wrote: | Что можно с этими двумя командами сделать? |
Вот это другое дело. Я так и понял, что мы с вами запутались. Давайте еще раз опишу подробно, что я хотел.
Получаем мы из MI Параметр (Длительность) : Значение (3 мин). Для текущего файла я пишу в CustomFields.ini Параметр в Заголовок колонки. Передергиваю команды и в Заголовках колонок видим Параметры из MI, а в Значении колонок, значение из MI. То-есть имитируем совершенно стандартный интерфейс пользовательских колонок.
Перешли на следующий файл, записали Параметры в Заголовки колонок. Опять передернули команды для отображения их на экране. Таким образом для текущего файла будут отображаться в качестве заголовок колонок Параметры из MI.
Orion9 wrote: | Есть еще вариант с TCFS2 |
Посмотрю. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Thu May 01, 2025 13:40 Post subject: |
|
|
AkulaBig wrote: | Давайте еще раз опишу подробно, что я хотел. |
Вывести в колонки все данные MediaInfo в удобоваримом виде не получится, уже обсуждалось. Зачем бегать по кругу?
AkulaBig wrote: | Таким образом для текущего файла будут отображаться в качестве заголовок колонок Параметры из MI. |
Не лучше ли просто нажать CTRL+Q и увидеть все данные файла в противоположной панели в нормальном виде. А если нужно предварительно узнать, есть ли у файла тэги, то можно подключить плагин AnyTag и его специальные поля:
Code: | %_tag% Available tag types in file
%_tag_read% Displayed tag type
%_tag_size% Size of all tags in bytes
%_tag_size_appended% Size of all appended tags in bytes
%_tag_size_prepended% Size of all prepended tags in bytes |
Зная, что у файла есть тэги (видя это в колонках), можно получить подробную информацию в быстром просмотре или в подсказке. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Thu May 01, 2025 19:46 Post subject: |
|
|
Orion9 wrote: | Не лучше ли просто нажать CTRL+Q и увидеть все данные файла в противоположной панели в нормальном виде. |
Да вариантов может быть много. Кому что нравится. А БП у меня файлы проигрывает, а не тэги показывает. Так что надо еще 4 нажимать.
Orion9 wrote: | Вывести в колонки все данные MediaInfo в удобоваримом виде не получится, уже обсуждалось. Зачем бегать по кругу? |
Объяснение очень простое. Меня просто выбешивают пустые колонки, получаемые от ручного назначения. А тут я вижу всю инфу о файле. Да, уже сейчас меня все устраивает в хинтах. Ну и пусть будет тоже самое в колонках. Я удивлен, что вы такой конструктивный человек к этой идее так скептически отнеслись. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Thu May 01, 2025 23:56 Post subject: |
|
|
AkulaBig wrote: | к этой идее так скептически отнеслись |
Даже если вы сможете всё вывести (с использованием Autorun или без использования Autorun), это не значит, что будет удобно. Табличное представление подходит, только когда информация хорошо структурирована. Но теги имеют переменный размер и количество полей. Даже если следовать всем известным стандартам, нет гарантий, что конкретный тег не будет содержать user-defined fields или user-defined frames, что недопустимо при построении таблицы, которая должна быть как-то унифицирована в любом случае. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Fri May 02, 2025 07:44 Post subject: |
|
|
Orion9 wrote: | это не значит, что будет удобно |
Что тут неудобного?
Понятно, что далее в колонках параметры в колонке не соответствуют друг-другу, но строка-то читается нормально.
Вот надо форматирование правильно сделать. Либо вообще поля типа Общее убрать, но тогда в хинтах не удобно. Либо прилепить их к параметру, либо дополнить пустым столбцом (думаю это худший вариант).
Добавлено спустя 2 часа 23 минуты:
Orion9 wrote: | Есть еще вариант с TCFS2. |
Вроде нормально получается. Правда окно скрывается и вновь появляется. Но строка заголовка не мелькает и список файлов не мелькает. По крайней мере есть смысл код попробовать написать. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Sat May 03, 2025 13:02 Post subject: |
|
|
AkulaBig wrote: | Что тут неудобного? |
А что удобного? Но если хотите пользоваться, то, наверное, это имеет право на жизнь, никто ведь не запрещает.
AkulaBig wrote: | Вот надо форматирование правильно сделать. |
Не уверен, что можно считать правильным, учитывая особенности вывода, но пара мыслей возникла. Хотя вы и сами наверняка что-нибудь придумаете со временем, если будете пользоваться таким набором.
Для примера взял 20 колонок, но можно и 30, если это максимальное число:
 Hidden text Widths27=80,30,40,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80
Headers27=C1\nC2\nC3\nC4\nC5\nC6\nC7\nC8\nC9\nC10\nC11\nC12\nC13\nC14\nC15\nC16\nC17\nC18\nC19\nC20
Contents27=[=autorun.C1]\n[=autorun.C2]\n[=autorun.C3]\n[=autorun.C4]\n[=autorun.C5]\n[=autorun.C6]\n[=autorun.C7]\n[=autorun.C8]\n[=autorun.C9]\n[=autorun.C10]\n[=autorun.C11]\n[=autorun.C12]\n[=autorun.C13]\n[=autorun.C14]\n[=autorun.C15]\n[=autorun.C16]\n[=autorun.C17]\n[=autorun.C18]\n[=autorun.C19]\n[=autorun.C20]
Options27=-1|1|96
Так как есть ограничение, то можно попробовать двигать окно данных, вернее сдвигать его построчно или от источника к источнику.
 Hidden text TOTALCMD#BAR#DATA
60021
%COMMANDER_EXE%
Сброс колонок|Alt - сдвиг строк|Ctrl - сдвиг источника|Shift - Тип шаблона / Реверс
-1
Кнопка будет управлять движением. Alt - сдвиг на 20 строк. Alt+Shift - сдвиг назад на 20 строк. Ctrl - сдвиг на следующий источник. Ctrl+Shift - сдвиг на предыдущий источник. Простое нажатие на кнопку сбрасывает номер строки и номер источника в 0. Вызов с Shift меняет тип подсказки.
Глобальные переменные желательно объявить сразу после Pragma AutorunPluginFields "C1:::JoinHint" в файле autorun.cfg, иначе при старте ТС могут появляться сообщения об ошибках (если пользовательские колонки уже загружены, а функция JoinHint начинает выполняться раньше, чем переменные были инициализированы):
Code: | Global MI_LINE = 0, MI_SOURCE = 0, MI_HINT = 1 |
Остальной код может быть в отдельном модуле:
 Hidden text Code: | RegisterCommand 60021 "MediaInfoFields"
Func MediaInfoFields(lParam)
Local b_SHIFT = IsPressed (0x10), b_CTRL = IsPressed (0x11), b_ALT = IsPressed (0x12)
IF b_SHIFT And Not (b_ALT Or b_CTRL) Then
MI_HINT += 1
If MI_HINT > 2 Then MI_HINT = 1
If MI_HINT = 1 Then
ShowHint("MediaInfo: ru.csv")
Else
ShowHint("MediaInfo: hint.txt")
Endif
Return
EndIf
Local nMode = 0
If b_CTRL Then
nMode = 2
If b_SHIFT Then
MI_SOURCE -= 1
If MI_SOURCE = 0 Then MI_LINE = 0
Else
MI_SOURCE += 1
EndIf
ElseIf b_ALT Then
If MI_SOURCE > 0 Then
ShowHint("Сдвиг невозможен: источник > 0")
Return
EndIf
nMode = 1
If b_SHIFT Then
MI_LINE -= 20
Else
MI_LINE += 20
EndIf
Else
MI_LINE = 0
MI_SOURCE = 0
EndIf
If MI_LINE < 0 Then MI_LINE = 0
If MI_SOURCE < 0 Then MI_SOURCE = 0
CommandExec cm_RereadSource
If nMode < 2 Then
ShowHint("Lines: " & MI_LINE)
Else
ShowHint("Source: " & MI_SOURCE)
EndIf
EndFunc
Func JoinHint(FileName, FieldIndex, UnitIndex)
If StrPos(FileGetAttr(FileName), "D") Then Return ""
Static pipe, line = 0
Static sLib = "MediaInfo" & (auX64 ? "" : "_i386") & ".dll"
Static hLib = DllCall("LoadLibrary", _
"wstr", COMMANDER_PATH & "\Utilities\MediaInfo\" & sLib, _
"ptr")
If hLib = 0 Then
Return "Error LoadLibrary " & sLib
EndIf
If FieldIndex = 1 Then
Local hMI = DllCall(sLib & "\MediaInfo_New", "ptr")
If hMI = 0 Then
Return "MediaInfo_New returned 0"
Endif
Local lng_MI ="file://" & COMMANDER_PATH & "\Utilities\MediaInfo\ru.csv"
DllCall(sLib & "\MediaInfo_Option", _
"ptr", hMI, "wstr", "Language", "wstr", lng_MI, _
"wstr")
If DllCall(sLib & "\MediaInfo_Open", _
"ptr", hMI, "wstr", FileName, _
"uint") <> 1 Then
DllCall(sLib & "\MediaInfo_Delete", "ptr", hMI)
Return "MediaInfo_Open failed to open file " & FileName
EndIf
DllCall(sLib & "\MediaInfo_Option", _
"ptr", hMI, "wstr", "Complete", "wstr", "0", _
"wstr")
If MI_HINT = 2 Then
DllCall(sLib & "\MediaInfo_Option", _
"ptr", hMI, _
"wstr", "Output", _
"wstr", "file://" & COMMANDER_PATH & "\Utilities\MediaInfo\hint.txt", _
"wstr")
Else
DllCall(sLib & "\MediaInfo_Option", "ptr", hMI, "wstr", "Output", "wstr", "", "wstr")
Endif
pipe = DllCall(sLib & "\MediaInfo_Inform", "ptr", hMI, "uint", 0, "wstr")
DllCall(sLib & "\MediaInfo_Delete", "ptr", hMI)
If MI_SOURCE > 0 Then
Local aPipe = List(), j, s = 0
aPipe.Text = pipe
For j = 0 To aPipe.Count - 1
If aPipe[j] = "" Then s += 1
If s = MI_SOURCE Then
MI_LINE = j + 1
Break
EndIf
Next
Free(aPipe)
Endif
Endif
Return TrimSpacesFix(StrPart(pipe, auLF, FieldIndex + MI_LINE))
EndFunc
|
Вряд ли это можно считать готовым решением, но как рабочий пример вдруг наведёт на какие-то другие мысли и идеи использования. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Sat May 03, 2025 14:29 Post subject: |
|
|
Orion9 wrote: | рабочий пример вдруг наведёт на какие-то другие мысли и идеи использования. |
Да, интересное решение, как уместить 60 столбцов в 20. Тогда не надо мучиться с форматированием. Я-то пошел по пути размещения 60 в 30. Но для этого надо как-то названия секций отделить в отдельный непарный столбец. При этом чтобы в хинтах названия секций присутствовали. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Sun May 04, 2025 12:53 Post subject: |
|
|
AkulaBig wrote: | Я-то пошел по пути размещения 60 в 30 |
Да можно и 30 сделать, не проблема. Но я не уверен, что от этого лучше станет: вывод больше похож на изучение дампа, со всеми вытекающими. Наверняка можно что-то ещё придумать, что облегчит работу с таким набором. Сделать, например, кнопку разворота на весь экран и обратно, чтобы видеть больше информации:
Code: | [em_toggle_panel_size]
cmd=%COMMANDER_PATH%\Tools\TCFS2\TCFS2.exe
param=/ef "tcm(if(sepPos < 45, 909, if(sepPos > 55, 909, 910)))" |
Но я всё же придерживаюсь, что отображение такого объёма излише. Попробуйте лучше плагин AnyTag и такой набор колонок:
Code: | Headers29=Tags\nTag Read\nTags Size\nBOF\nEOF\nArt\nID3v2\nUnknown
Contents29=[=anytag.Tag]\n[=anytag.Tag Read]\n[=anytag.Tag Size]\n[=anytag.Prepended]\n[=anytag.Appended]\n[=anytag.Covers]\n[=anytag.ID3v2 Encoding]\n[=anytag.ID3v2 Unknown] |
Размеры колонок и опции на усмотрение, файл шаблона anytag.any такого содержания:
 anytag.any 0=8|Tag|%_tag%
1=8|Tag Read|%_tag_read%
2=8|Tag Size|%_tag_size%
3=8|Album|%album%
4=8|Artist|%artist%
5=8|Album Artist|%albumartist%
6=8|Comment|%comment%
7=8|Genre|%genre%
8=8|Title|%title%
9=8|Track|%track%
9=8|Track (leading zeros)|[$num(%track%,2)]
10=8|Year|%year%
11=8|Composer|%composer%
12=8|Covers|%_covers%
13=8|Bitrate|%_bitrate%
14=8|Codec|%_codec%
15=8|Length|%_length%
16=8|Length (in seconds)|%_length_seconds%
17=8|Mode|%_mode%
18=8|Samplerate|%_samplerate%
19=8|Extra information|%_extra%
20=8|Appended|%_tag_size_appended%
21=8|Prepended|%_tag_size_prepended%
22=8|ID3v2 Encoding|%_id3v2_character_encoding%
23=8|ID3v2 Unknown|%_id3v2_unknown_frames%
24=8|Tags|$list($char(10),: ,)
Это только пробная версия, т.к. плагин ещё нужно изучить, но информацию о тегах он показывает интересно. Всё сразу видно: какие тэги, сколько байт они занимают, сколько байт в начале файла, сколько в конце, сколько обложек в тэгах, какая кодировка ID3v2, есть ли неизвестные фремы ID3v2. В общем, имхо, больше и не нужно. Единственное, к чему можно привлечь Autorun, использовать функцию SizeFormat(), чтобы отформатировать байты. Хотя у плагина есть и свои скриптовые функции, но их может не хватить. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Sun May 04, 2025 14:18 Post subject: |
|
|
Orion9 wrote: | Попробуйте лучше плагин AnyTag и такой набор колонок |
Я все никак не могу понять. Зачем мне AnyTag, если и сейчас у меня через TCMediaInfa выводится заданный набор колонок? Вся соль-то в том, чтобы вывести все заполненные поля, а не заданные. Из которых многие будут пустыми. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Mon May 05, 2025 18:20 Post subject: |
|
|
Orion9
Наконец-то я алгоритм понял для создания пользовательских колонок, как хотелось мне. И понял, что технически это возможно, но визуально не годится. Если для активной строки будет отображаться заголовок, не соответствующий другим строкам, ни один пользователь этого не поймет.
Поэтому я пошел по самому простому пути. Просто вывожу в колонку два поля из Autorun и все. Конечно намного было-бы лучше, когда каждая колонка из Autorun выводится в свою пользовательскую колонку. Но раз более 30 колонок не может быть. Придется смириться.
Можете конечно посмотреть, раз вы хотели, но там ничего интересного нет. Чисто визуально оценить. Ну и я пока не переработал остальные наборы. Они будут соответствовать информации в хинтах. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Sat May 10, 2025 12:47 Post subject: |
|
|
AkulaBig wrote: | Поэтому я пошел по самому простому пути. Просто вывожу в колонку два поля из Autorun и все. |
Большой погоды это не сделало. Вывод по-прежнему не смотрится и остаётся тяжёлым для восприятия: если просматривать список, который содержит одинаковые параметры кодирования и похожие по струкруре теги (например, дискография отдельных исполнителей или студийные сборники песен), какую-то пользу ещё можно извлечь, в остальных случаях найти применение такому набору очень трудно.
AkulaBig wrote: | Можете конечно посмотреть, раз вы хотели, но там ничего интересного нет. Чисто визуально оценить. |
Скачал и посмотрел всю сборку. Останавливаться на достигнутом, конечно, не нужно. Нужно и дальше навешивать фич при помощи Autorun и выводить сборку в топ. И всё же для начала, будь я на вашем месте, я сделал бы верхнее меню. |
|
Back to top |
|
 |
|
|
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
|