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 ... 238, 239, 240
 
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: 616

Post (Separately) Posted: Sun Sep 27, 2026 12:01    Post subject: Reply with quote

Orion9 wrote:
Может я не ту версию скачал

У меня одна версия.
Orion9 wrote:
Для работы кнопки по алгоритму, который был выше, ControlSetMouseAction должен вызываться (назначаться) только один раз

Я это уже понял.
Orion9 wrote:
Вместо этого кнопка просто меняет состояние глобальной переменной

Ну у меня значение из инишника читается. Переменная не позволяет запомнить значение.
Ладно, надеюсь все равно разберусь. Я уже понял, что невнимательно разобрался с алгоритмом с первого раза. Назначение должно происходить один раз.

Добавлено спустя 56 минут:

Orion9
Ну все, разобрался. Все отлично работает. Спасибо за помощь.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1267

Post (Separately) Posted: Sun Sep 27, 2026 13:26    Post subject: Reply with quote

AkulaBig wrote:
Я уже понял, что невнимательно разобрался с алгоритмом с первого раза

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

Более простая и правильная версия функции хука (хотя насколько она правильная еще вопрос)
 Hidden text

Но все работает лучше. Плюс бонус с миганием подсказки о выключеном котроле при долгом зажатии. Теперь сразу видно, когда он срабатывает. Двойной Ctrl тоже работает лучше: пока не видел больше несрабатываний. Если бы еще мультяшную подсказку доделать со страницами и прочим, вообще был бы шик. Но на это пока у меня времени наверное не будет.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 616

Post (Separately) Posted: Sun Sep 27, 2026 13:56    Post subject: Reply with quote

Orion9
Надо будет посмотреть. У меня-же важный вопрос с зависанием подсказок из ExifTool так и не решен. Может этот алгоритм как-то поможет.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1267

Post (Separately) Posted: Sun Sep 27, 2026 14:37    Post subject: Reply with quote

AkulaBig wrote:
У меня-же важный вопрос с зависанием подсказок из ExifTool так и не решен

Тут без Loopback не получится. Но он гуляет где-то в ночи, завидую ему.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 616

Post (Separately) Posted: Sun Sep 27, 2026 16:06    Post subject: Reply with quote

Orion9 wrote:
Тут без Loopback не получится.

Да не, я не про косяки с разрядностью. Проблема в скорости ExifTool. Она и сама не быстрая и количество обрабатываемой ей инфы для некоторых расширений огромно. В качестве пользовательских столбцов она норм работает. А подсказки-же надо быстро выводить. И вот тут возникает проблема. Если навести и ждать, пока подсказка появится, то-есть скрипт отработает, все норм. А если быстро перемещать от файла к файлу, ТС вешается наглухо. А то и вовсе крашит. Я думаю надо как-то прерывать обработку скрипта, если курсор мыши с него ушел. Скорей всего без хуков здесь не обойтись. Но пока даже идей нет.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1267

Post (Separately) Posted: Mon Sep 28, 2026 12:10    Post subject: Reply with quote

AkulaBig
Похоже Loopback все предусмотрел Laughing Есть же отложенная загрузка полей. После Pragma AutorunPluginFields попробуйте поставить SetFieldsParam("Delayed", 1), кажись работает. Я только не понял почему в два прохода, но панель обновляется как надо и в ТС х64.

AkulaBig wrote:
А подсказки-же надо быстро выводить

Да вроде подсказка Exiftool быстро выводится за счет того, что процесс висит в памяти. Я чуть позже еще напишу.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 616

Post (Separately) Posted: Mon Sep 28, 2026 13:27    Post subject: Reply with quote

Orion9 wrote:
Да вроде подсказка Exiftool быстро выводится

Не в Exiftool дело, а в огромном количестве данных, которое содержится в обрабатываемых ЕТ расширениях. Представьте, в djvu хранится инфа о каждой странице. Если вам интересно, я могу включить подсказки от ЕТ в сборке, чтобы вы протестировали. У меня они давно сделаны, но сейчас отключены до устранения проблем.
Orion9 wrote:
SetFieldsParam("Delayed", 1)

Спасибо, надо будет попробовать.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1267

Post (Separately) Posted: Mon Sep 28, 2026 14:01    Post subject: Reply with quote

AkulaBig wrote:
Представьте, в djvu хранится инфа о каждой странице.

Это не важно на самом деле. Если процесс exiftool.exe остается висеть в памяти и общение с ним происходит через stdout/stdin, скорость - космос. Ничем не медленнее, чем Medainfo.dll. И форматы файлов не играют большой роли - выхлоп происходит мгновенно хоть на mp3, хоть на jpeg, хоть на dll и exe.

 Hidden text


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



Joined: 03 Dec 2008
Posts: 616

Post (Separately) Posted: Mon Sep 28, 2026 14:57    Post subject: Reply with quote

Orion9 wrote:
Это не важно на самом деле.

Я вам уже приводил пример запароленного файла. Вы назвали это частным случаем Laughing И таких файлов полно, на которых подсказка не мгновенно появляется. Не надо тестить файлы изображений и медиа. Тестите файлы документов. На файлах изображений можно сравнить скорость работы MI и ET, но никак ни скорость обработки файлов разных форматов. Если надо, я подготовлю вам небольшой архивчик для тестирования тяжелых файлов.
Блин, представляете. Я-же написал, что и на оф. форуме вопрос про вкл/откл меню задал. Сами понимаете, там в основном Флешер темой владеет. И он мне подсказал ответ. Но его вариант у меня не работал, к тому-же он был для хоткея с клавиатурой. А тут он поинтересовался результатами и я решил проверить. И его вариант работает! И причем как для мыши, так и для клавы. И этот вариант:... ту-ту, бум-бум, напряженная пауза - Return -1! В справке про это написано, но из-за неправильного алгоритма это не работало. Сейчас при правильном алгоритме все работает!

Добавлено спустя 2 часа 26 минут:

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



Joined: 01 Jan 2024
Posts: 1267

Post (Separately) Posted: Mon Sep 28, 2026 20:13    Post subject: Reply with quote

AkulaBig wrote:

Я вам уже приводил пример запароленного файла. Вы назвали это частным случаем

Я потом вспомнил. И правда было такое Laughing

Именно для таких случаев и есть таймаут. Когда exiftool.exe не успевает выдавать информацию (по тем или иным причинам), то в тексте подсказки это должно быть как-то видно. А причины могут быть разные, не только зашифррованные и запароленные книги. Это может быть и просто медленный накопитель или битый файл или перегруженный процессор (конкретно в этот период). В общем таймаут в любом случае должен быть.

Мне пришлось немного постараться, чтобы его создать, поэтому на картинке чуть-чуть вырезано

 Hidden text


AkulaBig wrote:
Выложите, пожалуйста. свой код. У меня полностью оформлен. То-есть с перекодировкой крякозябров. Может как-то с этим связано. В общем надо сравнивать с вашим кодом.

Код всё тот же. Ничего с тех пор не поменялось, кроме недавнего хука. Alt+F12 переключает поля подсказки на ExifHint. Кракозабры, как вы видите, есть (подсказка не до конца доделана), но тормоза связаны не с ними. Можете на сборке попробовать, там все настроено, кроме последнего хука, поэтому подсказка в сборке активируется по CapsLock для ТС х64.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 616

Post (Separately) Posted: Mon Sep 28, 2026 20:32    Post subject: Reply with quote

Orion9 wrote:
Код всё тот же

Понятно. Придется по новой разбираться. Вроде-же на его основе я и делал. Сейчас проверил в вашей сборке. Даже на документах летает. Насчет тайм-аута потом буду спрашивать. Очень интересно, но сейчас надо с существующим кодом разобраться.

Добавлено спустя 1 час 37 минут:

Orion9
Вроде первоначально разобрался, запустил. Но у вас там через доп. файлы, а не через входной поток. Это меня и смутило. Думал вы через входной поток сделали, раз про него писали. Через входной поток у меня тоже есть, но через DllCall. Через файлы вроде быстро работает. Буду разбираться, почему у меня с задержкой запускается.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 616

Post (Separately) Posted: Tue Sep 29, 2026 06:35    Post subject: Reply with quote

Orion9
Нашел, что скорость замедляет. Для чего нужно условие If FieldIndex = 1? Без него и появляются тормоза.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1267

Post (Separately) Posted: Tue Sep 29, 2026 13:05    Post subject: Reply with quote

AkulaBig wrote:
там в основном Флешер

Видимо, хорошо ему там за пазухой у Гислера, раз сюда возвращаться не хочет.

AkulaBig wrote:
ту-ту, бум-бум, напряженная пауза - Return -1

AkulaBig wrote:
И причем как для мыши, так и для клавы

Наверное, все же только для клавы. Return -1 для ControlSetMouseAction ничего не делает.
Code:
ControlSetMouseAction /L /K:C /K:S 0 "CompareToolShowMenu"

Func CompareToolShowMenu()
    Return -1
EndFunc

И ключа /S у этой команды тоже нет.

AkulaBig wrote:
Думал вы через входной поток сделали, раз про него писали.

Я тоже так думал, а оказалось, что через файл Laughing

Код для stdin/stdout от болвана вроде был, но почему-то я не стал его делать в подсказке. Видимо, решил, что и так сойдет )

Подсказка недоделанная. Иногда в ней проскальзывает что-то лишнее (на последней картинке это хорошо видно). Возможно, как раз из-за временного файла, который не успевает удаляется, или из-за того, что два тотала были в этот момент запущены в одном и том же режиме, надо разбираться.

Как я это вижу, выхлоп нужно разобрать. А для этого нужно очень серьезно разобраться с тегами: какие из них нужны, а какие нет. В идеале можно сделать разделение панели на части и дополнительные модификаторы для фильтрации нужных полей. Например сейчас выхлоп такой.
 Hidden text

Или такой
 Hidden text

Но что в нем действительно может быть нужно - вопрос большой. Разобрать-то этот выхлоп несложно, гораздо сложнее определиться, что и как выводить. Можно, конечно, просто все сгруппировать и устранить кракоябры, типа
Code:
[MPEG]         
   Версия MPEG аудио:  1
   Уровень аудио:  3
   Битрейт аудио:  320 kbps
   Частота дискретизации:  44100
   ...
   ...
[ID3]           
   Band:  Òàíÿ Áóëàíîâà è ãð.Ëåòíèé ñàä
   Название:  Ïðîñòè ìåíÿ
   ...
   ...
[Composite]     
   Продолжительность:  0:03:49 (approx)
   ...
   ...

Но это еще проверить нужно, будет ли от этого польза.

Скорее всего, выводить нужно только важные теги, но для каждого пользователя и конкретного формата они свои, и в этом большая сложность. Можно, конечно, сделать дополнительный вывод всего сразу по модификаторам, но тогда информации будет слишком много. В общем хз как это делать Laughing

AkulaBig wrote:
Для чего нужно условие If FieldIndex = 1?

Поля, объявленные в Pragma AutorunPluginFields, могут вызывать одну и ту же функцию. Чтобы внутри функции можно было отличить из какого поля происходит вызов используется параметр FieldIndex. Объявив три таких поля "C1:::MediaHint" "C2:::MediaHint" "C3:::MediaHint", получится три индекса. Когда подсказка запускается происходит вызов 60-ти полей. Поэтому только для первого поля формируется выхлоп и сохраняется в переменной для последующего разбора в остальных полях.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 616

Post (Separately) Posted: Tue Sep 29, 2026 16:30    Post subject: Reply with quote

Orion9 wrote:
AkulaBig wrote:
там в основном Флешер

Видимо, хорошо ему там за пазухой у Гислера, раз сюда возвращаться не хочет.

А разве он здесь не в бане?
Orion9 wrote:

Наверное, все же только для клавы. Return -1 для ControlSetMouseAction ничего не делает.

Да, с этим разобрались. Но так как у меня сочетание для мыши нигде не применяется, я оставил его. Главное меню отключается. Почему-то у вас этот хоткей для мыши выделяет файлы.
Orion9 wrote:

Код для stdin/stdout от болвана вроде был, но почему-то я не стал его делать в подсказке. Видимо, решил, что и так сойдет )

Он у вас есть в варианте для DllCall. Я его тестировал, работает медленнее, чем через файлы.
Orion9 wrote:

Подсказка недоделанная.

У меня она полностью рабочая сделана на AutoIt. Но есть проблема перехлеста при одновременном выводе колонок и подсказки. Эту проблему я и пытаюсь решить с помощью Авторан. У нас ведь с MI тоже эти операциип разнесены. Подсказки через Авторан, а колонки через плагин. Но тут эта дурацкая опция StayOpen не дает нормально решить вопрос.
Orion9 wrote:

AkulaBig wrote:
Для чего нужно условие If FieldIndex = 1?

Поля, объявленные в Pragma AutorunPluginFields, могут вызывать одну и ту же функцию. Чтобы внутри функции можно было отличить из какого поля происходит вызов используется параметр FieldIndex. Объявив три таких поля "C1:::MediaHint" "C2:::MediaHint" "C3:::MediaHint", получится три индекса. Когда подсказка запускается происходит вызов 60-ти полей. Поэтому только для первого поля формируется выхлоп и сохраняется в переменной для последующего разбора в остальных полях.

Просто без этого тоже работает, но очень медленно.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 616

Post (Separately) Posted: Tue Sep 29, 2026 23:03    Post subject: Reply with quote

Orion9
Вот код по созданию подсказки из ET с применением DllCall с потоками. За основу брал ваш, но приделал перевод крякозябров и сделал отдельным. Он работает жутко медленно. Я не могу тестировать его с одновременным использованием просмотра пользовательских колонок. Теперь я понимаю, что скорей всего проблема в отсутствии условия If FieldIndex = 1 Then. Но когда я пытаюсь дописать это условие, выводится только первая запись. Подскажите, пожалуйста, куда правильно вставить это условие, чтобы все заработало.
 Hidden text

Кстати, с применением временных файлов тоже не могу до конца доделать по этой-же причине. Но там уже ясно, что вывод перехлестывается с выводом колонок и все зависает. Но чтобы дальше тестировать, тоже надо решить проблему с If FieldIndex = 1 Then. Иначе скорость очень маленькая.
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 ... 238, 239, 240
Page 240 of 240

 
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