天天看點

ArcGIS二次開發之一:在ArcMap中啟動ArcCatalog的代碼實作

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

繼續閱讀