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 ... 237, 238, 239
 
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: 602

Post (Separately) Posted: Tue Sep 22, 2026 22:31    Post subject: Reply with quote

Orion9 wrote:
Вы бы гифку записали, а то не понятно о чем речь.

Я разобрался, но там все достаточно печально и кажется корректно не решаемо. Вот такой код я прописал где требуется обновление ПИ:
Code:
   # Обновляем текущую панель инструментов для смены иконки
   # Updating current toolbar to change the icon
   SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
   SendCommand cm_ReloadBarIcons
   # Sleep(auX64 ? 0 : 10)
   SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
   WinRedraw(1)

Но теперь надо и пользовательские команды ТС через Авторан переделывать. Так как любая команда cm_ReloadBarIcons вызывает дерганье на ТС32 Вин11.
Дак вот, почему я в унынии. Видите у меня закомментирована команда Слип? А без нее в ТС32 все равно есть небольшое подергивание. А с ней подергивания ПИ нет совсем, как в ТС64, но дергается иконка в трее Sad То-есть избавится полностью от подергивания не получится.
Поэтому вроде и ни к чему возиться с гифкой. Тем более увидеть подергивание очень просто. Выполните команду cm_ReloadBarIcons в обоих разрядностях через командную строку ТС.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1255

Post (Separately) Posted: Wed Sep 23, 2026 13:40    Post subject: Reply with quote

AkulaBig
Продолжил общаться с болваном. Можно еще через PostMessage сделать, о чем сразу не подумал

 Hidden text

Но из-за того, что lParam в сообщении указывает координаты клиентской области, реализация на Autorun немного громоздкая и, возможно, не везде будет уместна. Т.е. вместо
Code:
SendLCtrlViaDll()
Sleep(10)   
MouseClick()
Sleep(10)
SendLCtrlViaDll("up")

в моем случае будет
Code:
Local x, y
MouseGetPos("x","y")
Local hWnd = WinFromPoint(x,y)     
Static buf = Buffer(8)   # POINT
buf.Zero()
buf.SetNum(0, "long", x, "long", y)
DllCall("ScreenToClient", "hwnd", hWnd, "ptr", buf.ptr)
x = buf.GetNum(0)
y = buf.GetNum(4)
Local MousePos = MakeInt(x,y)
PostMessage(hWnd, 0x0201, 0x0008, MousePos)
PostMessage(hWnd, 0x0202, 0x0008, MousePos)

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

Ну я понял теперь о чем вы говорите. Это старая проблема. Лечится она (по крайне мере у меня) через WinRedraw(2). Полная версия примерно такая. Не знаю поможет вам или нет, но других вариантов по сути нет. Иконка на панели задач будет исчезать и появляться.
Code:
SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
SendCommand(2901, 0, 1)   #cm_VisButtonBar
SendCommand(2901, 0, 1)   #cm_VisButtonBar
Sleep(10)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
WinRedraw(2)
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 602

Post (Separately) Posted: Wed Sep 23, 2026 19:30    Post subject: Reply with quote

Orion9 wrote:
Ну я понял теперь о чем вы говорите. Это старая проблема.

Это проблема ТС. Так что до конца нерешаемая. Сейчас более-менее приемлемый вариант. В коде на Авторан я везде так прописал. Но и в командах пользователя ТС, которые никак не связаны с Авторан, работает также с подергиванием. Получается их надо переписывать с использованием Авторан. Чет желания нет. Как и писать Гислеру.

Orion9 wrote:
в моем случае будет

Я уже запутался. Это замена ControlSetMouseAction /L /K:C /K:S 0 "CompareToolShowMenu"? К чему этот код?
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1255

Post (Separately) Posted: Thu Sep 24, 2026 13:45    Post subject: Reply with quote

AkulaBig
Работает хук, проверил сейчас. Перехватывает клавишу CTRL глобально.

 Hidden text

Возможности открылись неплохие. В частности удалось обойти абсолютно дурацкий косяк ТСх64 с модификаторами при вызове подсказки на панели, когда нажатие CTRL скрывает подсказку или не дает ей появиться. Чтобы заставить ее работать, CTRL отключается через 10 повторов и меняет флаг подсказки gHintCaps на false, который отвечает за MediaInfo Inform. Это костыль, конечно, но работает.

Второй бонус - двойное нажатие CTRL. Сейчас просто вызывается окно About, но можно сделать что-то и поинтереснее (уже, кстати, есть идея).

AkulaBig wrote:
Я уже запутался. Это замена ControlSetMouseAction /L /K:C /K:S 0 "CompareToolShowMenu"? К чему этот код?

Вы хотели, чтобы назначенная через ControlSetMouseAction функция пропускала свою комбинацию. PostMessage позволяет это сделать. Но я вчера толком не проверил, по факту там не нужны модификаторы - и без них работает.

 Hidden text

Т.е. wParam может быть 0.

В функцию CompareToolShowMenu можно добавить переключатель для выполнения кода (показа меню) или пропуска комбинации вызовом PostMouseClick().
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 602

Post (Separately) Posted: Thu Sep 24, 2026 14:38    Post subject: Reply with quote

Orion9 wrote:
пропуска комбинации вызовом PostMouseClick()

Добавил код из PostMouseClick. Поставил wParam=12. Кнопка вкл/выкл хоткея перестала переключаться. То-есть нажимаю, чтобы отключить хоткей, а кнопка возвращается в предыдущее состояние. То-есть хоткей остается включенным. И отключение вызова меню не работает.
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 ... 237, 238, 239
Page 239 of 239

 
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