Не срабатывает событие при автозагрузке приложения

Автор Тема: Не срабатывает событие при автозагрузке приложения  (Прочитано 8596 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн БалиевАвтор темы

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Добрый день,
Мне нужно, чтобы при загрузке AutoCAD и, соответственно, автозагрузке приложения, срабатывало событие, вызывающее некий метод.
В сети нашел пример, но у меня он почему-то не работает: автозагрузка приложения происходит (о чем сообщает APPAUTOLOADER), а, вот, событие - нет. При этом, если загружать приложение через NETLOAD, то все работает.
Вот кусок кода:
Код - C# [Выбрать]
  1.         public void Initialize()
  2.         {
  3.             if (Autodesk.Windows.ComponentManager.Ribbon == null)
  4.             {
  5.                 Autodesk.Windows.ComponentManager.ItemInitialized +=
  6.                     new EventHandler<RibbonItemEventArgs>(ComponentManager_ItemInitialized);
  7.             }
  8.             else
  9.             {
  10.                 BuildRibbonTab();
  11.             }
  12.         }
  13.         void ComponentManager_ItemInitialized(object sender, Autodesk.Windows.RibbonItemEventArgs e)
  14.         {
  15.              if (Autodesk.Windows.ComponentManager.Ribbon != null)
  16.             {
  17.                 BuildRibbonTab();
  18.                 Autodesk.Windows.ComponentManager.ItemInitialized -= new EventHandler<RibbonItemEventArgs>(ComponentManager_ItemInitialized);
  19.             }
  20.         }
  21.  

BuildRibbonTab() - это вызываемый метод.
Что я не так делаю?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
« Последнее редактирование: 17-03-2022, 10:40:09 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн БалиевАвтор темы

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Пользуйся поиском:
https://adn-cis.org/forum/index.php?topic=7912.0
Я эту страницу видел. Ответа на мой вопрос там, все-равно, нет - там дан альтернативный (видимо, работающий) вариант. Но я нашел совсем другое решение своей задачи - через PackageContents.xml. Если кому интересно, то вот ссылка: https://adndevblog.typepad.com/autocad/2013/04/autoloader-example-for-invoking-a-startup-command-in-autocad.html.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Но я нашел совсем другое решение своей задачи - через PackageContents.xml. Если кому интересно, то вот ссылка: https://adndevblog.typepad.com/autocad/2013/04/autoloader-example-for-invoking-a-startup-command-in-autocad.html.
Я пробовал, мне не понравилось: https://adn-cis.org/forum/index.php?topic=3046.0
Хотя, может в последних версиях пофиксили.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Я эту страницу видел. Ответа на мой вопрос там, все-равно, нет - там дан альтернативный (видимо, работающий) вариант.
Думаю, что плохо смотрели.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн БалиевАвтор темы

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Я пробовал, мне не понравилось: https://adn-cis.org/forum/index.php?topic=3046.0
Про Civil ничего сказать не могу, а, вот, для "просто" AutoCAD 2020-2022 я проверил - все работает. Но в любом случае, спасибо за информацию!

Оффлайн БалиевАвтор темы

  • ADN Club
  • ***
  • Сообщений: 188
  • Карма: 2
Думаю, что плохо смотрели.
Ты имеешь в виду объяснение Дмитрия Загорулькина? Если да, то это, насколько я понимаю, немного не тот случай: у него уже есть элементы на ленте и с ними нужно как-то работать. Поэтому ему нужно, чтобы именно его элементы инициализировались. А мне нужно просто вставить в ленту вкладку. Хотя не исключаю, что и для этого нужно, чтобы вся лента успела инициализироваться. Но как это все проверить - не знаю.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Хотя не исключаю, что и для этого нужно, чтобы вся лента успела инициализироваться. Но как это все проверить - не знаю.
Именно так, и именно как делал Дмитрий. Но если устраивает вариант через запуск команды, то можно пока не заморачиваться.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение