Тема: Сохранение установок текущего профиля

Насколько я понимаю AutoCAD перед закрытием сохраняет в реестре (HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.X\ACAD-XXX:XXX\Profiles) все установки текущего профиля. Возможно ли программным способом принудительно сохранить установки текущего профиля в процессе работы AutoCAD (в частности интерсует сохранение положения своих тулбаров).

Re: Сохранение установок текущего профиля

Теоретически должно быть так:

static void SaveProfile(void)
{
   AcApProfileManager *pMan = acProfileManagerPtr();
   resbuf *rb = acutNewRb(RTSTR);
   if (acedGetVar(_T("CPROFILE"),rb) != RTNORM || !rb)
     return;
   AcString cProfile = rb->resval.rstring;
   acutRelRb(rb);
   AcApProfileStorage *pStorage = NULL;
   Acad::ErrorStatus es;
   if ((es = pMan->ProfileStorage(pStorage,cProfile)) != Acad::eOk) {
     acutPrintf(_T("\npMan->ProfileStorage(pStorage,cProfile)=%s"),acadErrorStatusText(es));
     return;
   }
   if ((es = pStorage->Save()) != Acad::eOk) {
     acutPrintf(_T("\npStorage->Save()=%s"),acadErrorStatusText(es));
   }
}

Re: Сохранение установок текущего профиля

> Александр Ривилис
С теорией все великолепно. Код работает без сбоев, по крайней мере везде Acad::eOk. Вот только нет желаемого результата - положение тулбаров не сохраняется, и соответственно данные в реестре остаются неизменными.
Пытаюсь разобраться с матчастью и в частности с методом pStorage->Save. Читаем документацию:

Saves the profile storage XML file...

Лезем по адресу C:\Documents and Settings\My_User_Name\Application Data\Autodesk\AutoCAD 2006\R16.X\enu\Support\Profiles\Unnamed Profile\Profile.aws Действительно файл обновился . Но просмотр этого файла не показал в нем какого-либо упоминания о тулбарах и их расположениях.
Может существует какой-нибудь метод, с помощью которого можно определить положение конкретного тулбара и насильно сохранить его координаты в HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.X\ACAD-XXXX:XXX\Profiles\<<Unnamed Profile>>\Toolbars?

Re: Сохранение установок текущего профиля

> Debalance
Я не зря написал, что теоретически. :)
Практически приходится работать через COM-интерфейс. У объекта Toolbar есть свойства Left и Top, которые позволяют определить местонахождение тулбара и свойство Name, которое позволяет определить его имя.