在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
' 启动ArcCatalog
Set pCommand = Application.Document.CommandBars.Find(ArcID.Tools_Catalog)
pCommand.Execute
' 将ArcCatalog应用程序添加入AppRPT
Do Until pAppROTCount = (pAppROTCountInt + 1)
pAppROTCount = pAppROT.Count
Loop
' 获取正在运行的ArcCatalog程序
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都有一个唯一的标识码,开发者也可以直接通过标识码来进行获取。