お知らせ
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.
Autodesk Community Tips- ADNオープン
Autodesk Community Tipsではちょっとしたコツ、やり方、ショートカット、アドバイスやヒントを共有しています。

AutoCAD .NET API:AutoCAD ウィンドウのフォーカスイベント

Issue

AutoCAD .NET API でアプリケーションのフォーカス イベントを処理することは出来ますか?

 

Solution

AutoCAD の Application ウィンドウ レベルでは、COM API の Application.AppActivate イベントと Application.AppDeactivate イベントを COM Interop でお使いいただくことが出来ます。
ご参考:COM ベースのイベントを登録する(.NET)

 

Autodesk.AutoCAD.Interop.AcadApplication? acAppCom = null;

[CommandMethod("AddCOMEvent")]
public void AddCOMEvent()
{
    acAppCom = (Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;
    acAppCom.AppActivate += new _DAcadApplicationEvents_AppActivateEventHandler(appComAppActivate);
    acAppCom.AppDeactivate += new _DAcadApplicationEvents_AppDeactivateEventHandler(appComAppDeactivate);
}

[CommandMethod("RemoveCOMEvent")]
public void RemoveCOMEvent()
{
    if (acAppCom != null)
    {
acAppCom.AppActivate -= new _DAcadApplicationEvents_AppActivateEventHandler(appComAppActivate);
acAppCom.AppDeactivate -= new _DAcadApplicationEvents_AppDeactivateEventHandler(appComAppDeactivate);
acAppCom = null;
    }
}

public void appComAppActivate()
{
    Autodesk.AutoCAD.ApplicationServices.Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
    Editor ed = doc.Editor;
    ed.WriteMessage("\n*** AppActivate ***\n");
}

public void appComAppDeactivate()
{
    Autodesk.AutoCAD.ApplicationServices.Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
    Editor ed = doc.Editor;
    ed.WriteMessage("\n*** AppDeactivate ***\n");
}

 

focus_events.gif