在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都有一個唯一的辨別碼,開發者也可以直接通過辨別碼來進行擷取。