Application イベントを処理する(.NET)

Application オブジェクト イベントは、アプリケーション ウィンドウへの応答に使用されます。Application イベントを登録すると、AutoCAD をシャットダウンするか、イベントの登録を解除するまで登録されたままになります。

Application オブジェクトでは次のイベントを使用できます。

BeginCustomizationMode

AutoCAD がカスタマイズ モードに移行する直前に発生。

BeginDoubleClick

マウス ボタンをダブルクリックしたときに発生。

BeginQuit

AutoCAD セッションが終了する直前に発生。

DisplayingCustomizeDialog

[カスタマイズ]ダイアログ ボックスが表示される直前に発生。

DisplayingDraftingSettingsDialog

[作図補助設定]ダイアログ ボックスが表示される直前に発生。

DisplayingOptionDialog

[オプション]ダイアログ ボックスが表示される直前に発生。

EndCustomizationMode

AutoCAD がカスタマイズ モードを終了するときに発生。

EnterModal

モーダルなダイアログ ボックスが表示される直前に発生。

Idle

AutoCAD テキストのときに発生。

LeaveModal

モーダルなダイアログ ボックスを閉じたときに発生。

PreTranslateMessage

メッセージが AutoCAD によって変換される直前に発生。

QuitAborted

AutoCAD のシャットダウンを中断したときに発生。

QuitWillStart

BeginQuit イベントの後で、シャットダウンが始まる前に発生。

SystemVariableChanged

システム変数の変更が試行されたときに発生。

SystemVariableChanging

システム変数の変更が試行される直前に発生。

Application オブジェクト イベントを有効にする

この例では、BeginQuit イベントでイベント ハンドラを登録する方法を示します。登録が完了すると、AutoCAD が完全にシャットダウンする前にメッセージ ボックスが表示されます。

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." +
                              "\nNew value: " + oVal.ToString());
}

VBA/ActiveX コード リファレンス

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