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 ... 189, 190, 191
 
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: 328

Post (Separately) Posted: Mon Jun 09, 2025 21:55    Post subject: Reply with quote

Loopback wrote:
Очень похоже на наблюдаемое поведение.

Возможно конкретный плагин устанавливается дольше, чем другие и действительно отключает или что-то подобное делает. В общем очень похоже, что вы правильно ситуацию описали. Только вот дергать похоже не надо. Я просто подождал какое-то время и все заработало. Отсюда я сделал вывод, что ShellExec(COMMANDER_PATH & "\Utilities\TCPlugman\Plugman.exe", "/Restart") надо выполнять с задержкой, хотя не очень этого хочется. Соответственно в эту строку надо вставить /WAIT, а у меня что-то не получилось. Я так и не пойму, где надо кавычки и какие ставить. Кажется пишешь впереди ~/HIDE /WAIT запятая и дальше приведенная строка. Но почему-то не работает так. Помнится я разбирался с этим, но опять забыл.

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

Похоже вы совершенно правы. Чтобы Autorun сработал, надо именно чего-нибудь дернуть. Сейчас ждал долго. Не работает. Мышкой начал щелкать в другом окне, после этого заработала перезагрузка. И проблема только при установке wdx-плагинов. Что-то можно с этим сделать?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1526

Post (Separately) Posted: Mon Jun 09, 2025 23:45    Post subject: Reply with quote

AkulaBig wrote:
в эту строку надо вставить /WAIT,

Не, сюда не надо вставлять WAIT, которая согласно документации ждёт завершения процесса. Тут, видимо, простой Sleep перед ShellExec нужен.

AkulaBig wrote:
И проблема только при установке wdx-плагинов.

Ну вот и выяснили. Значит, тотал выгружает wdx-плагины при установке нового.

AkulaBig wrote:
Что-то можно с этим сделать?

Наверно, можно попробовать запретить выгрузку Autorun директивой AutorunBlockUnload.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 328

Post (Separately) Posted: Tue Jun 10, 2025 05:51    Post subject: Reply with quote

Loopback wrote:
запретить выгрузку Autorun директивой AutorunBlockUnload.

То, что нужно! Спасибо.

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

По факту использования для хинтов портянок со сведениями из MI пришел к выводу, что это действительно не всегда удобно. Собственно решение проблемы понятно. Сделать кнопку в Панели настроек для переключения вида подсказок. Простые хинты, с Ctrl расширенные, либо всегда расширенные.
Но есть в ТС такой ключик FileTipWindowsOnIcon. Он позволяет отключить, либо ограничить именем файла подсказки над именем и другими колонками ТС, а хинты показывать над иконкой.
А можно такое в Autorun реализовать? То-есть чтобы подсказка из полей Autorun показывалась над иконкой файла?
Соответственно в строке If IsPressed (0x10) Then подставить не нажатие клавиши, а расположение над иконкой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1526

Post (Separately) Posted: Tue Jun 10, 2025 12:53    Post subject: Reply with quote

AkulaBig wrote:
чтобы подсказка из полей Autorun показывалась над иконкой файла?

Не совсем понятно. Если включить эту опцию, то подсказка будет появляться только над значками, неважно, из полей Autorun получает она информацию, или из других.

Но при желании, полагаю, можно и без этой опции определить, находится ли указатель мыши в момент запроса полей Autorun в зоне над значком. Алгоритм должен быть примерно такой:
- узнать, включены ли значки
- узнать их размер
- получить панель, над которой находится курсор (ItemAtCursor)
- получить хэндл панели (RequestInfo)
- получить координаты этой панели (WinGetPos)
- вычислить прямоугольник, где может находиться курсор, с помощью размера значка
- получить координаты курсора (MouseGetPos)
- проверить, находится ли курсор в границах прямоугольника
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 328

Post (Separately) Posted: Tue Jun 10, 2025 14:46    Post subject: Reply with quote

Loopback wrote:
Если включить эту опцию, то подсказка будет появляться только над значками, неважно, из полей Autorun получает она информацию, или из других.

Я имел ввиду, что сделать такое средствами Autorun. То-есть мне совершенно не нравится, когда подсказок нет совсем. Я-бы использовал для показа подсказок стандартный ключ, а над иконкой показывал-бы средствами Autorun.
Loopback wrote:
Но при желании, полагаю, можно и без этой опции определить, находится ли указатель мыши в момент запроса полей Autorun в зоне над значком

Да, именно это меня и заинтересовало. Спасибо за алгоритм. Только один вопрос. С Ctrl+ЛКМ подсказка работает просто отвратительно. Приходится очень неудобно перемещать мышь, чтобы она появлялась. То-есть сделать такой режим основным я не за что не решусь. Поэтому хотелось-бы с этой моей хотелкой разобраться. Мышь себя будет естественно вести? То-есть я буду просто вести мышью по иконкам и подсказка просто будет появляться без всяких выкобениваний? В общем стандартно, как при использовании ключа ТС?

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

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



Joined: 01 Jan 2024
Posts: 772

Post (Separately) Posted: Tue Jun 10, 2025 17:46    Post subject: Reply with quote

Loopback wrote:
Не представляю, как сюда блокировку притянуть.

Как вы, наверное, догадались, данную статейку я почитал на досуге, чтобы лучше понимать механизм сообщений, но она меня навела на одну мысль.

Если откинуть баги Гислера и Lazarus, остается только один вариант: сообщение с IDCANCEL посылается специально и с определенной целью. Быть может, в работе ТСх64 есть некий критичный момент, когда появление диалогового окна нежелательно и может привести к проблемам, именно поэтому сразу посылается сообщение о закрытии.

Например, AkulaBig недавно писал, что при использовании TCFS2 значок Тотала на панели задач пропадает, а потом опять появляется. Я тоже заметил этот "прикол", характерный только для ТСх64. Но дело не только в TCFS2. Такое происходит и при отправке сообщений окну ТС из Autorun. То есть, складывается впечатление, что ТСх64, обрабатывыая полученные сообщения и выполняя какие-то внутренние операции, скрывает главное окно и повторно его инициализирует. По крайней мере, так выглядит визуально на панели задач.

А теперь допустим, что в такой момент что-то произойдет и значок на панели задач так и не появится. Вот именно о таком критичном моменте я и говорил. Но это только мысли, которые к реальности могут не иметь никакого отношения.
Loopback wrote:
Экземпляр контрола штука не всегда надёжная. Он постоянен только тогда, когда количество созданных контролов в процессе работы не изменяется, т.е. они не удаляются и не создаются новые.

Спасибо за объяснения. Теперь я, кажется, стал это лучше понимать.
Loopback wrote:
Для получения хэндлов элементов главного окна лучше пользоваться RequestInfo.

Да, забыл о таком, думал с хэндлами прокатит. Но этот вариант действительно представляется более надежным. Только я не совсем понял, какой именно индекс заменяет TMyPanel6 в ТСх86, потому что именно в это окно я хотел рисовать вентихлятор )

Обновленная функция, которая не требует отдельных файлов с иконками (иконка берется из основного окна ТС сообщением 0x7f и поворачивается вызовом функции PlgBlt из gdi32.dll)
 Hidden text

Старая функция по-прежнему доступна и вызывается с удержнием CTRL.
Loopback wrote:
- узнать, включены ли значки
- узнать их размер
- получить панель, над которой находится курсор (ItemAtCursor)
- получить хэндл панели (RequestInfo)
- получить координаты этой панели (WinGetPos)
- вычислить прямоугольник, где может находиться курсор, с помощью размера значка
- получить координаты курсора (MouseGetPos)
- проверить, находится ли курсор в границах прямоугольника

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



Joined: 03 Dec 2008
Posts: 328

Post (Separately) Posted: Tue Jun 10, 2025 20:58    Post subject: Reply with quote

Orion9 wrote:
Когда приходится дополнительно куда-то целиться, это немного напрягает.

Представляете, многие используют подсказки над иконками. Меня это тоже удивляет.
Orion9 wrote:
Норм алгоритм, но нужно на практике проверить, как он будет работать.

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



Joined: 07 Sep 2009
Posts: 1526

Post (Separately) Posted: Tue Jun 10, 2025 22:23    Post subject: Reply with quote

AkulaBig wrote:
Я-бы использовал для показа подсказок стандартный ключ, а над иконкой показывал-бы средствами Autorun.

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

AkulaBig wrote:
Мышь себя будет естественно вести? То-есть я буду просто вести мышью по иконкам и подсказка просто будет появляться без всяких выкобениваний?

Понятия не имею. Если пользоваться стандартной подсказкой тотала, вряд ли будут принципиальные отличия.



Orion9 wrote:
Только я не совсем понял, какой именно индекс заменяет TMyPanel6 в ТСх86

Скорее всего никакой, не у всех элементов окна есть соответствующие индексы. А вот, например, индексы 11, 12 ведут на скрытые панели, повторяющие текст видимых, но ими не являющиеся. Так что тут только экспериментировать.

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

Я и не собираюсь, поэтому только алгоритм, а не готовый код Smile
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 328

Post (Separately) Posted: Tue Jun 10, 2025 23:42    Post subject: Reply with quote

Loopback wrote:
я бы с этим не связывался.

Я тоже пришел к такому выводу. Смысла нет связываться с этим.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 772

Post (Separately) Posted: Wed Jun 11, 2025 00:28    Post subject: Reply with quote

AkulaBig wrote:
Представляете, многие используют подсказки над иконками. Меня это тоже удивляет.

Это вопрос привычки, как мне кажется. На мой взгляд, удобно вызывать подсказки с удержанием различных клавиш-модификаторов, например CTRL или CTRL+SHIFT. Но можно и CapsLock использовать в некоторых случаях.
AkulaBig wrote:
То-есть я хотел чтобы над колонками всплывали стандартные хинты, а над иконкой расширенные.

Используйте CapsLock для переключения, и вся проблема. Буквально один вызов нужно добавить для проверки состояния:
Code:
If BitAND(DllCall("GetKeyState", "int", 0x14, "short"), 1) = 0 Then Return

Модификаторы не советую, так как они не работают в TCx64.

Раз уж речь зашла о подсказках, была у меня ещё одна в давнишних проспектах:
 Hidden text

Дополнительная подсказка к главной панели инструментов, которая отображается при включенном CapsLock или зажатом CTRL. Эта тема всплывала некоторе время назад, но чуть в другом контексте. Тут главное индекс расчитать правильно, что не так сложно, если на панели нет разделителей. И сейчас алгоритм делает именно это, он не учитывает возможные разделители в .bar файле. Поэтому хорошо будет работать, если на панели не используются разделители.

Разделители нужно учитывать отдельно, и с этим есть проблема. Но пока функция только эксперементальная, делал её только посмотреть, что из может выйти и как будет смотреться такая подсказка. Если одним словом, то понравилась.

Loopback wrote:
Скорее всего никакой, не у всех элементов окна есть соответствующие индексы.

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



Joined: 03 Dec 2008
Posts: 328

Post (Separately) Posted: Wed Jun 11, 2025 04:21    Post subject: Reply with quote

Orion9 wrote:
удобно вызывать подсказки с удержанием различных клавиш-модификаторов, например CTRL или CTRL+SHIFT.

Дак не работают они в ТС64. И мне не нравится как они работают. Приноравливаться надо.
Orion9 wrote:
можно и CapsLock использовать

Надо попробовать. Еще ScrollLock надо проверить.
Orion9 wrote:
Буквально один вызов нужно добавить для проверки состояния

Мы эту тему обсуждали, так что я помню.
Orion9 wrote:
отображается при включенном CapsLock или зажатом CTRL.

Ctrl в ТС64 не работает. Так что остается только CapsLock.
Думаю без кнопки переключения в настройках не обойтись.

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

ScrollLock не работает, PrintScreen работает.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 328

Post (Separately) Posted: Wed Jun 18, 2025 21:39    Post subject: Reply with quote

Наконец-то форум опять заработал.
Orion9
А вы знаете, что If BitAND(DllCall("GetKeyState", "int", 0x11, "short"), 1) = 0 Then Return работает и в ТС64? Правда по хитрому. Конечно нажатие подцепиться не может, а вот переключение подхватывается. Именно на основании этого я подобрал работающее сочетание Ctrl+Break. работают много какие клавиши ,но они не удобны для использования, так как много где задействованы. Правда я в сборке сделал кнопочку для переключения вида подсказок.
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 ... 189, 190, 191
Page 191 of 191

 
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