Как отследить событие Закрытие приложения

Автор Тема: Как отследить событие Закрытие приложения  (Прочитано 9553 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Добрый день!
Мне нужно отследить событие Закрытие приложения.
В справке нашел пример https://help.autodesk.com/view/OARX/2020/ENU/?guid=GUID-4BD5D384-5448-4D19-9023-DA12A55FAEF0
Там приведен такой код:
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3. [CommandMethod("AddAppEvent")]
  4. public void AddAppEvent()
  5. {
  6.   Application.SystemVariableChanged +=
  7.       new Autodesk.AutoCAD.ApplicationServices.
  8.           SystemVariableChangedEventHandler(appSysVarChanged);
  9. }
  10.  
  11. [CommandMethod("RemoveAppEvent")]
  12. public void RemoveAppEvent()
  13. {
  14.   Application.SystemVariableChanged -=
  15.       new Autodesk.AutoCAD.ApplicationServices.
  16.           SystemVariableChangedEventHandler(appSysVarChanged);
  17. }
  18.  
  19. public void appSysVarChanged(object senderObj,
  20.                              Autodesk.AutoCAD.ApplicationServices.
  21.                              SystemVariableChangedEventArgs sysVarChEvtArgs)
  22. {
  23.   object oVal = Application.GetSystemVariable(sysVarChEvtArgs.Name);
  24.  
  25.   // Display a message box with the system variable name and the new value
  26.   Application.ShowAlertDialog(sysVarChEvtArgs.Name + " was changed." +
  27.                               "\nNew value: " + oVal.ToString());
  28. }
Перед этим примером написано: В этом примере показано, как зарегистрировать обработчик событий с помощью события BeginQuit. После регистрации перед полным завершением работы AutoCAD отображается окно сообщения.
Я не понял, где здесь регистрируется событие Application.BeginQuit, и как на самом деле его нужно зарегистрировать?

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

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

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

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Закрытие автокада.

Отмечено как Решение Борис_С 21-12-2020, 18:52:39

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Закрытие автокада.
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.ApplicationServices;
  2. using Autodesk.AutoCAD.Runtime;
  3.  
  4. // This line is not mandatory, but improves loading performances
  5. [assembly: CommandClass(typeof(BeginQuit.MyCommands))]
  6.  
  7. namespace BeginQuit
  8. {
  9.   public class MyCommands
  10.   {
  11.     [CommandMethod("AddBeginQuit")]
  12.     public void AddBeginQuit()
  13.     {
  14.       Application.BeginQuit += Application_BeginQuit;
  15.     }
  16.  
  17.     [CommandMethod("RemoveBeginQuit")]
  18.     public void RemoveBeginQuit()
  19.     {
  20.       Application.BeginQuit -= Application_BeginQuit;
  21.     }
  22.  
  23.     private void Application_BeginQuit(object sender, BeginQuitEventArgs e)
  24.     {
  25.       Application.ShowAlertDialog("BeginQuit");
  26.     }
  27.   }
  28. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Спасибо. Теперь все ясно.

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

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Ясно, но не совсем. Моя плагин подчеркивает некоторые фрагменты текста (для выделения).
Перед выходом из AutoCad мне нужно удалить эти подчеркивания, причем сделать это до того, как программа спросит: Сохранить чертеж?  в событие Использовать события Application.BeginQuit и Document.BeginDocumentClose я не могу, т.к. они наступают после того, как появляется вопрос.
Какое событие мне нужно использовать?

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

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

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

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Хочу отследить события Document.CloseWillStart и Document.CommandEnded
Какие параметры должны быть у методов этих событий, и где это можно посмотреть?

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

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Разобрался. Извини за глупый вопрос.

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

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Как отловить событие DocumentCollection.DocumentLockModeChanged с глобальным именем команды QUIT.
Событие DocumentCollection.DocumentLockModeChanged я отлавливаю, но не понимаю, как отловить его с глобальным именем команды QUIT.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Борис_С,
В DocumentLockModeChangedEventArgs есть свойство GlobalCommandName
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Спасибо. Теперь все ясно.