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 ... 209, 210, 211
 
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: 906

Post (Separately) Posted: Wed Oct 15, 2025 19:29    Post subject: Reply with quote

Ну ладно, эксперементировать можно долго, поэтому вот более менее стабильная версия

 Clusters.aucfg

Модуль подключается стандартным образом, но кроме этого в файле основной конфигурации должны быть кастомные поля, глобальные переменные и инициализация из Clusters.ini.

 autorun.cfg

Пути можно подправить на свои, а в файле Clusters.ini есть описание настроек:

 Clusters.ini


В Wincmd.ini (или в секции редиректа) необходимо добавить поисковые шаблоны и поля кастомных колонок, а также можно повесить em_команду с кодом вызова подсказки на горячую клавишу (в примере Ctrl+F)

 Hidden text

 Hidden text

 Hidden text

Дополнительный набор по умолчанию называется File clusters, но его можно переименовать в usercmd.ini

 usercmd.ini


 Кнопка

Помимо информационно-развлекательных целей функционал может приносить пользу для поиска файлов в заранее указанных диапазонах. Но глубоких и длительных тестов пока не проводилось, поэтому могут быть косяки и ошибки.

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

А, забыл добавить. Меню можно вызвать по Alt+Win+F. Эта комбинация жестко прописана в модуль.
Back to top
View user's profile Send private message
A55555



Joined: 06 Feb 2011
Posts: 65

Post (Separately) Posted: Thu Oct 16, 2025 23:33    Post subject: Reply with quote

Orion9
Вы просили сообщить, если улучшить что-то в поиске файлов относящихся к торрент-файлу. Всё что в голову пришло за это время.

70501 как основной поиск, самый быстрый и самый логичный, т.к. как правило целиком скачивается всё.
На случай, если всё-таки подворачивается не частый случай частично скачанного торрента и т.п., чтоб предлагало попробовать найти через 70504 в случае без результативного поиска по 70501.
Если это не целое дело, требующее переворошить весь код.

А так всё тихо, не зависало.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 906

Post (Separately) Posted: Fri Oct 17, 2025 12:48    Post subject: Reply with quote

A55555 wrote:
Если это не целое дело, требующее переворошить весь код

Да нет, это не сложно. Просто вчера поздно увидел сообщение, не успел сделать и попробовать.

Замените этот блок (где-то с 205-ой строки) на новый:

 Hidden text

 Hidden text

Я не стал пркидывать весь модуль, там сейчас лишние строки есть для отладки, которые использовались для поиска причин зависаний. Могут еще пригодится, пока проблема не будет решена.
A55555 wrote:
А так всё тихо, не зависало

В ТС х32 действительно не виснет, и это хорошо. Можете пока этой версией Тотала попользоваться, думаю, разницы между 64-битной не заметите. Зато в 32-битном ТС подсказку можно по Ctrl вызывать.

P.S. Небольшое, но важное уточнение по поводу кластерной подсказки. Если в таблице появляются минуса, это нормально:

 Hidden text

Так представляется сжатие в NTFS или разреженные файлы.
 Hidden text

В Contig такие позиции помечаются как виртуальные:

 Hidden text

В модуле есть переменная bVirt. Если bVirt=1, отрицательные значения заменяются на слово "VIRT". Слово можно заменить на другое при необходимости.
Back to top
View user's profile Send private message
A55555



Joined: 06 Feb 2011
Posts: 65

Post (Separately) Posted: Sun Oct 19, 2025 00:33    Post subject: Reply with quote

Orion9 wrote:

Замените этот блок (где-то с 205-ой строки) на новый:

 Hidden text

 Hidden text

Я не стал пркидывать весь модуль, там сейчас лишние строки есть для отладки, которые использовались для поиска причин зависаний. Могут еще пригодится, пока проблема не будет решена.
A55555 wrote:
А так всё тихо, не зависало

В ТС х32 действительно не виснет, и это хорошо. Можете пока этой версией Тотала попользоваться, думаю, разницы между 64-битной не заметите. Зато в 32-битном ТС подсказку можно по Ctrl вызывать.

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

Да, я сейчас спокойно пользуюсь 32-битной версией, разницы пока не встречал, всё нормально.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 906

Post (Separately) Posted: Mon Oct 20, 2025 00:12    Post subject: Reply with quote

A55555 wrote:
Да, я сейчас спокойно пользуюсь 32-битной версией, разницы пока не встречал, всё нормально.

В wiki есть статья, которая хорошо описывает разницу между ТСх64 и ТСх32, на случай если будет интересно:
https://tckb.ru/wiki/total_commander_x64/
Очень хорошая статья. Всё просто по полочкам.

Loopback
Вопрос немного внезапный: а почему идентификаторы пунктов меню не перехватываются в WM_SYSCOMMAND? Сами пункты нормально создаются и отображаюся, но вот с их обработкой ничего не получается:
Code:
hMenu = DllCall("GetSystemMenu", "handle", AUTORUN_TCHANDLE, "bool", 0, "handle")
If hMenu > 0 Then
   DllCall("AppendMenuW", "handle", hMenu, "uint", 2048, "uint_ptr", 0, "ptr", 0)
   DllCall("AppendMenuW", "handle", hMenu, "uint", 0, "uint_ptr", 1000, "wstr", "About")
   DllCall("AppendMenuW", "handle", hMenu, "uint", 1, "uint_ptr", 1001, "wstr", "Settings...")
EndIf

# WM_SYSCOMMAND
SetMessageAction /P /DM 0x0112 "SysMenuCallback"    

Func SysMenuCallback(hWnd, uMsg, wParam, lParam)
    OutputDebugString(wParam)
    If wParam = 1000 Then
       MsgBox("About")
    ElseIf wParam = 1001 Then
       MsgBox("Settings")
    EndIf
EndFunc

Можно накидать интересных пунктов меню, включая логотип, который прикольно кстати смотрится:
Code:
hBitFile = DllCall("LoadImageW", "handle", 0, _
                                 "wstr", "d:\Temp\Images\logo.bmp", _
                                 "uint", 0, "int", 0, "int", 0, _
                                 "uint", 0x00000010, "handle")
hMenu = DllCall("GetSystemMenu", "handle", AUTORUN_TCHANDLE, "bool", 0, "handle")
If hMenu > 0 Then
   DllCall("AppendMenuW", "handle", hMenu, "uint", 2048, "uint_ptr", 0, "ptr", 0)
   DllCall("AppendMenuW", "handle", hMenu, "uint", 0, "uint_ptr", 1000, "wstr", "About")
   DllCall("AppendMenuW", "handle", hMenu, "uint", 4, "uint_ptr", 1001, "ptr", hBitFile)
   DllCall("AppendMenuW", "handle", hMenu, "uint", 1, "uint_ptr", 1002, "wstr", "Settings...")
EndIf
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1633

Post (Separately) Posted: Mon Oct 20, 2025 12:50    Post subject: Reply with quote

Orion9 wrote:
а почему идентификаторы пунктов меню не перехватываются в WM_SYSCOMMAND?

В обработчик есть вход, но только при открытии и закрытии меню - любого. Возможно, тут нужен другой хук, например WH_GETMESSAGE (в основе функции лежит WH_CALLWNDPROC). Вроде по коду каких-то серьезных ошибок не видно.

Так что конкретно не готов ответить.

Orion9 wrote:
Можно накидать интересных пунктов меню, включая логотип, который прикольно кстати смотрится:

У меня в todo какое-то время даже был пункт по добавлению своих пунктов в меню, но все-таки польза этого не столь велика, а с появлением DllCall необходимость и вовсе отпала.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 906

Post (Separately) Posted: Mon Oct 20, 2025 14:09    Post subject: Reply with quote

Loopback wrote:
Вроде по коду каких-то серьезных ошибок не видно.

По вашему коду, или по моему?

Если по моему, то код должен работать. Например, если всё повесить на окно диалога выбора цвета, то он работает.
 Hidden text

Здесь правда вместо логотипа отображается синий квадрат малевича, но для тестов самое то.

Однако вижу, что с отображением графического элемента в ТС х64 есть проблема - элемент не всегда появляется. Кстати, заметил, что в ТС х64 поток заголовка тоже вылетает без ошибки и всё зависает. Мне кажется, раньше такого не было, хотя я не и не часто пользуюсь этой версией, чтобы судить.
Loopback wrote:
все-таки польза этого не столь велика

Да нормальная польза. Своеобразное меню со специальными для этого пунктами.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1633

Post (Separately) Posted: Tue Oct 21, 2025 13:30    Post subject: Reply with quote

Orion9 wrote:
По вашему коду, или по моему?

Да, неоднозначно вышло. По вашему, конечно.

Orion9 wrote:
Если по моему, то код должен работать. Например, если всё повесить на окно диалога выбора цвета, то он работает.

Тут все-таки проще, поскольку вы сами реализуете оконную функцию.

В случае тотала сложнее, нужно либо делать сабклассинг (без возможности последующего его снятия), либо для отлова сообщений приходится ставить хуки. SetMessageAction ставит хук WH_CALLWNDPROC, и он даже что-то ловит, иначе OutputDebugString(wParam) ничего бы не выводил. Но по какой-то причине никакие сообщения от пунктов системного меню в него не приходят. Не думаю, что это проблема SetMessageAction, возможно тут требуется другой тип хука.

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

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



Joined: 01 Jan 2024
Posts: 906

Post (Separately) Posted: Tue Oct 21, 2025 17:33    Post subject: Reply with quote

Loopback wrote:
возможно тут требуется другой тип хука.

Да ладно. Кликать, конечно, хотелось бы, но даже в таком виде можно извлечь пользу, например использовать это меню как информационную панель.
Loopback wrote:
сам по себе поток не может вылететь.. возникло исключение

Что именно происходит не важно, поток с заголовком вылетает - я проверял два раза. Косвенно это указывает, что Everything тут ни при чем (правда я и раньше писал, при поиске торрентов вылететь может на любом из восьми шагов цикла, не только на FileFindEv, если верить данным лога).
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 ... 209, 210, 211
Page 211 of 211

 
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