在ArcMap的快捷工具栏中,可以利用快捷按钮直接启动ArcCatalog,下面的代码将实现这一操作。
Sub ShowArcCatalog() Dim pAppROT As AppROT Dim pAppROTCountInt As Integer Dim pAppROTCount As Integer Dim pCommand As ICommandItem Dim pAppWin As IWindowPosition Dim i As Integer Set pAppROT = New AppROT pAppROTCountInt = pAppROT.Count
Set pCommand = mandBars.Find(ArcID.Tools_Catalog) pCommand.Execute
Do Until pAppROTCount = (pAppROTCountInt + 1) pAppROTCount = pAppROT.Count Loop
If TypeOf pAppROT.Item(pAppROTCount - 1) Is IGxApplication Then Set pAppWin = pAppROT.Item(pAppROTCount - 1) pAppWin.Move 10, 10, 600, 500 End If End Sub
这段程序实现的关键在于对AppROT类和接口的理解,AppROT的全称是application running object table,用来记录当前正在运行的ArcGIS应用程序,但它只记录由IApplication实现的对象。当ArcGIS的应用程序运行的时候会自动向AppROT 注册,当关闭的时候也会自动清除。所以可以通过AppROT获取正在运行的所有ArcGIS应用程序,同时ArcObjects开发者也可以将自己利用IApplication产生的对象向AppRPT注册。
AppROT主要实现IAppROT接口,利用这个接口提供的Add和Remove方法实现向AppROT添加和移出对象,利用Count方法可以获取当前运行的ArcGIS应用程序总数。而Item方法则提供了当前运行的ArcGIS应用程序索引,利用Item方法开发者可以方面的获取任何一个正在运行的程序。
ArcID.Tools_Catalog主要是获取ArcCatalog对象,ArcID提供ArcGIS内置的菜单、工具栏等,比如如果想获取添加数据按钮,则使用ArcID.File_AddData,每一个ArcID都有一个唯一的标识码,开发者也可以直接通过标识码来进行获取。