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 ... 127, 128, 129 ... 190, 191, 192  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Loopback



Joined: 07 Sep 2009
Posts: 1534

Post (Separately) Posted: Sat Aug 26, 2023 00:24    Post subject: Reply with quote

jentoso
Это только фикс проблемы из этого поста.
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Tue Aug 29, 2023 01:40    Post subject: Reply with quote

Loopback
ModifyDialogs в 64-битном TC в Dark Mode не могли бы посмотреть: текст кнопкам не назначается. Любой кнопке любой текст — не присваивается.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1534

Post (Separately) Posted: Tue Aug 29, 2023 14:14    Post subject: Reply with quote

yozhik
Оказывается, это не работало и раньше. Аналогично выводу значка, замена текста в тёмной x64 не работает. Добавил отрисовку текста...

ModifyDialogs 2023-08-29

Сразу отмечу одну проблему. При задании цвета текста в тёмном режиме, синхронно меняется цвет рамки (если он явно не задан), но не точно с тем же цветом, а темнее. Причем эта разница по цветовым компонентам непостоянна и меняется в зависимости от "яркости" цвета текста. Пока не удастся выяснить закономерности этого смещения, сделал отрисовку рамки цветом текста, соответственно, кнопка визуально будет выглядеть ярче (при цвете текста отличном от значения по умолчанию, только в x64).

Да, и ещё интересное наблюдение: в x64 номера экземпляров контролов в тёмной и светлой теме, оказывается, тоже могут различаться Very Happy Красота просто.
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Tue Aug 29, 2023 18:22    Post subject: Reply with quote

Loopback wrote:
Добавил

Спасибо большое, вечером буду пробовать.
Loopback wrote:
в x64 номера экземпляров контролов в тёмной и светлой теме, оказывается, тоже могут различаться

Добавлю: при AutoSize=0 да; при AutoSize=1 чехарды поменьше. Подождите, подождите, у меня на этот счёт уже целая отчётная простыня составлена с таблицами что/где/когда различается. Просто за последние двое суток не нашлось ни минуты чтобы это здесь аккуратно расписать...
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Wed Aug 30, 2023 23:40    Post subject: Reply with quote

Loopback
Спасибо за исправления, при беглой проверке всё работает. Более внимательно пока не проверял.
———————————————
Итак, отчёт о проделанных исследованиях, как обещал. Пришлось задуматься над методикой составления конфигурации, чтобы в будущем не тратить на неё много времени. Конспектируем опыт.

Основные сложности:
  1. Задержка в x64 при создании элементов окна, из-за которой плагин видит одно, а мы — другое. Подробнее здесь.
  2. Изменения TC от версии к версии, из-за которых предыдущие конфиги становятся неработоспособными (частично).
  3. В актуальном TC (11.01) умножились различия в наборах элементов окон в зависимости от настроек ini.
  4. Некоторые диалоги при едином классе (имени) имеют несколько итераций: метился в одну, а «рикошетом» задело другую. Во избежание сего необходимо подбирать доп. фильтры, на определение которых также влияют перечисленные выше сложности.

Яркий представитель 4й сложности — диалог TINPCOMBODLG, где под одним именем выступают 7 итераций:
  1. Диалог F5/F6 (копирования/перемещения). Его особая переменная в плагине: DIALOG_COPYMOVE.
  2. Диалог F5/F6 сразу после раскрытия панельки Опции. Переменная в плагине: DIALOG_COPYMOVE_POST.
  3. Диалог F5/F6 с прикреплённой панелькой Опции. Переменная в плагине: DIALOG_COPYMOVE_PINNED.
  4. Диалог CS+F5 (создания ярлыка). Его затрагивает DIALOG_COPYMOVE.
  5. Диалог CS+F5 сразу после раскрытия панельки Опции. Его затрагивает DIALOG_COPYMOVE_POST.
  6. Диалог CS+F5 с прикреплённой панелькой Опции. Его затрагивает DIALOG_COPYMOVE_PINNED.
  7. Диалог закачки/загрузки между обычной панелью и панелью WFX-плагинов (например, виртуальной папки VirtualPanel).

Начнём с диалогов x64, поскольку с ними больше всего неразберихи. Чтобы преодолеть 1ю сложность, поручим плагину самому показать нам, что он «видит». Составляем тестовый конфиг, переименовываем все кнопки:
Code:
AddDialog "TINPCOMBODLG"
AddControl "Button" 1 "B1"
AddControl "Button" 2 "B2"
AddControl "Button" 3 "B3"
AddControl "Button" 4 "B4"
AddControl "Button" 5 "B5"
AddControl "Button" 6 "B6"
AddControl "Button" 7 "B7"
AddControl "Button" 8 "B8"
AddControl "Button" 9 "B9"
AddControl "Button" 10 "B10"
AddControl "Button" 11 "B11"
AddControl "Button" 12 "B12"
AddControl "Button" 13 "B13"


Перезапускаемся, вызываем CS+F5, видим:


Запускаем оконный сканер (например, Spy++), смотрим на структуру:


По новым именам отчётливо определяются те элементы, которые «увидел» плагин — у них статус EXISTS:1 (существует). Некоторые из них с притушенными значками (слева от Window) — у них статус VISIBLE:0 (невидимые). Полученные данные записываем в столбик. Повторяем для каждой итерации. Объединяем столбики в таблицу:
Code:

┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ C       │ CP      │ L       │ LP      │ UL/DL   │
├─────────┼─────────┼─────────┼─────────┼─────────┤
│ B1  EV  │ B1  EV  │ B1  EV  │ B1  EV  │ B1  E   │
│ B2  EV  │ B2  EV  │ B2  E   │ B2  EV  │ B2      │
│ B3  EV  │ B3  EV  │ B3      │ B3  EV  │ B3  EV  │
│ B4      │ B4  EV  │ B4  E   │ B4  EV  │ B4  EV  │
│ B5  EV  │ B5  EV  │ B5  EV  │ B5  EV  │ B5  E   │
│ B6  EV  │ B6  EV  │ B6  EV  │ B6  EV  │ B6  EV  │
│ B7  EV  │ B7  EV  │ B7  EV  │ B7  E   │ B7      │
│ B8  EV  │ B8  EV  │ B8      │ B8      │ B8      │
│ B9      │ B9      │ B9      │ B9  E   │ B9      │
│ B10     │ B10 EV  │ B10     │ B10 EV  │ B10     │
│ B11     │ B11 EV  │ B11     │ B11 EV  │ B11     │
│ B12     │ B12 EV  │ B12     │ B12 EV  │ B12     │
│ B13     │ B13 EV  │ B13     │ B13     │ B13     │
└─────────┴─────────┴─────────┴─────────┴─────────┘

У меня 5 столбиков, потому что итерации _POST меня не интересовали, я их не трогал. C = Copy, CP = Copy Pinned, L = Link, LP = Link Pinned, UL/DL = Upload/Download, E = Exists, V = Visible. Благодаря таблице отчётливо видим, что единственная возможность отфильтровать диалог F5/F6 от др. итераций — это кнопка 8. Удаляем тестовый конфиг — он отработал и больше не нужен. Составляем конфиг для диалога F5/F6:
Code:
AddDialog DIALOG_COPYMOVE
AddCondition /VISIBLE:1   "Button" 8
# здесь настраиваем элементы диалога
AddDialog DIALOG_COPYMOVE_PINNED
# здесь настраиваем элементы диалога с прикреплённой панелькой Опции

На этом описание заканчиваю, чтобы не многословить.
Не все итерации «подчинились» DIALOG_COPYMOVE_PINNED — к ним пришлось обращаться по-иному. Для некоторых итераций пришлось составлять отдельные конфиги с учётом настроек ini. Кому эти детали интересны, смотрите в разворачивающихся блоках.

 Таблицы всех итераций

 Фильтры для итераций по результатам данных из таблиц


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

Учитывая 1ю сложность, тестовый конфиг можно использовать также для наглядного определения элементов. Делаем снимок диалога, применяем тестовый конфиг, снова делаем снимок диалога, открываем их — всё как на ладони:
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1534

Post (Separately) Posted: Thu Aug 31, 2023 13:58    Post subject: Reply with quote

Фундаментально!

К списку сложностей добавлю еще наличие/появление графических элементов, таких как "кнопки" +F7/+F8, которые вообще не поддаются модификации.

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

yozhik wrote:
тестовый конфиг можно использовать также для наглядного определения элементов

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



Joined: 20 Dec 2007
Posts: 378

Post (Separately) Posted: Sat Sep 02, 2023 22:18    Post subject: Reply with quote

В справке Autorun указано, что по умолчанию Autorun не запускается, если TC выполняется как отдельный процесс для поиска/просмотра/и т.д, но можно изменить это поведение с помощью директивы Pragma AutorunLoadInSubprocess.
Я заметил, что при завершении работы TC, в памяти мог остаться процесс TC. Поиском и перебором определил, что процесс не завершается из-за Autorun. К примеру при открытии диалога поиска файлов отдельным процессом или запуска Lister без открытия основного окна TC (/S=L), процесс остается в памяти.
Получается что Autorun запускается, если TC выполняется отдельным процессом? Но почему-то после добавления вышеуказанной директивы, процессы стали завершаться и не остаются висеть в памяти.
_________________
TC 11.51 combo, Windows 10 x64
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1534

Post (Separately) Posted: Sun Sep 03, 2023 21:43    Post subject: Reply with quote

jentoso
В справке не совсем точная формулировка, конечно же он запускается (по-другому и быть не может), но не выполняет скрипт, если запущен в отдельном процессе. Определяется это по наличию /S= в командной строке.

Так или иначе, я не смог подтвердить проблему, у меня все процессы завершаются.
Back to top
View user's profile Send private message
jentoso



Joined: 20 Dec 2007
Posts: 378

Post (Separately) Posted: Sun Sep 03, 2023 23:09    Post subject: Reply with quote

Loopback
Расширение конфига aucfg на это никак не влияет?
Сам конфиг так выглядит
 Hidden text

_________________
TC 11.51 combo, Windows 10 x64
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Sun Sep 03, 2023 23:39    Post subject: Reply with quote

Loopback
Чтой-то MsgBox в 64-битах перестал работать. Может в TC 11.01 что-то изменилось? Раньше работал, в TC 10 x64 точно помню что работал. В 32-битах работает. В 64-битах в тёмной теме даже видно, как он мелькает во время запуска и сразу пропадает. Проверял «чистым» скриптом, никаких записей, только один MsgBox.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1534

Post (Separately) Posted: Mon Sep 04, 2023 12:52    Post subject: Reply with quote

jentoso
Расширение не влияет.

Попробовал подключить конфиг, две строки пришлось закомментировать:
#LoadLibrary Plugins\tctitle.dll - какой-то плагин? Я про него не знаю.
#LoadFont /N Font\InconsolataCyr.ttf

Повторить не смог. TC 11.01, версии плагинов и субплагинов последние, которые выкладывались.

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



Joined: 04 May 2014
Posts: 257
Location: Электросталь

Post (Separately) Posted: Mon Sep 04, 2023 13:46    Post subject: Reply with quote

Loopback
Ага, я хорошо помню это место в справке. В памяти также отложилось, что он вроде работал когда-то, поэтому я и сигнализировал. Конечно, добро если причина станет ясна и на это ещё и не уйдёт много времени. Но в целом, может и не стоит вообще его тратить, время. MsgBox очень удобен в отладке. Но не единственен, можно и ShellExec к этому делу приспособить, она в 64 битах стабильно работает:
Code:
ShellExec %COMSPEC% "/K echo.Отладка, шаг 1"
Back to top
View user's profile Send private message
jentoso



Joined: 20 Dec 2007
Posts: 378

Post (Separately) Posted: Mon Sep 04, 2023 18:52    Post subject: Reply with quote

Loopback
Конфиг я тоже комментировал, даже пустой файл подсовывал, но TC оставался в памяти.

Quote:
Расширение не влияет.

А вот здесь и произошла магия в моем случае. Переименовал autorun.aucfg в autorun.cfg, TC перестал оставаться в памяти.

P.S. Наверно какой-то частный случай. Версия Autorun 2.2.8 (MD5: E0A847AF58C256B0EB94E81906222AF7)
_________________
TC 11.51 combo, Windows 10 x64
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1534

Post (Separately) Posted: Mon Sep 04, 2023 20:30    Post subject: Reply with quote

jentoso wrote:
Версия Autorun 2.2.8

Вообще-то актуальная версия 2.2.10, и там было немало исправлений. Например, такое:

- исправлено падение при использовании функций ТК в отдельных процессах

"Падение" на некоторых системах вполне может выражаться как зависание в памяти.
Back to top
View user's profile Send private message
jentoso



Joined: 20 Dec 2007
Posts: 378

Post (Separately) Posted: Mon Sep 04, 2023 20:53    Post subject: Reply with quote

Loopback
Я почему-то был уверен, что 2.2.8 последняя, а то что скоро уже буде год 2.2.10 проглядел.
P.S. Может надо на первый пост вынести ссылку с примечанием, что то последняя версия (beta).
_________________
TC 11.51 combo, Windows 10 x64
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 ... 127, 128, 129 ... 190, 191, 192  Next
Page 128 of 192

 
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