View previous topic :: View next topic |
Author |
Message |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Sun Apr 27, 2025 05:48 Post subject: |
|
|
Orion9 wrote: | не понятно, есть в оригинале кракозябры или нет |
Для этого и нужна проверка. В скрипте на au3 так-же сделано. Результат выдается в зависимости от того, есть в строке крякозябры или нет.
Orion9 wrote: | Но я бы всё-таки оставил ручное переключение или по крайней мере сохранил такую возможность |
Переписать ведь не долго.
Orion9 wrote: | код можно было свести до варианта без DllCall |
Но с dll нисколько не хуже.
Orion9 wrote: | плагин устарел |
Я рассчитывал на его дополнительные функции, но понял, что он совершенно не нужен.
Orion9 wrote: | посмотрите функцию GetSuperWdx в модуле Plugin.aucfg |
Хорошо, посмотрю.
Orion9 wrote: | У вас нет ни одного фильма с несколькими дорожками? |
Я их не коллекционирую. Посмотрел и удалил. Из имеющихся под рукой нет ни одного.
Orion9 wrote: | тогда могу продемонстрировать на своём |
Я смысл-то понял. А имел ввиду, что наверняка это и так будет отображаться в подсказке. Правда 7 дорожек в подсказку не влезут. Они-же будут всю инфу для каждой дорожки отображать. Поэтому я и оставил код для раздумий. Но использование клавиши Caps может не подготовленного человека до инфаркта довести. Вдруг раз, и другие буковки появились. Поэтому это как-то по другому должно вызываться.
Добавлено спустя 38 минут:
Orion9 wrote: | посмотрите функцию GetSuperWdx |
Посмотрел. По моему полная замена SuperWDX. А я понял, что мне вообще SuperWDX не нужен, так как он для другого предназначен. Он нужен для объединения информации из разных плагинов, а мне нужно вывести информацию из одного плагина, просто особым образом отформатированную, чего SuperWDX и не умеет.
В общем сейчас у меня созрел план, что просто надо в кастомных колонках делать два набора колонок. Один нормальный, пусть даже и из нескольких плагинов (я в хинтах тоже добавил инфу не только из MI). А во втором наборе типа "Аудио из MI" выводить чохом 60 полей. Или 30 сдвоенных. Надо еще посмотреть, сколько полей может вывести ТС. У него есть ограничения.
А вашу GetSuperWdx возможно надо будет задействовать в дальнейших планах. Ведь со временем надо будет прикручивать BASS-библиотеку. Возможно что-то еще. Ведь возможности MI ограничены форматами, которые она понимает. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Sun Apr 27, 2025 12:10 Post subject: |
|
|
AkulaBig wrote: | Результат выдается в зависимости от того, есть в строке крякозябры или нет. |
Это, на мой взгляд, должно быть опциональным. Я, например, хотел бы видить кракозябры, чтобы понимать, что они прежде всего там есть и что такой тэг нужно перекодировать в юникод.
AkulaBig wrote: | Переписать ведь не долго. |
Конечно, не долго. Даже в таком виде подсказку рано считать законченной. Ещё будите переодически к ней возвращаться. Например, сейчас она вспылывает над каталогами, что, на мой взгляд, не требуется. Можно добавить проверку и возврат от каталогов:
Code: | If StrPos(FileGetAttr(FileName), "D") Then
Return "<Dir>"
Endif |
Или просто возвращать пустое значение.
AkulaBig wrote: | Но с dll нисколько не хуже. |
Я бы сказал, даже лучше. Но хотелось бы, чтобы методы объекта Buffer работали как положено. Надеюсь, Loopback это поправит.
AkulaBig wrote: | Поэтому я и оставил код для раздумий. |
Как я писал, шаблон hint.txt пока только тестовый и больше для примера. Я к нему еще вернусь, т.к. мне не нравится, что в нём разрывается строка Video #0. Можно сделать несколько разных шаблонов, для разных целей и нужд. Поле для фантазий тут огромное.
AkulaBig wrote: | Но использование клавиши Caps может не подготовленного человека до инфаркта довести. Вдруг раз, и другие буковки появились. Поэтому это как-то по другому должно вызываться. |
У меня сейчас вызывается комбинацией CapsLocK с модификаторами Ctrl, Shift и Alt. Но можно не ограничиваться одними клавишами и продублировать функционал тумблерами, кнопками и индикаторами на панели инструментов. Ну и чтобы пользователь не чертыхался лишний раз, всё должно быть соответственным образом документировано.
AkulaBig wrote: | а мне нужно вывести информацию из одного плагина, просто особым образом отформатированную, чего SuperWDX и не умеет. |
Зато это умеет Autorun, и очень хорошо. Как я понимаю, вам нужен объект "Plugin" и "Дополнительные поля". В справке хорошо про них расписано.
AkulaBig wrote: | Надо еще посмотреть, сколько полей может вывести ТС. У него есть ограничения. |
Есть. Loopback о них как-то писал, но я, если честно, забыл. Вероятно, 60 полей - и есть те самые ограничения.
AkulaBig wrote: | Ведь со временем надо будет прикручивать BASS-библиотеку. Возможно что-то еще. |
Думаю, прикрутить проблем не будет: два последних примера с uchardet.dll и MediaInfo.dll это показывают. Но, может быть, вы захотите сделать отдельный wdx-плагин и пополнить свою коллекцию плагинов? ) |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Sun Apr 27, 2025 14:48 Post subject: |
|
|
Orion9 wrote: | Я, например, хотел бы видить кракозябры |
Как вы глубоко копаете
Orion9 wrote: | Например, сейчас она вспылывает над каталогами, что, на мой взгляд, не требуется. |
Это-же стандартное поведение подсказки. Всплывает дата создания каталога.
Orion9 wrote: | чтобы методы объекта Buffer работали как положено |
Это несомненно.
Orion9 wrote: | кнопками и индикаторами на панели инструментов |
Для разных вариантов это единственный выход. Но такие вещи надо делать под чьи-то нужды. Свои или пользователей. А на ровном месте выдумывать варианты не так уж и просто.
Orion9 wrote: | Как я понимаю, вам нужен объект "Plugin" и "Дополнительные поля". |
Скорей всего мне достаточно просто перечислить все поля в колонках, но посмотрю.
Orion9 wrote: | может быть, вы захотите сделать отдельный wdx-плагин и пополнить свою коллекцию плагинов? |
Кто его знает, что мне в голову взбредет. Сейчас висит недоделанным плагин для просмотра электронных книг. Автор программы не хочет сам реализовать крайне необходимую для плагина опцию, а предлагает сделать это мне. Если он все-же решится скинуть мне исходники, это опять на неопределенное время придется забросить Autorun. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Sun Apr 27, 2025 18:13 Post subject: |
|
|
AkulaBig wrote: | Как вы глубоко копаете |
Ну, это вообще-то необязательно, хотя опция не помешала бы, тем более сделать её не так сложно. Создать в ini-файле ключ, например HintFixCodepage=1, который будет считываться при запуске и меняться во время работы отдельной кнопкой-переключателем желательно с индикацией текущего статуса в иконке на главной панели инструментов - это будет круто.
AkulaBig wrote: | Это-же стандартное поведение подсказки. Всплывает дата создания каталога. |
У меня всплывает "MediaInfo_Open failed to open file", а после наведения на любой файл, над каталогами начинает всплывать подсказка от последнего файла.
AkulaBig wrote: | А на ровном месте выдумывать варианты не так уж и просто. |
Зато Autorun позволяет воплотить любую хотелку. Если по какой-то причине не подходят комбинации клавиш, то можно использовать кнопоки-переключатели, лучше которых, на мой взгяд, ничего нет. Но и ими можно себя не ограничивать: есть бар-файлы, контекстное меню и клики мыши с модификаторами. Можно так нарядить свой Total Commander, как Гислер не наряжает свою рождественскую ёлку
AkulaBig wrote: | Скорей всего мне достаточно просто перечислить все поля в колонках, но посмотрю. |
Да, собственно, примеры отформатированного вывода информации из плагинов есть, всё в той же GetSuperWdx:
 Hidden text Code: | Func GetPicsInfo(FileName)
Local s
obj = Plugin("wdx4i")
If ERROR = 0 then
obj.FileName = FileName
# wdx4i.pixw, wdx4i.pixh, wdx4i.orient, wdx4i.depth
s = obj.GetValue(5) & " x " & obj.GetValue(6) & " , " & obj.GetValue(7) & " , " & obj.GetValue(13)
Free(obj)
Else
s = "Plugin error " & ERROR
Endif
Return s
EndFunc |
С Autorun можно вывести что угодно и куда угодно, главное придумать "что" и "куда" )
AkulaBig wrote: | Автор программы не хочет сам реализовать крайне необходимую для плагина опцию, а предлагает сделать это мне. |
Это же хорошо. Станете не только автором плагинов, но и соразработчиком софта. Если оно вам, конечно, надо. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Sun Apr 27, 2025 19:43 Post subject: |
|
|
Orion9 wrote: | У меня всплывает "MediaInfo_Open failed to open file", а после наведения на любой файл, над каталогами начинает всплывать подсказка от последнего файла. |
У меня стандартная подсказка, которая не зависит от наличия Autorun. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Sun Apr 27, 2025 20:20 Post subject: |
|
|
AkulaBig
Не знаю. Значит, есть какие-то причины. Разбираться с этим сейчас не хочется. Но если у меня такое появилось, значит и вас рано или поздно тоже может появиться при определенных условиях. Лучше всё-таки поставить проверку на каталог и обрабатывать для него вывод отдельно. Сделал пока так:
Code: | Func JoinHint(FileName, FieldIndex, UnitIndex)
If StrPos(FileGetAttr(FileName), "D") Then Return "" |
Помогло вроде. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Sun Apr 27, 2025 20:56 Post subject: |
|
|
Orion9 wrote: | Но если у меня такое появилось, значит и вас рано или поздно тоже может появиться при определенных условиях. |
Это из серии лучше сразу соломки подстелить? Я предпочитаю устранять проблемы по мере их появления.
Я наконец-то понял, чего мне хочется. Вот-бы названия пользовательских колонок брать из Autorun. Получится C1 в название, C2 в значение. На первый взгляд такое возможно. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Mon Apr 28, 2025 10:10 Post subject: |
|
|
Orion9
Дошли руки потестить uchardet. У меня на Вин 11 с последними обновлениями, ТС последний - не работает. Не работает и в вашей сборке. Через библиотеку (в вашей сборке ф-я CharDetect) если уже находишься в папке с тестовыми файлами, показывает кодировку и при попытке перейти в другую папку намертво зависает. Через exe (EncDetect) работает, но очень-очень медленно. Не вывод инфы, хотя и он не быстр. А именно попытка перейти в другую папку. Использовать в реальной сборке не получится.
Может быть посмотрите, в чем проблема. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Mon Apr 28, 2025 12:09 Post subject: |
|
|
AkulaBig wrote: | Это из серии лучше сразу соломки подстелить? |
Можно и так сказать. Считайте, что это был первый баг-репорт.) И конечно же, имхо, лучше подстелить соломку.
AkulaBig wrote: | Вот-бы названия пользовательских колонок брать из Autorun. |
Одно из немногих, чем я не пользовался в Autorun, функция "SetFieldsParam". Посмотрите. Может она вам пригодится. Хотя не до конца понял, что именно вам требуется сделать.
AkulaBig wrote: | Не работает и в вашей сборке. |
Кажется, в сборке дополнительного поля "autorun.CharSet" не было ни в секции CustomFields, ни в HintsCustomField, хотя сама функция "CharDetect" есть в модуле Plugin.aucfg, и в рабочем ТС я ей регулярно пользуюсь, главным образом, в хинте к текстовым файлам. Но сейчас проверил: на Win11 и ТС 11.51 проблемы не обнаружил. Это плохо. Без повторения проблемы, как вы понимаете, исправить будет сложно.
Можно попробовать поставить несколько OutputDebugString и посмотреть на каком шаге зависает в окне отладчика:
 Hidden text Code: | Func CharDetect(FileName, FieldIndex, UnitIndex)
OutputDebugString("CharDetect: Step=1 FileName=" & FileName)
Static GENERIC_READ = 0x80000000, _
OPEN_EXISTING = 3, _
FILE_SHARE_READ = 1, _
FILE_ATTRIBUTE_NORMAL = 128
Static buf = Buffer(10240)
Static sLib = "uchardet" & (auX64 ? "" : "_x86") & ".dll", _
hLib = DllCall("LoadLibrary", "wstr", COMMANDER_PATH & "\Ini\Tools\Libs\" & sLib, "ptr")
If StrPos(FileGetAttr(FileName), "D") Then Return "<Dir>"
If hLib = 0 Then Return "Error LoadLibrary " & sLib
OutputDebugString("CharDetect: Step=2")
Static hUC = DllCall(sLib & '\uchardet_new', 'ptr:cdecl')
If hUC = 0 Then
Return "uchardet_new returned 0"
Endif
DllCall(sLib & '\uchardet_reset', 'ptr', hUC, 'cdecl')
OutputDebugString("CharDetect: Step=3")
Local bytes = 0
Local fs = FileGetSize(FileName)
buf.Zero()
If fs > buf.Size Then fs = buf.Size
Local hFile = DllCall("CreateFileW", "wstr", FileName, _
"dword", GENERIC_READ, _
"dword", FILE_SHARE_READ, _
"ptr", 0, _
"dword", OPEN_EXISTING, _
"dword", FILE_ATTRIBUTE_NORMAL, _
"ptr", 0, _
"handle")
OutputDebugString("CharDetect: Step=4")
If hFile > 0 Then
Local bRead = DllCall("ReadFile", "handle", hFile, _
"ptr", buf.ptr, _
"dword", fs, _
"dword*", @bytes, _
"ptr", 0, _
"bool")
DllCall("CloseHandle", "handle", hFile)
If Not bRead Then Return "ReadFile failed"
If bytes = 0 Then Return "ReadFile fetched 0 bytes"
Else
Return "CreateFileW failed"
Endif
OutputDebugString("CharDetect: Step=5")
Local Res = DllCall(sLib & '\uchardet_handle_data', 'ptr', hUC, 'ptr', buf.ptr, 'uint', bytes, 'int:cdecl')
If Res > 0 Then
Return "uchardet_handle_data returned " & Res
Endif
OutputDebugString("CharDetect: Step=6")
DllCall(sLib & '\uchardet_data_end', 'ptr', hUC, 'cdecl')
#DllCall('uchardet\uchardet_delete', 'ptr', hUC, 'cdecl')
OutputDebugString("CharDetect: Step=7")
Res = DllCall(sLib & '\uchardet_get_charset', 'ptr', hUC, 'str:cdecl')
# Ctrl - отобразить количество прочитанных байт
Res = (IsPressed (0x11) ? "read: " & bytes : "") & ' ' & Res
OutputDebugString("CharDetect: Step=8")
Return Res
EndFunc |
На выходе должно быть что-то вроде:
Code: | [9624] CharDetect: Step=1 FileName=C:\Portable\TC 11.50\LANGUAGE\WCMD_RUS.LNG
[9624] CharDetect: Step=2
[9624] CharDetect: Step=3
[9624] CharDetect: Step=4
[9624] CharDetect: Step=5
[9624] CharDetect: Step=6
[9624] CharDetect: Step=7
[9624] CharDetect: Step=8
[9624] CharDetect: Step=1 FileName=C:\Portable\TC 11.50\LANGUAGE\WCMD_RUS.MNU
[9624] CharDetect: Step=2
[9624] CharDetect: Step=3
[9624] CharDetect: Step=4
[9624] CharDetect: Step=5
[9624] CharDetect: Step=6
[9624] CharDetect: Step=7
[9624] CharDetect: Step=8 |
Если зависнет, будет интересно посмотреть на каком шаге.
AkulaBig wrote: | Через exe (EncDetect) работает, но очень-очень медленно. |
Да это вообще не вариант. Я его оставил только, чтобы позже использовать как готовую наработку, если вдруг понадобится вывести что-нибудь из консольной утилиты в поля Autorun. Есть подозрение, что виснет на DllCall файловых функций Windows. По идее, надо переделать CharDetect, задействовав новую функцию плагина "FileRead".
P.S. По поводу ограничений, кажется, вспомнил: 60 - ограничение на количество строк в подсказке, кастомных полей может быть больше. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Mon Apr 28, 2025 13:56 Post subject: |
|
|
Orion9 wrote: | Хотя не до конца понял, что именно вам требуется сделать |
Сейчас для пользовательских колонок мы можем вывести информацию MI только в виде 60 колонок. То-есть и название параметра и его значение будут в одной строке. Было-бы клево значение С1 писать в заголовок, а C2 в значение. Но не получится, уже попробовал. Заголовки колонок, в отличии от оглавления обновляются без проблем. Но только командой Следующий набор колонок. Получается надо ее ввести, а потом вернуться назад. Конечно такое мелькание не пойдет.
Orion9 wrote: | Кажется, в сборке дополнительного поля "autorun.CharSet" не было ни в секции CustomFields |
Черт, полнейший провал. Теперь вы мне помогать перестанете. Ну да, я сам создал новый набор и добавил в него нужные поля.
Orion9 wrote: | Можно попробовать поставить несколько OutputDebugString и посмотреть на каком шаге зависает в окне отладчика |
Конечно буду пробовать отладить. Хотя опять-же не самая лучшая утилита. Есть плагин Штирлица для NPP. Интересно, можно-ли его подключить. Хотя опять-же прожка старая. Возможно тоже не выход.
Orion9 wrote: | Есть подозрение, что виснет на DllCall файловых функций Windows. |
У вас там странные типы переменных. Может из-за этого? Но тогда exe-шник летал-бы.
Orion9 wrote: | 60 - ограничение на количество строк в подсказке, кастомных полей может быть больше.
|
Я посмотрел. На количество наборов колонок есть ограничения. А на количество колонок не нашел. Если наступит надобность, уточню на ру-борде.
Добавлено спустя 2 часа 28 минут:
Orion9 wrote: | Если зависнет, будет интересно посмотреть на каком шаге. |
С пол тычка все отлично заработало. Спасибо за очередной шедевр. Значит дело было в коде все-же. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Mon Apr 28, 2025 19:26 Post subject: |
|
|
AkulaBig wrote: | Сейчас для пользовательских колонок мы можем вывести информацию MI только в виде 60 колонок. |
Кажется, я понял. Да, это надо проверять и смотреть, что из этого получится. Но если проблема только в мелькании, то стоит попробовать делать блокировку перерисовки окна на время операции, вдруг поможет. Как раз об этом было пару страниц назад.
Code: | SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
<переключение наборов колонок>
<переключение наборов колонок>
Sleep(50)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
Sleep(10)
WinRedraw(2) |
AkulaBig wrote: | Черт, полнейший провал. Теперь вы мне помогать перестанете. Ну да, я сам создал новый набор и добавил в него нужные поля. |
Черт, а ведь смешно у вас получилось) Я просто хотел уточнить, как говорится, на всякий.
AkulaBig wrote: | Хотя опять-же не самая лучшая утилита. |
Да нормальо вроде, мне нравится. Раньше и такого не было, приходилось мучиться с MsgBox для отладки.
AkulaBig wrote: | Я посмотрел. На количество наборов колонок есть ограничения. А на количество колонок не нашел. Если наступит надобность, уточню на ру-борде. |
Я просто не стал суетиться и искать старый пост. Думал, Loopback вот-вот появится и даст пояснения по спецификациям, но он опять куда-то пропал.
AkulaBig wrote: | Спасибо за очередной шедевр. |
Шедевр - это синоним Autorun, а я всего лишь его пользователь. Но учитывая, что у Гислера давно уже авторский блок и безыдейная стагнация, будущее видится только за Autorun. Как говорится, каждый кузнец своего счастья, а Autorun даёт возможность самим его ковать) |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Mon Apr 28, 2025 20:49 Post subject: |
|
|
Orion9 wrote: | Да, это надо проверять и смотреть, что из этого получится. |
Уже точно ничего не получится. Это ведь не перерисовка окна, а смена набора колонок для каждой строки. То-есть я должен в инишник CustomFields.ini прописать новый заголовок, применить команду Следующий набор и Предыдущий набор. И так для каждой строки. Я проверил кнопкой. Очень сильное мелькание.
Orion9 wrote: | Раньше и такого не было |
Я про uchardet. Есть и у нее ошибки в распознавании кодировок. С другой стороны она относительно свежая, так что есть надежда, что знает и современные кодировки.
Добавлено спустя 43 минуты:
Оказывается ТС позволяет создать только 31 пользовательскую колонку. Остальные просто не видит. Посмотрим, что на ру-борде еще скажут. Видимо придется делать пары. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Tue Apr 29, 2025 13:14 Post subject: |
|
|
AkulaBig wrote: | Я проверил кнопкой. Очень сильное мелькание. |
Самостоятельно что-то делать сейчас нет возможности. Если у вас есть готовый код, скиньте: посмотрю, потестирую.
AkulaBig wrote: | Я про uchardet. Есть и у нее ошибки в распознавании кодировок. |
К сожалению, не без этого. Что еще хуже, она лагает на файлах UTF-16, у которых нет BOM, хотя поддержка этой кодировки заявлена чуть ли не первой строкой.
Quote: | Q: UTF-16BE/UTF-16LE without BOM not supported (?)
A: I'd need to check the code again, but it is indeed possible that for these encoding, the BOM might be the only detection used. And if so, it definitely sucks and should be improved. I'm not sure how much time I can make to do this change, so I would gladly accept patches! |
Короче, всё, как у Маэстро, с его "многоязычной" поддержкой на титульной странице сайта.
AkulaBig wrote: | С другой стороны она относительно свежая, так что есть надежда, что знает и современные кодировки. |
Статус проекта не понятен. Обновлений не было 2,5 года, будут ли они ещё, тоже не понятно. Я тут подсмотрел у китайского товарища, надо будет сделать что-то подобное, когда руки доберуться, т.е. возврат кодовой страницы в формате CP:nnn, вместо iconv-совместимых имен.
AkulaBig wrote: | Посмотрим, что на ру-борде еще скажут. |
Да есть же наверняка у Гислера на сайте информация для разработчиков со всеми спецификациями для плагинов, или нету?  |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 270
|
(Separately) Posted: Tue Apr 29, 2025 14:41 Post subject: |
|
|
Orion9 wrote: | Если у вас есть готовый код, скиньте: посмотрю, потестирую. |
Простейшая команда для кнопки: cm_SrcNextCustomView,cm_SrcPrevCustomView
Orion9 wrote: | Обновлений не было 2,5 года |
Ну а Штирлицам и т.д. 10-15 лет.
Orion9 wrote: | Да есть же наверняка у Гислера на сайте информация для разработчиков |
Уже проверил руками и получил подтверждение - 32 столбца.
Это тоже не беда. Сделал я в одном столбце Параметр : Значение. Но вот беда. Парсер надо переделывать. Заголовки Общие, Аудио, Видео,... из MI у нас сейчас идут отдельным столбцом. Получается Столбец1, Столбец2 : Столбец3. А надо чтобы Общие и к нему пустой столбец приклеивался. Чтобы было Столбец1 : Столбец2, Столбец3 : Столбец4. Где Столбец1 - Общие, Аудио, Видео,... Столбец2 пустая строка. А далее Параметр : Значение. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 724
|
(Separately) Posted: Tue Apr 29, 2025 19:35 Post subject: |
|
|
AkulaBig wrote: | Простейшая команда для кнопки: cm_SrcNextCustomView,cm_SrcPrevCustomView |
Вы не проверяли предложенный код? Всё работает, не выдумывайте
Code: | RegisterCommand 60021 "SrcTest"
Func SrcTest(lParam)
SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
CommandExec cm_SrcNextCustomView
CommandExec cm_SrcPrevCustomView
Sleep(50)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
Sleep(10)
WinRedraw(2)
EndFunc |
Пока залез, вспомнил, о чём в прошлый раз забыл написать и о чём давно мысль мелькала. Можно просто повесить озвучку на CapsLock для более понятного переключения:
Code: | SetHotkeyAction /S /V:20 JoinHintLock 1
SetHotkeyAction /V:20 /K:S JoinHintLock 2
SetHotkeyAction /V:20 /K:C JoinHintLock 3
SetHotkeyAction /V:20 /K:A JoinHintLock 4
Func JoinHintLock(lParam)
Local file = COMMANDER_PATH & "\Ini\Sounds\R2D2\r2d2-01.wav"
If MediaInfoLock > 0 Then
MediaInfoLock = 0
file = COMMANDER_PATH & "\Ini\Sounds\R2D2\r2d2-02.wav"
Else
MediaInfoLock = 1
Endif
If lParam = 2 Then MediaInfoLock = 2
If lParam = 3 Then MediaInfoLock = 3
If lParam = 4 Then MediaInfoLock = 4
DllCall("Winmm.dll\PlaySoundW", "wstr", file, "ptr", 0, "dword", 131072 + 1)
Return -1
EndFunc |
Еще давно хотел это сделать, но вылетело из головы. Звучит шикарно. Танцев никаких. Глобальная переменная MediaInfoLock должна, конечно, называться CapsLock. Значение этой переменной обрабатывается в JoinHint, в зависимости от чего меняться подсказка.
AkulaBig wrote: | Ну а Штирлицам и т.д. 10-15 лет. |
Возможно есть и другие библиотеки. Как вы знаете, тот же AkelPad довольно неплохо определяет некоторые кодировки, UTF16 без BOM он точно определяет. Если бы автор редактора сделал отдельный ключ командной строки, который возвращал бы в stdout кодировку файла без запуска самого AkelPad, это было бы круто. А если бы оформил алгоритмы детекта в отдельную библиотеку, было бы ещё круче.
AkulaBig wrote: | Уже проверил руками и получил подтверждение - 32 столбца. |
Не густо, учитывая то, что вы хотите вывести всё, а там часто за сотню улетает. Правда я не понимаю зачем вам выводить всё, но может быть SetFieldsParam в этом поможет? |
|
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
|