Непосредственно подачу команд из таймера сделал так:
acDocManager->sendStringToExecute(acDocManager->curDocument(), L"_ribbonclose\n");
а вообще с этими профилями весело.
сброс профиля не может выполниться полностью во время последовательности команд - перед следующей ему надо дать паузу.
ribbonclose (для моего интерфейса) после сброса профиля тоже требует паузы, иначе ribbon от автокада срабатывает после него, и из-за своего _menu имеем пустую ленту
также надо реализовать обеспечение второго профиля, кроме своего, и его запись как дефолтный, в HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R18.0\ACAD-8001:419\Profiles\по умолчанию, чтобы ярлычок автокада обеспечивал дефолтный интерфейс автокада при восстановлении интерфейса. а это тоже сброс профиля и тоже пауза
после формирования профиля для интерфейса автокада надо создать/восстановить свой профиль, сбросить его, выдержать паузу, и донастроить, опять же с паузой
команда восстановления интерфейса может быть вызвана в любое время, и тоже потребовать всех пауз
при запуске автокада из отчета нужен наш интерфейс, но масштабирование по границам не нужно, нужно масштабирование по объекту, а оно отрабатывает без пауз
поэтому пришел к тому, чтобы создавать очередь действий, в которой могут быть команды и паузы
при получении команды будет формироваться очередь действий, разная в разных случаях, и запускаться таймер
очередь пар (тик, код_команды) будет обрабатываться в таймере: увеличивается счетчик тиков, и если в очереди этот тик есть, выполняется соотв. операция (ряд команд через sendStringToExecute)
если очередь опустела, прибить таймер
покритикуйте, Александр, может быть, тут что-то неправильно с автокадовской точки зрения?
в частности, запись имени дефолтного профиля в HKCU\...\Profiles сразу после переключения на наш профиль
весь этот гемор вот зачем:
1) у пользователя 2 ярлыка - автокадовский для интерфейса автокада и наш для нашего интерфейса
2) каждый из интерфейсов можно донастраивать и сохранять в рамках профилей
3) если что-то зарегулировал, есть команда восстановления интерфейсов
4) если нет даже команды - переустановить
5) не иметь возможности так все испортить и остаться без средств восстановления, чтобы меня отвлекать