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 ... 200, 201, 202, 203  Next
 
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: 832

Post (Separately) Posted: Mon Sep 08, 2025 20:11    Post subject: Reply with quote

Loopback wrote:
Увы, идеально точно не получится

Да ладно. Говорю же, это мелочи. Всё-равно мне показалось, что лучше стало.
Loopback wrote:
Да, как и было задумано

Попробуем, когда доберуться руки.

В общем, поюзал я ТС с прозрачным окном в Win11... есть в этом что-то, но есть и недостаток. При посылке сообщения главному окну, оно скрывается и значок ТС на панели задач пропадает, затем снова появляется как ни в чем не бывало. Всё это напоминает, как ведет себя ТСх64 в аналогичной ситуации (без прозрачности), но там хотя бы окно не пропадает, а только значок, что не критично. Но здесь же... В общем, юзать такое сложно, если вообще возможно.

Сначала думал, что проблема в SendCommand или в WinRedraw(1), но дело не в этом. Ниже код для воспроизведения проблемы. Окно и значок на панели задач пропадают на секунду при условии, что установлена прозрачность:
Code:
RegisterCommand 60030 TestTransparencyBug

Func TestTransparencyBug(lParam)
    SendMessage(AUTORUN_TCHANDLE, 11, 0, 0) 
    Sleep(1000)
    SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
EndFunc

Loopback, можно что-то с этим сделать, есть мысли?

A55555, когда писал тот большой пост, не было времени сразу все проверить. Так и знал, что что-нибудь да упущу. В общем, для полноценной работы функций подсчета потребуется еще одна вспомогательная функция:
 Hidden text

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



Joined: 03 Dec 2008
Posts: 431

Post (Separately) Posted: Mon Sep 08, 2025 21:11    Post subject: Reply with quote

Loopback wrote:
Т.е. в DebugView ничего не пишет? Потому что улетать сейчас окно в любом случае не будет

В текущей сборке просто это негде проверить. Хотя сейчас попробую на всякий случай.
Loopback wrote:
Залил временно к себе

Спасибо. Все, можно удалять. В прошлый раз вы так написали, что я решил удалить тестовую сборку. Вроде как в ближайшее время не удастся ошибку исправить. А в этой версии в хистори вроде про это было. Вот я и начал кипишить. Но оказывается не совсем про это. Ниче, пусть теперь сборка лежит. Не буду ее удалять.

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

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

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

А у всех главная страница форума до авторизации стала англоязычной? Похоже косяки какие-то.

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

Ну вот и произошло чудо. В тестовой версии окно больше не улетает за экран. Я имею ввиду, что со старой версией Autorun. Значит либо Винда в этом участвовала и ее обновление убрало ошибку. Либо шаман в бубен постучал. Будем считать вопрос исчерпан. Я даже не стал тестить с новой версией плагина. Ну и версия плагина в сборке не отладочная была. Так что дебаг никаких сообще6ний так и не вывел.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1607

Post (Separately) Posted: Mon Sep 08, 2025 23:33    Post subject: Reply with quote

Orion9 wrote:
есть мысли?

Нет, понятия не имею. Тестировать сегодня не могу, нет под рукой 11. Но думаю Autorun тут вообще не при делах. SendMessage просто обертка над системной функцией. Но WM_SETREDRAW это вообще такая специфическая штука, она не предполагает отключение на большие интервалы времени. Когда перерисовка выключена, от окна по сути остается картинка на экране. Предполагаю, что если в этот момент картинка будет чем-то стерта (может софт какой-то специфический стоит), это будет выглядеть как исчезновение окна.

AkulaBig wrote:
В текущей версии сборки с последним Autorun DebugView не выдает вообще никаких сообщений. Но может это из-за того, что вы-же тогда спец версии плагина выкладывали?

Полную отладочную информацию я убрал, конечно, но одно сообщение в релизе оставил.

AkulaBig wrote:
В тестовой версии окно больше не улетает за экран. Я имею ввиду, что со старой версией Autorun.

Ну вот, а вы всё - чудес не бывает... Smile
Back to top
View user's profile Send private message
A55555



Joined: 06 Feb 2011
Posts: 28

Post (Separately) Posted: Mon Sep 08, 2025 23:45    Post subject: Reply with quote

Orion9 wrote:
A55555 wrote:
У меня опыта прикручивания готовых кнопок нет, поучусь.

Не совсем понятно, что имеется в виду. Про копипрование кода кнопок на панель инструментов вы, наверное, знаете. А чтобы вызывать функции Autorun из кнопок ТС, для этого, как правило, регистрируется отдельный незанятый код в диапазоне 60000-100000 и указывается в соответствующей кнопке. Этот код можно использовать и в пользовательских em_командах, например, себе я сделал такую команду в файле usercmd.ini:

С кнопками я разобрался.
Но с регистрацией кода проблема, по обеим кнопкам выскакивает сообщение "Функция не реализована. 620..."

Orion9 wrote:
A55555, когда писал тот большой пост, не было времени сразу все проверить. Так и знал, что что-нибудь да упущу. В общем, для полноценной работы функций подсчета потребуется еще одна вспомогательная функция:

И добавление этой функции не изменило ситуацию.

К примеру. Папка TCTorrent плагина в моей готовой сборке находится в wlx плагинах по умолчанию.
Я отредактировал ваш код, сменив
Code:
ShowHint("TCTorrent.wdx plugin error " & ERROR)
.......
"Powered by TCTorrent.wdx" & auCRLF & _

на
Code:
ShowHint("TCTorrent.wlx64 plugin error " & ERROR)
.......
"Powered by TCTorrent.wlx64" & auCRLF & _

может проблема в том, что у меня 64bit сборка TC?

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



Joined: 01 Jan 2024
Posts: 832

Post (Separately) Posted: Tue Sep 09, 2025 00:40    Post subject: Reply with quote

Loopback
Вроде логично изложили, но это не объясняет, почему значок с панели задач пропадает. В общем, как будет возможность, посмотрите - увидите о чем речь. А от WM_SETREDRAW отказаться, конечно, можно, но только в ущерб гладкой перерисовки экрана после выполнения тоталовских команд. И если будет стоять выбор между прозрачностью и гладкостью перерисовки, то я однозначно выберу второе.

A55555
Такая ошибка возникает, когда номер команды не зарегистрирован. Если вы скопировали все и сохранили в файл конфигурации, то, по идее, нужно только перезапустить ТС.

Допустим нужно зарегистровать команду с кодом 60100, которая будет вызывать функцию Test(). Тогда код на Autorun будет такой:
Code:
RegisterCommand 60100 Test

Func Test(lParam)
    MsgBox("Команда 60100 выполнена")
EndFunc

А кнопка такой:
Code:
TOTALCMD#BAR#DATA
60100

%COMMANDER_EXE%
Команда 60100


-1

Ваши изменения затрагивают только текст подсказки. Проблема незапуска в чем-то другом, на 64-битном ТС все работает. Попробуйте на таком простом коде, как 60100, сделать кнопку.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 832

Post (Separately) Posted: Tue Sep 09, 2025 19:19    Post subject: Reply with quote

Хорошая мысля приходит напосля.

A55555
Добавил буквально три строчки к CopyMonitor(). Теперь при вкючении режима ожидания кнопка "В фоне" деактивируется, а при отключении режима ожидания снова активируется:
 Hidden text

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



Joined: 07 Sep 2009
Posts: 1607

Post (Separately) Posted: Tue Sep 09, 2025 20:25    Post subject: Reply with quote

Orion9 wrote:
В общем, как будет возможность, посмотрите - увидите о чем речь.

Не понадобилась даже 11, на десятке ведет себя ровно так же, и на 7, и даже XP. Сходу найти информацию по теме классическим методом не удалось, а нейросеть утверждает, что это несовместимость WS_EX_COMPOSITED и WM_SETREDRAW:

 Hidden text


К таким ответам следует относиться с осторожностью, но насколько я могу судить, выглядит похоже на правду.

К слову, если не выполнять SetLayeredWindowAttributes, а только добавить WS_EX_COMPOSITED - окно тотала просто пропадает...
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 832

Post (Separately) Posted: Tue Sep 09, 2025 20:27    Post subject: Reply with quote

Быстренько пробежался еще раз. Добавил комментариев и важную переменную bTransCopyWin, которой можно управлять прозрачностью окна копирования. По умолчанию выключена. Если нужно, чтобы во время копирования окно копирования тоже становилось прозрачным, включение через Local bTransCopyWin = true.
 Hidden text


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

Loopback
А что делать-то? Smile
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1607

Post (Separately) Posted: Tue Sep 09, 2025 20:32    Post subject: Reply with quote

Orion9 wrote:
А что делать-то?

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

Ну это же очевидно - использовать то, что нужнее.

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



Joined: 06 Feb 2011
Posts: 28

Post (Separately) Posted: Tue Sep 09, 2025 23:54    Post subject: Reply with quote

Orion9 wrote:
Добавил буквально три строчки к CopyMonitor(). Теперь при вкючении режима ожидания кнопка "В фоне" деактивируется, а при отключении режима ожидания снова активируется:

Спасибо. Деактивируется.

Orion9 wrote:
Быстренько пробежался еще раз. Добавил комментариев и важную переменную bTransCopyWin, которой можно управлять прозрачностью окна копирования. По умолчанию выключена. Если нужно, чтобы во время копирования окно копирования тоже становилось прозрачным, включение через Local bTransCopyWin = true.

Спасибо. Прозрачность работает для окна копирования.


Orion9 wrote:
A55555
Такая ошибка возникает, когда номер команды не зарегистрирован. Если вы скопировали все и сохранили в файл конфигурации, то, по идее, нужно только перезапустить ТС.

Допустим нужно зарегистровать команду с кодом 60100, которая будет вызывать функцию Test(). Тогда код на Autorun будет такой:
 Hidden text

А кнопка такой:
 Hidden text

Ваши изменения затрагивают только текст подсказки. Проблема незапуска в чем-то другом, на 64-битном ТС все работает. Попробуйте на таком простом коде, как 60100, сделать кнопку.

Заработали кнопки, переносом этих команд в самое начало файла конфигурации Autorun.

RegisterCommand 62014 "TorrentSize" работает, показывает размер в подсказке возле курсора.
RegisterCommand 62013 "Duration" работает по Alt, остальные режимы по кнопке Ctrl_Shift_CapsLock выдают Error LoadLibrary MediaInfo.dll
Путь к своей библиотеке MediaInfo_x64.dll указал
Code:
Static sLib = "MediaInfo" & (auX64 ? "" : "_i386") & ".dll", _
           hLib = DllCall("LoadLibrary", "wstr", COMMANDER_PATH & "\Plugins\wdx\TCMediaInfo\" & sLib, "ptr")

 Hidden text


Last edited by A55555 on Wed Sep 10, 2025 00:05; edited 1 time in total
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 832

Post (Separately) Posted: Tue Sep 09, 2025 23:59    Post subject: Reply with quote

Loopback
Убрал для эксперемента. Окно и значок на панели задач теперь не пропадают, но перерисовывается всё с заметными артефактами, как и ожидалось. Ладно, не беда. Прозрачность мне понравилась как лекарство от однообразия, буду юзать время от времени. Спасибо вам, что нашли причину и объяснение. Думаю, со временем добавлю в код проверку на стиль WS_EX_COMPOSITED, и если он включен, то не посылать WM_SETREDRAW.

A55555
Это значит, что путь к библиотеке MediaInfo.dll неправильно указан, скорее всего. К сожалению, его нужно указывать явно, как я и писал выше.

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

Quote:
Путь к своей библиотеке MediaInfo_x64.dll указал

Нет, такое не предусмотрено. Библиотеки должны быть такими:
Code:
MediaInfo.dll
MediaInfo_i386.dll

Просто создайте пока копию с такими именами.
Back to top
View user's profile Send private message
A55555



Joined: 06 Feb 2011
Posts: 28

Post (Separately) Posted: Wed Sep 10, 2025 00:08    Post subject: Reply with quote

Orion9 wrote:
Нет, такое не предусмотрено. Библиотеки должны быть такими:
Code:
MediaInfo.dll
MediaInfo_i386.dll

Просто создайте пока копию с такими именами.

Этим способом заработало. Спасибо.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 832

Post (Separately) Posted: Wed Sep 10, 2025 00:23    Post subject: Reply with quote

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



Joined: 06 Feb 2011
Posts: 28

Post (Separately) Posted: Wed Sep 10, 2025 13:55    Post subject: Reply with quote

Orion9
если это не космически времязатратно, ваш механизм, который использует MediaInfo.dll, можно сделать чтоб он показывал какие аудиодорожки в видеофайле есть? Примерно вот так.

Code:

AUDIO
1. RUS, DTS-HD, 3386 Kbs
2. RUS, AC3, 128 Kbs
3. ENG, AC3, 256 Kbs
...


Может и видеопоток, примерно вот так
Code:
VIDEO
1. H265, 50 fps, 33850 Kbs
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 832

Post (Separately) Posted: Wed Sep 10, 2025 20:24    Post subject: Reply with quote

A55555
Теоритически можно сделать такое, но сначала посмотрите режим "Видео (компактный)" в плагине TCMediaInfo. Думаю, это то, что вам нужно. Loopback сделал классный режим просмотра. Его можно использовать и в быстром просмотре по CTRL+Q, если нужно группу файлов просмотреть.
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 ... 200, 201, 202, 203  Next
Page 201 of 203

 
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