AutoCAD.Net/C#.Net QQ群:193522571 利用监听系统变量来捕捉acadapp级别的事件

Application object events are used to respond to the application window. Once an Application event is registered, it remains registered until AutoCAD is shutdown or the event is unregistered.

The following events are available for the Application object:

BeginCustomizationMode

Triggered just before AutoCAD enters customization mode.

BeginDoubleClick

Triggered when the mouse button is double clicked.

BeginQuit

Triggered just before an AutoCAD session ends.

DisplayingCustomizeDialog

Triggered just before the Customize dialog box is displayed.

DisplayingDraftingSettingsDialog

Triggered just before the Drafting Settings dialog box is displayed.

DisplayingOptionDialog

Triggered just before the Options dialog box is displayed.

EndCustomizationMode

Triggered when AutoCAD exits customization mode.

EnterModal

Triggered just before a modal dialog box is displayed.

Idle

Triggered when AutoCAD text.

LeaveModal

Triggered when a modal dialog box is closed.

PreTranslateMessage

Triggered just before a message is translated by AutoCAD.

QuitAborted

Triggered when an attempt to shutdown AutoCAD is aborted.

QuitWillStart

Triggered after the BeginQuit event and before shutdown begins.

SystemVariableChanged

Triggered when an attempt to change a system variable is made.

SystemVariableChanging

Triggered just before an attempt is made at changing a system variable.

Enable an Application object event

This example demonstrates how to register an event handler with the BeginQuit event. Once registered, a message box is displayed before AutoCAD completely shutdown.

VB.NET

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
 
<CommandMethod("AddAppEvent")> _
Public Sub AddAppEvent()
  AddHandler Application.SystemVariableChanged, AddressOf appSysVarChanged
End Sub
 
<CommandMethod("RemoveAppEvent")> _
Public Sub RemoveAppEvent()
  RemoveHandler Application.SystemVariableChanged, AddressOf appSysVarChanged
End Sub
 
Public Sub appSysVarChanged(ByVal senderObj As Object, _
                            ByVal sysVarChEvtArgs As Autodesk.AutoCAD.ApplicationServices. _
                            SystemVariableChangedEventArgs)
 
  Dim oVal As Object = Application.GetSystemVariable(sysVarChEvtArgs.Name)
 
  '' Display a message box with the system variable name and the new value
  Application.ShowAlertDialog(sysVarChEvtArgs.Name & " was changed." & _
                              vbLf & "New value: " & oVal.ToString())
End Sub

C#

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
[CommandMethod("AddAppEvent")]
public void AddAppEvent()
{
  Application.SystemVariableChanged +=
      new Autodesk.AutoCAD.ApplicationServices.
          SystemVariableChangedEventHandler(appSysVarChanged);
}
 
[CommandMethod("RemoveAppEvent")]
public void RemoveAppEvent()
{
  Application.SystemVariableChanged -=
      new Autodesk.AutoCAD.ApplicationServices.
          SystemVariableChangedEventHandler(appSysVarChanged);
}
 
public void appSysVarChanged(object senderObj, 
                             Autodesk.AutoCAD.ApplicationServices.
                             SystemVariableChangedEventArgs sysVarChEvtArgs)
{
  object oVal = Application.GetSystemVariable(sysVarChEvtArgs.Name);
 
  // Display a message box with the system variable name and the new value
  Application.ShowAlertDialog(sysVarChEvtArgs.Name + " was changed." +
                              "
New value: " + oVal.ToString());
}

VBA/ActiveX Code Reference

Public WithEvents ACADApp As AcadApplication
 
Sub Example_AcadApplication_Events()
    ' Intialize the public variable (ACADApp)
    '
    ' Run this procedure first
 
    Set ACADApp = ThisDrawing.Application
End Sub
 
Private Sub ACADApp_SysVarChanged(ByVal SysvarName As String, _
                                  ByVal newVal As Variant)
    ' This procedure intercepts an Application SysVarChanged event.
 
    MsgBox (SysvarName & " was changed." & _
            vbLf & "New value: " & newVal)
End Sub
原文地址:https://www.cnblogs.com/swtool/p/11821015.html