> Vova
По полочкам. Мне надо регистрировать каждое нажатие каждой кнопки каждого тулбара, при этом знать, какая именно кнопка и на каком тулбаре была нажата. В акаде НЕТ события "нажатие кнопки на тулбаре". Зато есть возможность редактировать макросы, назначенные кнопкам. Дальше всё ясно. Я определяю на Лиспе команду (см. примечание 1), допустим, по имени MYALERT, которая требует ввести с консоли строку (см. листинг). Другой программой (можно на Лиспе, можно на Бейсике) я один раз за сеанс (см. примечание 2) обхожу ВСЕ тулбары и, залезая в каждую кнопку, модифицирую её макрос так, чтобы вставить вызов моей команды MYALERT и не испортить при этом исходную функциональность кнопки (в этом и состоял вопрос). Кроме того, команде MYALERT передаётся строковый параметр (которого она так жаждет:), который представляет собой не что иное, как уникальную сигнатуру, соответствующую данной кнопке на данном тулбаре. Можно просто склеить имя тулбара и имя кнопки, уникальность сигнатуры будет обеспечена.
Таким образом, когда юзер нажимает любую кнопку (даже не обязательно фирменную!), моя основная программа узнаёт об этом факте (а также уникальную сигнатуру кнопки, кои сигнатуры ВСЕ хранятся у неё в ассоциативном словаре) от команды MYALERT, вызов которой (с параметром-сигнатурой) торчит в каждой кнопке.
Примечания.
1. Если возникли траблы с "прозрачностью" лисповской команды, попробуйте определить её не через (defun C:...), а через (vla-add-cmd).
2. После команды MENULOAD надо заново проверять и, если надо, модифицировать все макросы, потому что состав тулбаров мог поменяться.