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");
}
