Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Борис_С от 21-12-2020, 16:13:02

Название: Как отследить событие Закрытие приложения
Отправлено: Борис_С от 21-12-2020, 16:13:02
Добрый день!
Мне нужно отследить событие Закрытие приложения.
В справке нашел пример 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, и как на самом деле его нужно зарегистрировать?
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Александр Ривилис от 21-12-2020, 16:16:13
Мне нужно отследить событие Закрытие приложения.
Закрытие какого приложения?
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Борис_С от 21-12-2020, 16:58:02
Закрытие автокада.
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Александр Ривилис от 21-12-2020, 17:17:57
Закрытие автокада.
Код - 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. }
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Борис_С от 21-12-2020, 18:54:03
Спасибо. Теперь все ясно.
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Борис_С от 22-12-2020, 17:10:00
Ясно, но не совсем. Моя плагин подчеркивает некоторые фрагменты текста (для выделения).
Перед выходом из AutoCad мне нужно удалить эти подчеркивания, причем сделать это до того, как программа спросит: Сохранить чертеж?  в событие Использовать события Application.BeginQuit и Document.BeginDocumentClose я не могу, т.к. они наступают после того, как появляется вопрос.
Какое событие мне нужно использовать?
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Александр Ривилис от 22-12-2020, 17:16:54
https://adn-cis.org/forum/index.php?topic=8584
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Борис_С от 25-12-2020, 17:46:04
Хочу отследить события Document.CloseWillStart и Document.CommandEnded
Какие параметры должны быть у методов этих событий, и где это можно посмотреть?
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Борис_С от 25-12-2020, 18:15:07
Разобрался. Извини за глупый вопрос.
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Борис_С от 25-12-2020, 19:05:35
Как отловить событие DocumentCollection.DocumentLockModeChanged с глобальным именем команды QUIT.
Событие DocumentCollection.DocumentLockModeChanged я отлавливаю, но не понимаю, как отловить его с глобальным именем команды QUIT.
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Александр Ривилис от 25-12-2020, 19:28:33
Борис_С,
В DocumentLockModeChangedEventArgs есть свойство GlobalCommandName
Название: Re: Как отследить событие Закрытие приложения
Отправлено: Борис_С от 25-12-2020, 20:03:14
Спасибо. Теперь все ясно.