(изменено: Пастух, 19 марта 2011г. 09:53:44)

Тема: Есть ли ObjectARX функция, позволяющя выполнить макрос меню, вида ^C^CMyCommand;

Хочу в .NET сборке использовать недокументированный метод SendMenuStringToExecute() класса Autodesk.AutoCAD.Internal.Utils, но при условии, что имеется возможность подстраховаться на будущее и в случае чего использовать родную функцию аналогичного действия через P/Invoke.
Вопрос в том, есть ли такая родная документированная функция и если "да", то как её зовут?

Re: Есть ли ObjectARX функция, позволяющя выполнить макрос меню, вида ^C^CMyCommand;

Документированной нет. Есть недокументированная (начиная с AutoCAD 2007):

enum Acad::ErrorStatus __cdecl acedSendMenuStringToExecute(class AcApDocument *,wchar_t const *,bool);

Re: Есть ли ObjectARX функция, позволяющя выполнить макрос меню, вида ^C^CMyCommand;

Спасибо, Александр.
Заодно хотел уточнить. Если я вызываю данную функцию в обработчике событий немодального окна и посылаю макрос на выполнение в активный документ, требуются ли какие-то дополнительные действия с активным документом, например его блокировка.
Я пробовал выполнить SendMenuStringToExecute() при активной (незавершенной) команде и при активном лиспе (в момент запроса (getxxx ...)). И текущая команда и лисп прерывались, и запускался мой макрос. Т.е. всё работало, как того хотелось, но может это не работает при определенных условиях?

Re: Есть ли ObjectARX функция, позволяющя выполнить макрос меню, вида ^C^CMyCommand;

На то она и недокументированная, чтобы было неясно. smile Думаю, что она полный аналог SendStringToExecute(), только обрабатывает еще и управляющие символы, допустимые в меню.