Пара слов об EnterpriseMenu и работе с ним

Что такое корпоративное меню, наверное, и так все знают. Каковы удобства его использования, каковы минусы - вот об этом я и хотел бы сказать.

Корпоративное меню располагается где-то на сервере и подгружается пользователями. Несомненными плюсами можно назвать комбинирование следующих вещей: и принципиальные изменения в меню вносятся в одном месте, и подхватываются они автоматом, и при этом пользователь может самостоятельно перемещать панели инструментов и вообще всячески налаживать вид меню. Да, и вот еще - для редактирования такого меню оно должно быть подгружено как основное, иначе файл cui / cuix открывается в режиме ReadOnly. Удобно, ничего не скажешь :)
Минусы... Минусов немного. Если меню содержит собственные рисунки кнопок (а частенько так оно и есть), путь к меню крайне желательно прописывать в путях доступа. У меня, по крайней мере, это было обязательное действие. А вот если рисунки объединены в dll, то становится совсем весело: dll блокируется, пока файл cui / cuix загружен хотя бы у одного пользователя! Так что внести изменения быстро и просто не получится, если не извращаться, конечно.
Поэтому пока что я использую такую технологию:
1. Корпоративный файл меню, а также dll и mnl (ну, если понадобится, то и bmp тоже) копируются на локальную машину в каталог, например, %AppData%\kpblc\menu
2. Путь к каталогу добавляется в пути поддержки
3. через vla-put-enterprisemenu устанавливаю корпоративное меню

Все вроде бы здорово, если бы не несколько "но".
1. Вопрос "как обновлять" решается вроде бы просто: в качестве enterprisemenu устанавливается пустая строка, но по ходу дела крайне желательно проконтролировать - не остались ли следы от корпоративного меню (контекстные меню, разделы Popup-меню или Ribbon). Я такое словил всего раз, но этого оказалось достаточно.
2. Заменить файлы cui / cuix, dll и mnl недостаточно - их крайне желательно предварительно удалять. Про удаление файлов mnr я даже не напоминаю.
3. Простая установка enterprisemenu иногда тоже оказывается недостаточной: "слетает" текущее рабочее пространство, и новое корпоративное меню просто не показывается, пока не будет активировано любое рабочее пространство.
4. Если в корпоративном меню есть выпадающее, то оно иногда помещается перед стандартными выпадающими. Так что придется перемещать на нужное место.

Коды не показываю, поскольку просто некогда. Может быть, потом...

Размещено в Новости · Метки: , ,



Комментарии

Есть 2 коммент. к “Пара слов об EnterpriseMenu и работе с ним”
  1. Кулик Алексей aka kpblc пишет:

    Хотелось бы теперь добавить еще немного дегтя.

    Программно установить корпоративное меню можно только через ActiveX, без вариантов. Системная переменная enterprisemenu имеет статус ReadOnly.

    Казалось бы, ничего особо сложного:

    (vla-put-enterprisemenu (vla-get-files (vla-get-preferences (vlax-get-acad-object))) (vlax-make-variant "c:\\bla-bla-bla\\CoprMenu.cui"))

    Но на самом деле не все так радужно.

    Во-первых, подгружать можно корпоративное меню только "нативного" формата. То есть для 2009 - cui, для 2012 - cuix

    Во-вторых, в некоторых случаях (например, я в полной мере поймал это на AutoCAD 2009 - и на 32, и на 64) попытка подгрузки меню может выдать ошибку ядра (Access Violation 0x00005c). Не лечится.

    Если вдруг нарисовалась вторая проблема, выход только один - впрямую подгружать стороннее меню. Либо через команды, либо через vla-load. По крайней мере я другого выхода не нашел :(

  2. Hwd пишет:

    [quote]А вот если рисунки объединены в dll, то становится совсем весело: dll блокируется, пока файл cui / cuix загружен хотя бы у одного пользователя! Так что внести изменения быстро и просто не получится, если не извращаться, конечно.[/quote]

    В Windows версий NT и выше ты можешь переименовать/переместить файл, занятый другим процессом. Т.е. даже если файлы захвачены юзером, ты можешь эти файлы переместить в некий каталог "Мусор" (при необходимости ещё и переименовав их, например дописав к имени дату и время их удаления), а на их место закинуть обновлённые версии. Спустя некоторое время (например на след. день) ты спокойно очищаешь содержимое своего каталога "Мусор".

    Best Regards

Поделитесь своим мнением


Я не робот.