Autorun
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... 121, 122, 123 ... 133, 134, 135  Next  :| |:
Total Commander -> Плагины Total Commander

#1816:  Author: Monarch-LFV PostPosted: Thu Oct 13, 2022 07:26
    —
sa, imig73
Спасибо! [/offtop]

#1817:  Author: Loopback PostPosted: Tue Oct 18, 2022 19:37
    —
Версия 2.2.9 beta

- потенциальная проблема в Set при использовании в нескольких потоках
* изменена работа Sleep на малых задержках
- исправлено падение при использовании функций ТК в отдельных процессах
* дополнены и документированы неявные преобразования типов в условиях при операциях
* дополнительная оптимизация сообщений об ошибках для встроенных команд
* отдельное сообщение об ошибке для имени переменной окружения
* отдельное сообщение об ошибке при неправильном имени переменной для результата в командной записи
- Tweaks: исправлено спонтанное несрабатывание SetHotkeyAction
+ добавлены математические функции
+ Tweaks: более удобное задание флагов центрирования для ShowPopupMenu
+ Tweaks: дополнительные опции выравнивания меню для ShowPopupMenu
* Tweaks: по умолчанию блокируется повтор при нажатии клавиш в SetHotkeyAction

#1818:  Author: yozhik PostPosted: Thu Oct 20, 2022 16:11
    —
Loopback
Спасибо большое, SetMessageAction теперь заработала как часики. С её помощью я наладил запуск ShowPopupMenu по кнопке на тулбаре, и убрал в архив изрядно послужившую TCMenuPopup.exe. Связка ShowPopupMenu+ShowPopupMenu конечно лучше работает в сравнении с TCMenuPopup.exe: и настроек больше, и фокус не перехватывает.

Попутно возник маленький вопрос. Прочитав о «ненадёжности» привязки msg к фиксированному номеру, я подумал, что затруднение решается использованием длинного номера, ведь чем больше цифр, тем меньше вероятность совпадений. Но после тестов выяснилось, что с номерами выше 5-значных связка просто не работает. Чем это объясняется?

#1819:  Author: Loopback PostPosted: Thu Oct 20, 2022 16:57
    —
yozhik wrote:
Но после тестов выяснилось, что с номерами выше 5-значных связка просто не работает. Чем это объясняется?

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

На самом деле, думаю, вероятность совпадения очень невелика. Знать бы еще точно, как система использует зарезервированный диапазон. Во всяком случае TCFS2Tools использует сообщения в этом диапазоне, и вроде за много лет проблем с этим не было.

#1820:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Oct 21, 2022 23:15
    —
Вообще, есть определенные диапазоны сообщений, и лучше придерживаться их. Указаны, например, тут.

Коды 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-битным, поэтому там никто ничего не гарантирует.

#1821:  Author: Loopback PostPosted: Sat Oct 22, 2022 01:29
    —
MVV
Да, думаю, что все-таки наиболее безопасный способ с регистрируемыми сообщениями.

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

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

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


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

Да, но с другой стороны раз работает, для личных целей можно использовать.

#1822:  Author: yozhik PostPosted: Sat Oct 22, 2022 13:19
    —
Loopback wrote:
наиболее безопасный способ с регистрируемыми сообщениями

Я, например, выбрал способ с номерами только из-за его относительной краткости, т.к. в другом способе для регистрации сообщения предлагался дополнительный скрипт. Причём, интересно, ведь доп. скрипт — невелика сложность, но тут видимо первая подсознательная реакция — чем меньше шагов, тем путь предпочтительней. Теперь же, с regmsg, этой разницы между способами нет, значит с лёгким сердцем выбираем сообщения. Я уже так и сделал со всеми своими менюшками — всё чётко работает.

#1823:  Author: Loopback PostPosted: Tue Nov 01, 2022 21:12
    —
Версия 2.2.10 beta

* Tweaks: попытка исключить отображение меню Пуск в некоторых комбинациях с клавишей Win
* Tweaks: оптимизировано потребление памяти
+ сообщение о превышении лимита регистрируемых событий
+ Tweaks: увеличен до 128 лимит регистрируемых событий ControlSetMouseAction, SetHotkeyAction, SetMessageAction
+ сообщение в случае слишком большого числа актуальных параметров в вызове пользовательской функции
- исправлено падение после сообщения о фатальной ошибке синтаксиса
+ Tweaks: ControlSetMouseAction теперь срабатывает на панелях при активном тултипе старого типа (не Win32)
* внутренняя унификация и оптимизация строчных функций
+ добавлена функция Hex
- исправлена потенциальная проблема при одновременной работе пользовательских функций в разных потоках
- исправлена утечка памяти при работе пользовательских функций в разных потоках
- в вызовах ControlSetMouseAction, SetHotkeyAction и т.д. не работали команды, возвращающие значения
+ для SendCommand, возможность задания именем отсутствующих в totalcmd.inc команд

#1824:  Author: Monarch-LFV PostPosted: Mon Mar 20, 2023 16:00
    —
Loopback
Обнаружилась ошибка в бета версиях, подробнее в этой ветке форума.

#1825:  Author: Loopback PostPosted: Tue Mar 21, 2023 18:54
    —
Monarch-LFV
Весьма интересно. У меня эта проблема тоже иногда проявляется, но очень редко, какой-то системы уловить не получается. Я вообще думал, что это какой-то косяк в моей конфигурации, там очень много всякого тестового. Но раз такое и на пустой конфигурации, даже не представляю, с чем это может быть связано. Почему-то кажется, что появилось это относительно недавно, может полгода назад, так что возможно это не бета как таковая, а одна из последних версий.

#1826:  Author: sa PostPosted: Tue Mar 21, 2023 19:13
    —
Loopback wrote:
на пустой конфигурации

А точно на пустой воспроизводится? Monarch-LFV говорил про одинаковую конфигурацию на разных версиях.
У меня TC тоже стоит в автозагрузке системы, сбрасывания меню не замечал.

#1827:  Author: Loopback PostPosted: Tue Mar 21, 2023 19:36
    —
sa
Почему же, он писал:
Quote:

...причем с любым конфигурационным файлом: хоть переименованный example идущий в составе плагина, хоть полностью пустой файл Autorun.cfg (0 байт).

#1828:  Author: sa PostPosted: Tue Mar 21, 2023 19:45
    —
Loopback
Monarch-LFV
Прошу прощения, упустил... Значит, у меня удачная конфигурация!

#1829:  Author: LonerDLocation: Донецк PostPosted: Fri May 19, 2023 19:00
    —
В команде ControlSetMouseAction в справке описаны варианты отправки SendCommand.
А можно ли послать несколько команд?
Или для этого нужно делать вспомогательную em_-команду, и уже её вызывать через CommandExec ?


Last edited by LonerD on Mon May 22, 2023 05:35; edited 2 times in total

#1830:  Author: Loopback PostPosted: Fri May 19, 2023 22:53
    —
LonerD
Можно и так, но мне кажется проще через пользовательскую функцию (в бете):

Code:

ControlSetMouseAction ... SendMyCommands

Func SendMyCommands
  SendCommand ...
  SendCommand ...
  SendCommand ...
EndFunc



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3 ... 121, 122, 123 ... 133, 134, 135  Next  :| |:
Page 122 of 135

Powered by phpBB © 2001, 2005 phpBB Group