View previous topic :: View next topic |
Author |
Message |
Monarch-LFV
Joined: 22 Jul 2019 Posts: 240
|
(Separately) Posted: Thu Oct 13, 2022 07:26 Post subject: |
|
|
sa, imig73
Спасибо! [/offtop] |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Tue Oct 18, 2022 19:37 Post subject: |
|
|
Версия 2.2.9 beta
- потенциальная проблема в Set при использовании в нескольких потоках
* изменена работа Sleep на малых задержках
- исправлено падение при использовании функций ТК в отдельных процессах
* дополнены и документированы неявные преобразования типов в условиях при операциях
* дополнительная оптимизация сообщений об ошибках для встроенных команд
* отдельное сообщение об ошибке для имени переменной окружения
* отдельное сообщение об ошибке при неправильном имени переменной для результата в командной записи
- Tweaks: исправлено спонтанное несрабатывание SetHotkeyAction
+ добавлены математические функции
+ Tweaks: более удобное задание флагов центрирования для ShowPopupMenu
+ Tweaks: дополнительные опции выравнивания меню для ShowPopupMenu
* Tweaks: по умолчанию блокируется повтор при нажатии клавиш в SetHotkeyAction |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 212 Location: Электросталь
|
(Separately) Posted: Thu Oct 20, 2022 16:11 Post subject: |
|
|
Loopback
Спасибо большое, SetMessageAction теперь заработала как часики. С её помощью я наладил запуск ShowPopupMenu по кнопке на тулбаре, и убрал в архив изрядно послужившую TCMenuPopup.exe. Связка ShowPopupMenu+ShowPopupMenu конечно лучше работает в сравнении с TCMenuPopup.exe: и настроек больше, и фокус не перехватывает.
Попутно возник маленький вопрос. Прочитав о «ненадёжности» привязки msg к фиксированному номеру, я подумал, что затруднение решается использованием длинного номера, ведь чем больше цифр, тем меньше вероятность совпадений. Но после тестов выяснилось, что с номерами выше 5-значных связка просто не работает. Чем это объясняется? |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Thu Oct 20, 2022 16:57 Post subject: |
|
|
yozhik wrote: | Но после тестов выяснилось, что с номерами выше 5-значных связка просто не работает. Чем это объясняется? |
Сообщения с номерами выше 65535 считаются зарезервированными системой. Опытным путем выяснил, что максимальное значение при котором отправка работает - 65536*2-1 = 131071. Похоже, это уже системное ограничение.
На самом деле, думаю, вероятность совпадения очень невелика. Знать бы еще точно, как система использует зарезервированный диапазон. Во всяком случае TCFS2Tools использует сообщения в этом диапазоне, и вроде за много лет проблем с этим не было. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Fri Oct 21, 2022 23:15 Post subject: |
|
|
Вообще, есть определенные диапазоны сообщений, и лучше придерживаться их. Указаны, например, тут.
Коды 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 |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Sat Oct 22, 2022 01:29 Post subject: |
|
|
MVV
Да, думаю, что все-таки наиболее безопасный способ с регистрируемыми сообщениями.
MVV wrote: | В TCFS2 есть возможность отправки сообщений с такими кодами через функцию regmsg. |
Хотел было спросить, почему у меня эта функция не работала, но пока готовил пример, обнаружил, что всё работает, если параметр указать без каких-либо кавычек (хотя вроде это строка).
Code: | /ef "msg(regmsg(MyMessage), 0, 0)" |
MVV wrote: | Насколько я понимаю, коды выше 0xFFFF официально не поддерживаются, т.к. изначально параметр кода сообщения был 16-битным, поэтому там никто ничего не гарантирует. |
Да, но с другой стороны раз работает, для личных целей можно использовать. |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 212 Location: Электросталь
|
(Separately) Posted: Sat Oct 22, 2022 13:19 Post subject: |
|
|
Loopback wrote: | наиболее безопасный способ с регистрируемыми сообщениями |
Я, например, выбрал способ с номерами только из-за его относительной краткости, т.к. в другом способе для регистрации сообщения предлагался дополнительный скрипт. Причём, интересно, ведь доп. скрипт — невелика сложность, но тут видимо первая подсознательная реакция — чем меньше шагов, тем путь предпочтительней. Теперь же, с regmsg, этой разницы между способами нет, значит с лёгким сердцем выбираем сообщения. Я уже так и сделал со всеми своими менюшками — всё чётко работает. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Tue Nov 01, 2022 21:12 Post subject: |
|
|
Версия 2.2.10 beta
* Tweaks: попытка исключить отображение меню Пуск в некоторых комбинациях с клавишей Win
* Tweaks: оптимизировано потребление памяти
+ сообщение о превышении лимита регистрируемых событий
+ Tweaks: увеличен до 128 лимит регистрируемых событий ControlSetMouseAction, SetHotkeyAction, SetMessageAction
+ сообщение в случае слишком большого числа актуальных параметров в вызове пользовательской функции
- исправлено падение после сообщения о фатальной ошибке синтаксиса
+ Tweaks: ControlSetMouseAction теперь срабатывает на панелях при активном тултипе старого типа (не Win32)
* внутренняя унификация и оптимизация строчных функций
+ добавлена функция Hex
- исправлена потенциальная проблема при одновременной работе пользовательских функций в разных потоках
- исправлена утечка памяти при работе пользовательских функций в разных потоках
- в вызовах ControlSetMouseAction, SetHotkeyAction и т.д. не работали команды, возвращающие значения
+ для SendCommand, возможность задания именем отсутствующих в totalcmd.inc команд |
|
Back to top |
|
|
Monarch-LFV
Joined: 22 Jul 2019 Posts: 240
|
(Separately) Posted: Mon Mar 20, 2023 16:00 Post subject: |
|
|
Loopback
Обнаружилась ошибка в бета версиях, подробнее в этой ветке форума. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Tue Mar 21, 2023 18:54 Post subject: |
|
|
Monarch-LFV
Весьма интересно. У меня эта проблема тоже иногда проявляется, но очень редко, какой-то системы уловить не получается. Я вообще думал, что это какой-то косяк в моей конфигурации, там очень много всякого тестового. Но раз такое и на пустой конфигурации, даже не представляю, с чем это может быть связано. Почему-то кажется, что появилось это относительно недавно, может полгода назад, так что возможно это не бета как таковая, а одна из последних версий. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2597
|
(Separately) Posted: Tue Mar 21, 2023 19:13 Post subject: |
|
|
Loopback wrote: | на пустой конфигурации |
А точно на пустой воспроизводится? Monarch-LFV говорил про одинаковую конфигурацию на разных версиях.
У меня TC тоже стоит в автозагрузке системы, сбрасывания меню не замечал. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Tue Mar 21, 2023 19:36 Post subject: |
|
|
sa
Почему же, он писал:
Quote: |
...причем с любым конфигурационным файлом: хоть переименованный example идущий в составе плагина, хоть полностью пустой файл Autorun.cfg (0 байт).
|
|
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2597
|
(Separately) Posted: Tue Mar 21, 2023 19:45 Post subject: |
|
|
Loopback
Monarch-LFV
Прошу прощения, упустил... Значит, у меня удачная конфигурация! |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1169 Location: Макеевка
|
(Separately) Posted: Fri May 19, 2023 19:00 Post subject: |
|
|
В команде ControlSetMouseAction в справке описаны варианты отправки SendCommand.
А можно ли послать несколько команд?
Или для этого нужно делать вспомогательную em_-команду, и уже её вызывать через CommandExec ? _________________ Windows 11 | TC DreamLair eternal pre-α
Last edited by LonerD on Mon May 22, 2023 05:35; edited 2 times in total |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Fri May 19, 2023 22:53 Post subject: |
|
|
LonerD
Можно и так, но мне кажется проще через пользовательскую функцию (в бете):
Code: |
ControlSetMouseAction ... SendMyCommands
Func SendMyCommands
SendCommand ...
SendCommand ...
SendCommand ...
EndFunc
|
|
|
Back to top |
|
|
|
|
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
|