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 ... 121, 122, 123 ... 130, 131, 132  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Monarch-LFV



Joined: 22 Jul 2019
Posts: 227

Post (Separately) Posted: Thu Oct 13, 2022 07:26    Post subject: Reply with quote

sa, imig73
Спасибо! [/offtop]
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Tue Oct 18, 2022 19:37    Post subject: Reply with quote

Версия 2.2.9 beta

- потенциальная проблема в Set при использовании в нескольких потоках
* изменена работа Sleep на малых задержках
- исправлено падение при использовании функций ТК в отдельных процессах
* дополнены и документированы неявные преобразования типов в условиях при операциях
* дополнительная оптимизация сообщений об ошибках для встроенных команд
* отдельное сообщение об ошибке для имени переменной окружения
* отдельное сообщение об ошибке при неправильном имени переменной для результата в командной записи
- Tweaks: исправлено спонтанное несрабатывание SetHotkeyAction
+ добавлены математические функции
+ Tweaks: более удобное задание флагов центрирования для ShowPopupMenu
+ Tweaks: дополнительные опции выравнивания меню для ShowPopupMenu
* Tweaks: по умолчанию блокируется повтор при нажатии клавиш в SetHotkeyAction
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 178

Post (Separately) Posted: Thu Oct 20, 2022 16:11    Post subject: Reply with quote

Loopback
Спасибо большое, SetMessageAction теперь заработала как часики. С её помощью я наладил запуск ShowPopupMenu по кнопке на тулбаре, и убрал в архив изрядно послужившую TCMenuPopup.exe. Связка ShowPopupMenu+ShowPopupMenu конечно лучше работает в сравнении с TCMenuPopup.exe: и настроек больше, и фокус не перехватывает.

Попутно возник маленький вопрос. Прочитав о «ненадёжности» привязки msg к фиксированному номеру, я подумал, что затруднение решается использованием длинного номера, ведь чем больше цифр, тем меньше вероятность совпадений. Но после тестов выяснилось, что с номерами выше 5-значных связка просто не работает. Чем это объясняется?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Thu Oct 20, 2022 16:57    Post subject: Reply with quote

yozhik wrote:
Но после тестов выяснилось, что с номерами выше 5-значных связка просто не работает. Чем это объясняется?

Сообщения с номерами выше 65535 считаются зарезервированными системой. Опытным путем выяснил, что максимальное значение при котором отправка работает - 65536*2-1 = 131071. Похоже, это уже системное ограничение.

На самом деле, думаю, вероятность совпадения очень невелика. Знать бы еще точно, как система использует зарезервированный диапазон. Во всяком случае TCFS2Tools использует сообщения в этом диапазоне, и вроде за много лет проблем с этим не было.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Oct 21, 2022 23:15    Post subject: Reply with quote

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

Коды 0x0000 .. 0x03FF - для системных сообщений, сюда лучше не лезть.

Сообщения в диапазонах 0x0400 (= WM_USER) .. 0x7FFF и 0x8000 (= WM_APP) .. 0xBFFF - для идентификаторов элементов и пользовательских классов окон (т.е. классов окон тотала). В этом диапазоне лежат тоталовские WM_USER+50 и WM_USER+51, но могут быть и другие коды, используемые элементами в Delphi/Lazarus. По идее, в этом диапазоне должно быть довольно безопасно использовать старшие номера, т.к. шанс, что элементы тотала начнут их использовать, мал, а кроме них эти номера никто не должен использовать.

Диапазон 0xC000 .. 0xFFFF - для уникальных идентификаторов, регистрируемых вызовом функции RegisterWindowMessage. Эта функция предназначена для регистрации кодов, уникальных для всех окон системы, каждый её вызов для одной и той же строки возвращает тот же код, и вызовы для разных строк возвращают разные коды (думаю, если коды закончатся, функция начнёт возвращать ошибку). По идее, эти диапазоны нужны для резидентных утилит, взаимодействующих с окнами (или может быть для того, чтобы некоторая утилита могла принимать команды от других процессов без фиксации числовых кодов), и с командами самого тотала они пересекаться не будут (в пределах одного процесса удобнее фиксировать номера). В TCFS2 есть возможность отправки сообщений с такими кодами через функцию regmsg.

Насколько я понимаю, коды выше 0xFFFF официально не поддерживаются, т.к. изначально параметр кода сообщения был 16-битным, поэтому там никто ничего не гарантирует.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Sat Oct 22, 2022 01:29    Post subject: Reply with quote

MVV
Да, думаю, что все-таки наиболее безопасный способ с регистрируемыми сообщениями.

MVV wrote:
В TCFS2 есть возможность отправки сообщений с такими кодами через функцию regmsg.

Хотел было спросить, почему у меня эта функция не работала, но пока готовил пример, обнаружил, что всё работает, если параметр указать без каких-либо кавычек (хотя вроде это строка).

Code:
/ef "msg(regmsg(MyMessage), 0, 0)"


MVV wrote:
Насколько я понимаю, коды выше 0xFFFF официально не поддерживаются, т.к. изначально параметр кода сообщения был 16-битным, поэтому там никто ничего не гарантирует.

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



Joined: 04 May 2014
Posts: 178

Post (Separately) Posted: Sat Oct 22, 2022 13:19    Post subject: Reply with quote

Loopback wrote:
наиболее безопасный способ с регистрируемыми сообщениями

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



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Tue Nov 01, 2022 21:12    Post subject: Reply with quote

Версия 2.2.10 beta

* Tweaks: попытка исключить отображение меню Пуск в некоторых комбинациях с клавишей Win
* Tweaks: оптимизировано потребление памяти
+ сообщение о превышении лимита регистрируемых событий
+ Tweaks: увеличен до 128 лимит регистрируемых событий ControlSetMouseAction, SetHotkeyAction, SetMessageAction
+ сообщение в случае слишком большого числа актуальных параметров в вызове пользовательской функции
- исправлено падение после сообщения о фатальной ошибке синтаксиса
+ Tweaks: ControlSetMouseAction теперь срабатывает на панелях при активном тултипе старого типа (не Win32)
* внутренняя унификация и оптимизация строчных функций
+ добавлена функция Hex
- исправлена потенциальная проблема при одновременной работе пользовательских функций в разных потоках
- исправлена утечка памяти при работе пользовательских функций в разных потоках
- в вызовах ControlSetMouseAction, SetHotkeyAction и т.д. не работали команды, возвращающие значения
+ для SendCommand, возможность задания именем отсутствующих в totalcmd.inc команд
Back to top
View user's profile Send private message
Monarch-LFV



Joined: 22 Jul 2019
Posts: 227

Post (Separately) Posted: Mon Mar 20, 2023 16:00    Post subject: Reply with quote

Loopback
Обнаружилась ошибка в бета версиях, подробнее в этой ветке форума.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Tue Mar 21, 2023 18:54    Post subject: Reply with quote

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



Joined: 29 Apr 2009
Posts: 2563

Post (Separately) Posted: Tue Mar 21, 2023 19:13    Post subject: Reply with quote

Loopback wrote:
на пустой конфигурации

А точно на пустой воспроизводится? Monarch-LFV говорил про одинаковую конфигурацию на разных версиях.
У меня TC тоже стоит в автозагрузке системы, сбрасывания меню не замечал.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Tue Mar 21, 2023 19:36    Post subject: Reply with quote

sa
Почему же, он писал:
Quote:

...причем с любым конфигурационным файлом: хоть переименованный example идущий в составе плагина, хоть полностью пустой файл Autorun.cfg (0 байт).
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2563

Post (Separately) Posted: Tue Mar 21, 2023 19:45    Post subject: Reply with quote

Loopback
Monarch-LFV
Прошу прощения, упустил... Значит, у меня удачная конфигурация!
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Fri May 19, 2023 19:00    Post subject: Reply with quote

В команде ControlSetMouseAction в справке описаны варианты отправки SendCommand.
А можно ли послать несколько команд?
Или для этого нужно делать вспомогательную em_-команду, и уже её вызывать через CommandExec ?
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α


Last edited by LonerD on Mon May 22, 2023 05:35; edited 2 times in total
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Fri May 19, 2023 22:53    Post subject: Reply with quote

LonerD
Можно и так, но мне кажется проще через пользовательскую функцию (в бете):

Code:

ControlSetMouseAction ... SendMyCommands

Func SendMyCommands
  SendCommand ...
  SendCommand ...
  SendCommand ...
EndFunc
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 ... 121, 122, 123 ... 130, 131, 132  Next
Page 122 of 132

 
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