天天看点

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都有一个唯一的标识码,开发者也可以直接通过标识码来进行获取。

继续阅读